另外還對(duì)網(wǎng)絡(luò)的其他部分進(jìn)行了調(diào)整[18]
? YOLOv5
和 YOLOv3 的區(qū)別在于?YOLOv3 的 Neck 結(jié)構(gòu)只使
用了 FPN(自頂向下)結(jié)構(gòu)?將高層語(yǔ)義信息傳遞下
來(lái)?使得所有尺度下的特征都有豐富的語(yǔ)義信息?
相比之下?YOLOv5 的 Neck 結(jié)構(gòu)增加了 PAN(自底
向上)結(jié)構(gòu)?解決了 FPN 結(jié)構(gòu)缺少定位信息的問(wèn)題?
其采用自底向上的方式又將定位信息傳回去?
2.2.4 Prediction:GIOU_Loss
YOLOv5 中的 Bounding Box 的損失函數(shù)采用的
是 GIOU_Loss(generalized intersection over union)?計(jì)
算公式為式(2)? GIOU 是一種從 IOU( intersection
over union)衍生出來(lái)的用于邊緣預(yù)測(cè)的損失計(jì)算方
法? 在目標(biāo)檢測(cè)等領(lǐng)域?有必要將預(yù)測(cè)的邊框( pre
BBox)與實(shí)際標(biāo)注的邊框( ground truth BBox) 進(jìn)行
比較來(lái)計(jì)算損失? 其中 IOU 為評(píng)價(jià)預(yù)測(cè)框與真實(shí)
框的面積交并比?計(jì)算公式為式(1)? A 是實(shí)際標(biāo)注
邊框 ( ground truth BBox )? B 是 預(yù) 測(cè) 邊 框 ( pre
BBox)?C 是這 2 個(gè)區(qū)域的閉包(在 GIOU_Loss 中?閉
包取的是包圍這 2 個(gè)矩形區(qū)域的平行于坐標(biāo)軸的最
小矩形)? 根據(jù) GIOU 的值域?yàn)閇 -1?1]?我們通過(guò)
式(3)、式(4)可以推出 IOU =
| A∩B |
| A∪B |
?因?yàn)閾p失函
數(shù)的值被限制在了一個(gè)很小的范圍?所以網(wǎng)絡(luò)不會(huì)
劇烈波動(dòng)?證明了 GIOU 的穩(wěn)定性?可以看出?計(jì)算
GIOU 損失的方法實(shí)際上是在計(jì)算 GIOU?但最終結(jié)
果是 1-GIOU?這是因?yàn)?1-GIOU 的值在[0?2]的范
圍內(nèi)?具有一定的“距離”特性?即 2 個(gè)邊框的重疊
區(qū)域越大?損失越小?反之?損失越大?
IOU=
| A∩B |
| A∪B |
(1)
GIOU(A?B)= IOU(A?B)-
| C | - | A∪B |
| C |
(2)
LossGIOU
= 1-GIOU(A?B)
LossGIOU
= 1-(IOU(A?B)-1+
| A∪B |
| C |
)
ì
?
í
?
?
??
(3)
LossGIOU
= 2-IOU(A?B)-
| A∪B |
| C |
(4)
3 試驗(yàn)結(jié)果與分析
3.1 試驗(yàn)環(huán)境與參數(shù)設(shè)置
本試驗(yàn)研究采取 Pytorch 深度學(xué)習(xí)開(kāi)源框架?使
用圖像處理器加速訓(xùn)練過(guò)程? 硬件配置為:GPU 為
Nvidia GeForce RTX 3060 ( 12 GB 顯 存)? CPU 為
AMD Ryzen 5 3500X 6-Core Processor 3.60 GHz?內(nèi)
存 16 GB? 運(yùn)行環(huán)境為:Windows10 × 64 位操作系
統(tǒng)?CUDA 庫(kù)版本為 11. 1?Python 版本 3. 6?Pytorch
版本為 1.9.0?
搭 建 好 Faster R - CNN、 YOLOv3、 SSD 和
YOLOv5 共 4 種目標(biāo)檢測(cè)模型后?由于缺陷數(shù)據(jù)集
較少?使用遷移學(xué)習(xí)的方法進(jìn)行訓(xùn)練? 網(wǎng)絡(luò)權(quán)重通
過(guò) YOLOv5 模型在 MicroSoft CoCo 數(shù)據(jù)集訓(xùn)練得到?
該數(shù)據(jù)集是一個(gè)大型、豐富的物體檢測(cè)數(shù)據(jù)集[16]
?
訓(xùn)練得到的網(wǎng)絡(luò)參數(shù)可以作為檢測(cè)模型的預(yù)訓(xùn)練權(quán)
重?這種訓(xùn)練方法常用且高效?使用該預(yù)訓(xùn)練權(quán)重能
節(jié)省缺陷數(shù)據(jù)集訓(xùn)練時(shí)間?網(wǎng)絡(luò)訓(xùn)練過(guò)程收斂更快、
檢測(cè)效果更好?
對(duì)拉絲、縱向缺陷 2 種實(shí)驗(yàn)樣本圖像分別標(biāo)注
好后生成對(duì)應(yīng) XML 文件?然后放入待訓(xùn)練文件夾
中?將搭建好的幾種深度學(xué)習(xí)模型設(shè)置好訓(xùn)練參數(shù)?
總訓(xùn)練輪數(shù) epoch = 100?初始學(xué)習(xí)率為 0.001?
3.2 YOLOv5 檢測(cè)結(jié)果
在測(cè)試集使用 YOLOv5 模型進(jìn)行目標(biāo)檢測(cè)?檢
測(cè)過(guò)程當(dāng)中 IOU 閾值設(shè)置為 0.5?當(dāng) IOU>0.5 時(shí)?認(rèn)
為是真實(shí)的檢測(cè)( true detection)?否則認(rèn)為是錯(cuò)誤
的檢測(cè)(false detection)?即預(yù)測(cè)框占真實(shí)框 50%以
上才被認(rèn)為是真實(shí)的檢測(cè)?如果 IOU 閾值設(shè)置較
低?樣本的質(zhì)量就難以保證?為了獲得高質(zhì)量的正樣
本?可以調(diào)高 IOU 閾值?但樣本數(shù)量就會(huì)降低導(dǎo)致
正負(fù)樣本出現(xiàn)比例不平衡?且較高的 IOU 閾值很容
易丟失小尺度目標(biāo)框?因此 IOU 閾值一般設(shè)置為0.5
預(yù)測(cè)的精度率會(huì)更準(zhǔn)確? 在對(duì)應(yīng)置信度下得到 TP
(true positive)、 FP ( false positive)、 FN ( false nega ̄
tive)值?根據(jù)公式分別計(jì)算出 2 類(lèi)缺陷在不同置信
度值下所得到的精確度和召回率?由精確度和召回
率圍成 的 P - R 曲 線 如 圖 11 所 示? 由 圖 可 知?
YOLOv5 模型拉絲缺陷(lasi)的檢測(cè)精度為90.70%?
縱向缺陷(crevice)的檢測(cè)精度為 98.85%?最后求得
拉絲缺陷、縱向缺陷 2 類(lèi)別檢測(cè)精度均值( mAP?
mean average precision)為 94.78%?在這里拉絲缺陷
(lasi)和縱向缺陷( crevice) 精度有差異?很大程度
上是因?yàn)樵跀?shù)據(jù)集中縱向缺陷的數(shù)據(jù)比拉絲缺陷
多?另外拉絲缺陷一般都是眾多缺陷聚集在一起并
且目標(biāo)較小?使用 YOLOv5 模型識(shí)別時(shí)會(huì)有誤差因
此拉絲缺陷的精度會(huì)比較低?
?200? 南昌大學(xué)學(xué)報(bào)(工科版) 2023 年