MSTAR(Moving and Stationary Target Acquisition and Recognition)數(shù)據(jù)集是一個(gè)基于合成孔徑雷達(dá)(Synthetic Aperture Radar,SAR)圖像的目標(biāo)檢測(cè)和識(shí)別數(shù)據(jù)集。它是針對(duì)目標(biāo)檢測(cè)、機(jī)器學(xué)習(xí)和模式識(shí)別算法的研究和評(píng)估而設(shè)計(jì)的。
MSTAR數(shù)據(jù)集由美國(guó)海軍研究實(shí)驗(yàn)室(Naval Research Laboratory,NRL)創(chuàng)建,該數(shù)據(jù)集包含了多種類型和方位的車輛和目標(biāo)的高分辨率合成孔徑雷達(dá)圖像。它提供了復(fù)雜的場(chǎng)景和多種目標(biāo)類型,包括各種車輛和地面目標(biāo),如坦克、卡車、自行車等。
MSTAR數(shù)據(jù)集的特點(diǎn)如下:
-
分辨率高:MSTAR數(shù)據(jù)集的SAR圖像具有高分辨率,能夠提供細(xì)節(jié)豐富的目標(biāo)信息,有助于進(jìn)行精確的目標(biāo)檢測(cè)和識(shí)別。
-
方位變化:該數(shù)據(jù)集提供了目標(biāo)在不同方位角下的合成孔徑雷達(dá)圖像,包括前視、靠近側(cè)視、背視等多種視角,用于研究方位變化對(duì)目標(biāo)識(shí)別的影響。
-
多樣性目標(biāo):MSTAR數(shù)據(jù)集中包含了多種類型的目標(biāo),涵蓋了各種車輛和地面目標(biāo),使得研究和評(píng)估的算法可以具有更好的泛化性能。
MSTAR數(shù)據(jù)集對(duì)于合成孔徑雷達(dá)圖像的目標(biāo)檢測(cè)和識(shí)別算法的研究和評(píng)估提供了有力的工具。它可以用于訓(xùn)練和測(cè)試基于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的目標(biāo)檢測(cè)模型,提高合成孔徑雷達(dá)圖像分析的準(zhǔn)確性和魯棒性。
在前面的博文中我已經(jīng)基于MSTAR的數(shù)據(jù)集開(kāi)發(fā)構(gòu)建了目標(biāo)檢測(cè)系統(tǒng),感興趣的話可以自行移步閱讀即可:
《基于yolov5n的輕量級(jí)MSTAR遙感影像目標(biāo)檢測(cè)系統(tǒng)設(shè)計(jì)開(kāi)發(fā)實(shí)戰(zhàn)》
之前是使用的yolov5模型去開(kāi)發(fā)實(shí)現(xiàn)的,且使用的是最為輕量級(jí)的模型,這里考慮基于yolov7來(lái)開(kāi)發(fā)構(gòu)建MSTAR雷達(dá)影像目標(biāo)檢測(cè)識(shí)別系統(tǒng),簡(jiǎn)單看下實(shí)例效果圖:
?接下來(lái)看下數(shù)據(jù)集情況:
?共有2.4w+的數(shù)據(jù)。
本文使用到的YOLOv7模型配置文件如下所示:
# parameters
nc: 10 # number of classes
depth_multiple: 1.0 # model depth multiple
width_multiple: 1.0 # layer channel multiple
# anchors
anchors:
- [12,16, 19,36, 40,28] # P3/8
- [36,75, 76,55, 72,146] # P4/16
- [142,110, 192,243, 459,401] # P5/32
# yolov7 backbone
backbone:
# [from, number, module, args]
[[-1, 1, Conv, [32, 3, 1]], # 0
[-1, 1, Conv, [64, 3, 2]], # 1-P1/2
[-1, 1, Conv, [64, 3, 1]],
[-1, 1, Conv, [128, 3, 2]], # 3-P2/4
[-1, 1, Conv, [64, 1, 1]],
[-2, 1, Conv, [64, 1, 1]],
[-1, 1, Conv, [64, 3, 1]],
[-1, 1, Conv, [64, 3, 1]],
[-1, 1, Conv, [64, 3, 1]],
[-1, 1, Conv, [64, 3, 1]],
[[-1, -3, -5, -6], 1, Concat, [1]],
[-1, 1, Conv, [256, 1, 1]], # 11
[-1, 1, MP, []],
[-1, 1, Conv, [128, 1, 1]],
[-3, 1, Conv, [128, 1, 1]],
[-1, 1, Conv, [128, 3, 2]],
[[-1, -3], 1, Concat, [1]], # 16-P3/8
[-1, 1, Conv, [128, 1, 1]],
[-2, 1, Conv, [128, 1, 1]],
[-1, 1, Conv, [128, 3, 1]],
[-1, 1, Conv, [128, 3, 1]],
[-1, 1, Conv, [128, 3, 1]],
[-1, 1, Conv, [128, 3, 1]],
[[-1, -3, -5, -6], 1, Concat, [1]],
[-1, 1, Conv, [512, 1, 1]], # 24
[-1, 1, MP, []],
[-1, 1, Conv, [256, 1, 1]],
[-3, 1, Conv, [256, 1, 1]],
[-1, 1, Conv, [256, 3, 2]],
[[-1, -3], 1, Concat, [1]], # 29-P4/16
[-1, 1, Conv, [256, 1, 1]],
[-2, 1, Conv, [256, 1, 1]],
[-1, 1, Conv, [256, 3, 1]],
[-1, 1, Conv, [256, 3, 1]],
[-1, 1, Conv, [256, 3, 1]],
[-1, 1, Conv, [256, 3, 1]],
[[-1, -3, -5, -6], 1, Concat, [1]],
[-1, 1, Conv, [1024, 1, 1]], # 37
[-1, 1, MP, []],
[-1, 1, Conv, [512, 1, 1]],
[-3, 1, Conv, [512, 1, 1]],
[-1, 1, Conv, [512, 3, 2]],
[[-1, -3], 1, Concat, [1]], # 42-P5/32
[-1, 1, Conv, [256, 1, 1]],
[-2, 1, Conv, [256, 1, 1]],
[-1, 1, Conv, [256, 3, 1]],
[-1, 1, Conv, [256, 3, 1]],
[-1, 1, Conv, [256, 3, 1]],
[-1, 1, Conv, [256, 3, 1]],
[[-1, -3, -5, -6], 1, Concat, [1]],
[-1, 1, Conv, [1024, 1, 1]], # 50
]
# yolov7 head
head:
[[-1, 1, SPPCSPC, [512]], # 51
[-1, 1, Conv, [256, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[37, 1, Conv, [256, 1, 1]], # route backbone P4
[[-1, -2], 1, Concat, [1]],
[-1, 1, Conv, [256, 1, 1]],
[-2, 1, Conv, [256, 1, 1]],
[-1, 1, Conv, [128, 3, 1]],
[-1, 1, Conv, [128, 3, 1]],
[-1, 1, Conv, [128, 3, 1]],
[-1, 1, Conv, [128, 3, 1]],
[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
[-1, 1, Conv, [256, 1, 1]], # 63
[-1, 1, Conv, [128, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[24, 1, Conv, [128, 1, 1]], # route backbone P3
[[-1, -2], 1, Concat, [1]],
[-1, 1, Conv, [128, 1, 1]],
[-2, 1, Conv, [128, 1, 1]],
[-1, 1, Conv, [64, 3, 1]],
[-1, 1, Conv, [64, 3, 1]],
[-1, 1, Conv, [64, 3, 1]],
[-1, 1, Conv, [64, 3, 1]],
[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
[-1, 1, Conv, [128, 1, 1]], # 75
[-1, 1, MP, []],
[-1, 1, Conv, [128, 1, 1]],
[-3, 1, Conv, [128, 1, 1]],
[-1, 1, Conv, [128, 3, 2]],
[[-1, -3, 63], 1, Concat, [1]],
[-1, 1, Conv, [256, 1, 1]],
[-2, 1, Conv, [256, 1, 1]],
[-1, 1, Conv, [128, 3, 1]],
[-1, 1, Conv, [128, 3, 1]],
[-1, 1, Conv, [128, 3, 1]],
[-1, 1, Conv, [128, 3, 1]],
[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
[-1, 1, Conv, [256, 1, 1]], # 88
[-1, 1, MP, []],
[-1, 1, Conv, [256, 1, 1]],
[-3, 1, Conv, [256, 1, 1]],
[-1, 1, Conv, [256, 3, 2]],
[[-1, -3, 51], 1, Concat, [1]],
[-1, 1, Conv, [512, 1, 1]],
[-2, 1, Conv, [512, 1, 1]],
[-1, 1, Conv, [256, 3, 1]],
[-1, 1, Conv, [256, 3, 1]],
[-1, 1, Conv, [256, 3, 1]],
[-1, 1, Conv, [256, 3, 1]],
[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
[-1, 1, Conv, [512, 1, 1]], # 101
[75, 1, RepConv, [256, 3, 1]],
[88, 1, RepConv, [512, 3, 1]],
[101, 1, RepConv, [1024, 3, 1]],
[[102,103,104], 1, IDetect, [nc, anchors]], # Detect(P3, P4, P5)
]
訓(xùn)練數(shù)據(jù)配置文件如下所示:
# path
train: ./dataset/images/train
val: ./dataset/images/test
test: ./dataset/images/test
# number of classes
nc: 10
# class names
names: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
終端執(zhí)行下面的命令即可啟動(dòng)訓(xùn)練:
python train.py --cfg cfg/training/yolov7.yaml --weights weights/yolov7_training.pt --name yolov7 --epochs 100 --batch-size 32 --img 640 640 --device 0 --data data/self.yaml
默認(rèn)100次epoch的迭代計(jì)算,終端日志輸出如下所示:
?訓(xùn)練完成后來(lái)看下結(jié)果詳情:
【精確率曲線】
精確率曲線(Precision-Recall Curve)是一種用于評(píng)估二分類模型在不同閾值下的精確率性能的可視化工具。它通過(guò)繪制不同閾值下的精確率和召回率之間的關(guān)系圖來(lái)幫助我們了解模型在不同閾值下的表現(xiàn)。
精確率(Precision)是指被正確預(yù)測(cè)為正例的樣本數(shù)占所有預(yù)測(cè)為正例的樣本數(shù)的比例。召回率(Recall)是指被正確預(yù)測(cè)為正例的樣本數(shù)占所有實(shí)際為正例的樣本數(shù)的比例。
?【召回率曲線】
召回率曲線(Recall Curve)是一種用于評(píng)估二分類模型在不同閾值下的召回率性能的可視化工具。它通過(guò)繪制不同閾值下的召回率和對(duì)應(yīng)的精確率之間的關(guān)系圖來(lái)幫助我們了解模型在不同閾值下的表現(xiàn)。
召回率(Recall)是指被正確預(yù)測(cè)為正例的樣本數(shù)占所有實(shí)際為正例的樣本數(shù)的比例。召回率也被稱為靈敏度(Sensitivity)或真正例率(True Positive Rate)。
?【PR曲線】
精確率-召回率曲線(Precision-Recall Curve)是一種用于評(píng)估二分類模型性能的可視化工具。它通過(guò)繪制不同閾值下的精確率(Precision)和召回率(Recall)之間的關(guān)系圖來(lái)幫助我們了解模型在不同閾值下的表現(xiàn)。
精確率是指被正確預(yù)測(cè)為正例的樣本數(shù)占所有預(yù)測(cè)為正例的樣本數(shù)的比例。召回率是指被正確預(yù)測(cè)為正例的樣本數(shù)占所有實(shí)際為正例的樣本數(shù)的比例。
【F1值曲線】
F1值曲線是一種用于評(píng)估二分類模型在不同閾值下的性能的可視化工具。它通過(guò)繪制不同閾值下的精確率(Precision)、召回率(Recall)和F1分?jǐn)?shù)的關(guān)系圖來(lái)幫助我們理解模型的整體性能。
F1分?jǐn)?shù)是精確率和召回率的調(diào)和平均值,它綜合考慮了兩者的性能指標(biāo)。F1值曲線可以幫助我們確定在不同精確率和召回率之間找到一個(gè)平衡點(diǎn),以選擇最佳的閾值。
?【混淆矩陣】
?【訓(xùn)練過(guò)程可視化】
?可以看到整體的訓(xùn)練過(guò)程還是相對(duì)平穩(wěn)的。
【batch計(jì)算實(shí)例】如下所示:
?可視化推理實(shí)例這塊,主要開(kāi)發(fā)實(shí)現(xiàn)了:圖像檢測(cè)和視頻檢測(cè)兩種類型數(shù)據(jù)的推理計(jì)算,如下圖所示:
【圖像檢測(cè)】
?【視頻檢測(cè)】
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-633220.html
?整體檢測(cè)的效果很不錯(cuò),后面有時(shí)間考慮基于其他類型的檢測(cè)模型開(kāi)發(fā)嘗試一下!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-633220.html
到了這里,關(guān)于基于YOLOv7開(kāi)發(fā)構(gòu)建MSTAR雷達(dá)影像目標(biāo)檢測(cè)系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!