YOLO的每個版本都是基于前一版本進(jìn)行更新,故需要先理解初始版本。
前言:評價指標(biāo)
(1)指標(biāo):IOU
(2)指標(biāo):Precision(精度)、Recall(召回率)
(3)指標(biāo):AP + mAP
mAP是綜合衡量Precision與Recall的一種指標(biāo)值,理論上mAP的最優(yōu)值=1。
舉例理解:在所有預(yù)測圖片中,取某一個類別的P-R曲線圖
P-R曲線圖
:以Recall為橫軸,Precision為縱軸,并將Precision[0, 1]
范圍內(nèi)的每個點(diǎn)對應(yīng)recall的值連接起來形成一條折線。如左圖的藍(lán)色曲線
曲線特點(diǎn):隨著recall值增加,precision值會逐漸降低,最終在某個值附近上下波動。AP(Average Precison)
:
(1)以y = precision為平行線,從上向下,取P-R曲線圖在每個y值對應(yīng)的最大值,然后連接形成階梯狀曲線。如左圖的紅色曲線
(2)階梯曲線與 x 軸圍成的面積之和就是AP值(A1+A2+A3+A4=AP
),如右圖的四個長方形。其中:1/2/3/4表示在四個不同的準(zhǔn)確度下。mAP(mean Average Precision)
: 對所有類別對應(yīng)的AP值進(jìn)行求和取均值,就得到整個數(shù)據(jù)集上的mAP。
一、開山之作:yolov1
論文地址:You Only Look Once: Unified, Real-Time Object Detection
官方代碼:https://github.com/pjreddie/darknet
(1.1)簡介
yolov之前,雙階段(two-stage)的R-CNN系列算法在目標(biāo)檢測領(lǐng)域獨(dú)占鰲頭。先利用RPN(Region Proposal CNN)基于候選框提取的CNN網(wǎng)絡(luò)生成感興趣區(qū)域,再對該區(qū)域進(jìn)行分類與位置回歸。
- 優(yōu)缺點(diǎn):提升了精度,但限制了檢測速度。
2016年,單階段(one-stage)的YOLO(You Only Look Once) 初出茅廬。利用CNN卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取,并識別種類和位置。
- 優(yōu)缺點(diǎn):檢測速度很快,但精度明顯下降。
備注:FPS是指視頻每秒傳輸?shù)膸瑪?shù)。例如:FPS=45 表示為45幀/秒。幀數(shù)愈多,所顯示的動作就會越流暢。
?? yolo核心思想:把目標(biāo)檢測轉(zhuǎn)變成一個回歸問題。將整個圖像作為網(wǎng)絡(luò)的輸入,僅僅經(jīng)過一個神經(jīng)網(wǎng)絡(luò),得到邊界框的位置及其所屬的類別。
(1.2)網(wǎng)絡(luò)模型
輸入圖像尺寸:
448×448
(固定值,與全連接層的輸出大小有關(guān)),經(jīng)過24個卷積與2個全連接層后,最后輸出的特征圖為7x7x30
。
- 在
3x3
的卷積后接1x1
卷積,既降低了計(jì)算量,也提升了模型的非線性能力。- 除最后一層使用線性激活函數(shù)外,其余層都使用
Leaky ReLU
激活函數(shù)。- 在訓(xùn)練中使用
Dropout
與數(shù)據(jù)增強(qiáng)
的方法來防止過擬合。訓(xùn)練時的圖像尺寸:224×224;測試時的圖像尺寸:448×448。 原因:224×224×3 相比448×448×3相差四倍,其像素點(diǎn)大幅度降低,減少對計(jì)算機(jī)的性能要求。
1.2.1、最大創(chuàng)新:7x7x30特征圖
在整張圖中,共預(yù)測7x7x2=98
個邊框,每個邊框的大小與位置都不相同。
分類類別
:由于PASCAL VOC數(shù)據(jù)集共有20個物體類別,因此預(yù)測的每個邊框都會分別得到20
個類別的概率值。置信度(confidence)
:表示當(dāng)前網(wǎng)格是否包含目標(biāo)物體(前景、背景),占比越多值越大。兩個邊框得到2(1 + 1)
個置信度預(yù)測值。邊框位置(x, y, w, h)
:每個邊框需要預(yù)測四個值:中心坐標(biāo)(x,y)、寬w、高h(yuǎn)。兩個邊框得到8(4 + 4)
個預(yù)測值。
將輸入圖像劃分為7x7的網(wǎng)格,每個網(wǎng)格預(yù)測2個邊框(bounding box),每個邊框得到五個值(x,y,w,h,confidence)。論文采用20分類,故最后得到通道數(shù)為2*5+20=30,代表每個網(wǎng)格預(yù)測30個特征值。
1.2.2、連續(xù)使用兩個全連接層的作用
第一個全連接層作用:將卷積得到的分布式特征映射到樣本標(biāo)記空間。即把該輸入圖像的所有卷積特征整合到一起。
第二個全連接層作用:將所有神經(jīng)元得到的卷積特征進(jìn)行維度轉(zhuǎn)換,最后得到與目標(biāo)檢測網(wǎng)絡(luò)輸出維度相同的維度。
【小問題思考】兩個全連接層連用 1x1卷積作用
(1.3)損失函數(shù)(位置誤差 + 置信度誤差obj + 置信度誤差noobj + 分類誤差)
通過卷積神經(jīng)網(wǎng)絡(luò)得到每個邊框的預(yù)測值后,需要確定每個邊框?qū)?yīng)的是前景框(真實(shí)物體)還是背景框(無關(guān)物體),即區(qū)分正樣本、負(fù)樣本。
- 正樣本:將與真實(shí)物體對應(yīng)IoU最大值的邊框設(shè)為正樣本,每個邊框的置信度都為1。
- 負(fù)樣本:其余邊框?yàn)樨?fù)樣本,置信度全為0。備注:負(fù)樣本沒有類別損失與邊框位置損失,只有置信度損失。
損失函數(shù)由 4 個部分組成,均使用均方差損失。參數(shù)如下:共有 S2 個區(qū)域(7x7=49),B表示每個網(wǎng)格有2個邊框,obj表示對應(yīng)真實(shí)物體,noobj表示沒有對應(yīng)真實(shí)物體。
- 采用NMS非極大值抑制,提取每個網(wǎng)格預(yù)測的兩個邊框中,IoU最大的邊框。
- (1)位置誤差:計(jì)算邊框的預(yù)測值與真實(shí)值的位置誤差。
前一個部分計(jì)算正樣中心點(diǎn)坐標(biāo)的損失,前一個部分計(jì)算正樣本寬和高的損失。
其中:λcoord用于調(diào)整位置誤差的權(quán)重
。由于不同物體的尺寸大小對寬高差值影響極大,因此對w和h進(jìn)行平方根處理,降低對物體尺度的敏感度,強(qiáng)化小物體的損失權(quán)重
。- (2)置信度誤差(obj):前景誤差:計(jì)算邊框與正樣本的誤差。
若邊框的IoU大于置信度閾值,則該邊界框?qū)儆谇熬?/font>。若存在多個滿足要求的邊框,則進(jìn)行非極大值抑制。我們希望前景框的誤差趨近于1。- (3)置信度誤差(noobj):背景誤差:計(jì)算邊框與負(fù)樣本的誤差。
若邊框的IoU小于置信度閾值或IoU=0,則該邊界框?qū)儆诒尘?/font>。我們希望背景框的誤差趨近于0。
其中:λnoobj用于調(diào)整負(fù)樣本置信度損失的權(quán)重(默認(rèn)為0.5)
。由于背景框的數(shù)量遠(yuǎn)遠(yuǎn)大于前景框,故對背景框誤差設(shè)置閾值(如:0.1),降低背景框誤差對損失函數(shù)的影響
。- (4)分類誤差:計(jì)算每個邊框得到的20個分類概率值與正樣本的誤差。
(1.4)NMS非極大值抑制
非極大值抑制可以用來修正多重檢測目標(biāo),能增加2~3%的mAP。
即在檢測結(jié)果中,若存在多個檢測框的IoU大于置信度閾值,則通過NMS只提取其中最大IoU值對應(yīng)的一個框。如下圖:五個框中只取最大值(置信度=0.98)的預(yù)測框。
(1.5)性能表現(xiàn)
優(yōu)點(diǎn)
- (1)YOLO檢測速度非??臁?
- 標(biāo)準(zhǔn)版本:可以每秒處理 45 幀圖像;
- 極速版本:可以每秒處理 150 幀圖像,完全滿足視頻的實(shí)時檢測要求;
- 欠實(shí)時系統(tǒng):在保證準(zhǔn)確率的情況下,速度也快于其他方法。
- (2)YOLO 實(shí)時檢測的平均精度是其他實(shí)時監(jiān)測系統(tǒng)的兩倍。
- (3)遷移能力強(qiáng),能運(yùn)用到其他的新的領(lǐng)域(比如:藝術(shù)品目標(biāo)檢測)。
缺點(diǎn)
- (1)對于小目標(biāo)以及重疊目標(biāo),檢測效果不好。
- (2)由于沒有類似于Anchor的先驗(yàn)框,對于新目標(biāo)或?qū)捀弑壤怀R姷哪繕?biāo),檢測效果不好。
- (2)在損失函數(shù)中,大目標(biāo)的損失比小目標(biāo)大,大目標(biāo)與小目標(biāo)的位置誤差的損失權(quán)重相同,導(dǎo)致目標(biāo)定位不準(zhǔn)確。
二、更快更強(qiáng):yolov2
論文地址:YOLO9000: Better, Faster, Stronger
官方代碼:http://pjreddie.com/darknet/yolo/
2017年,提出了yolov2和yolo9000,yolo9000能夠?qū)崟r檢測超過9000種物體,主要檢測網(wǎng)絡(luò)還是yolov2。
- yolov2的核心:主要解決yolov1召回率偏低以及定位精度不足的問題,但整體網(wǎng)絡(luò)架構(gòu)沒有改變。
- yolov2的特點(diǎn):相比其它檢測器,速度更快、精度更高、可以適應(yīng)多種尺寸的輸入圖像。
主要區(qū)別:
(1)yolov1是利用全連接層直接預(yù)測Bounding Box的坐標(biāo)。yolov2借鑒了Faster R-CNN的思想,引入Anchor機(jī)制,并利用K-means聚類的方法在訓(xùn)練集中聚類計(jì)算出更好的Anchor模板,大大提高了算法的召回率;
(2)同時結(jié)合圖像細(xì)粒度特征,將淺層特征與深層特征相連,有助于對小尺寸目標(biāo)的檢測。
(2.1)性能表現(xiàn)
yolov2相比v1提出了很多改進(jìn)措施,隨著添加每一步改進(jìn),mAP值持續(xù)上升。
(2.2)網(wǎng)絡(luò)模型(Darknet-19)
Darknet-19采用了19個卷積層,5個池化層。
- (1)取消yolov1的兩個全連接層。
yolov1基于全連接層直接預(yù)測 Bounding Boxes 的坐標(biāo)值
。
yolov2采用 Faster R-CNN 的方法,只用卷積層與 RPN(Region Proposal Network )來預(yù)測 Anchor Box 偏移量與置信度,而不是直接預(yù)測坐標(biāo)值
。- (2)添加了五個最大池化層(2的5次方)。
最終輸出圖像尺寸:由輸入圖像(h,w)轉(zhuǎn)換為(h / 32,w / 32)
。- (3)輸入圖像尺寸:由 yolov1 的 448×448 變?yōu)?yolov2 的 416×416。
備注:(416/32=13、448/32=14)
。因?yàn)槲覀兿M詈蟮玫降氖瞧鏀?shù)值,有實(shí)際的中心點(diǎn)。最終網(wǎng)格尺寸為13×13,與yolov1的7×7相比,可以預(yù)測更多的先驗(yàn)框。- (4)基于VGG的思想,大部分的卷積核都是3×3,一方面權(quán)重參數(shù)少,一方面感受野比較大;且采用降維的思想,將1×1的卷積核置于3×3之間,在保持整體網(wǎng)絡(luò)結(jié)構(gòu)的同時減少權(quán)重參數(shù)。并且每次池化后,下一層卷積核的通道數(shù) = 池化輸出的通道 × 2。
- (5)在網(wǎng)絡(luò)模型的最后,增加了一個全局平均池化層。
![]()
Darknet-19 與 yolov1、VGG16網(wǎng)絡(luò)的性能對比
- (1)VGG-16: 大多數(shù)檢測網(wǎng)絡(luò)框架都是以VGG-16作為基礎(chǔ)特征提取器。準(zhǔn)確率高,但計(jì)算復(fù)雜度大,所以速度相對較慢。因此,YOLOv2的網(wǎng)絡(luò)結(jié)構(gòu)基于該方面進(jìn)行改進(jìn)。
- (2)yolov1: 基于GoogLeNet的自定義網(wǎng)絡(luò),比VGG-16的速度快,但是精度稍不如VGG-16。
- (3)Darknet-19:
- 速度方面:處理一張圖片僅需要55.8億次運(yùn)算,相比于VGG的306.9億次,速度快了近6倍。
- 精度方面:在ImageNet上的測試精度為:top1準(zhǔn)確率為72.9%,top5準(zhǔn)確率為91.2%。
(2.3)改進(jìn)之處
(2.3.1)加入批標(biāo)準(zhǔn)化(Batch Normalization,BN)
最終約提升2%的mAP。
具體操作: 在每一個卷積層后面都加入BN,對數(shù)據(jù)進(jìn)行預(yù)處理操作(如:統(tǒng)一格式、均衡化、去噪等)。
優(yōu)點(diǎn):解決梯度消失和爆炸問題,起到一定的正則化效果(yolov2不再使用dropout),獲得更好的收斂速度。
(2.3.2)使用高分辨率圖像,微調(diào)分類模型。
最終約提升4%的mAP。
背景:yolov1訓(xùn)練時的分辨率:224×224;測試時:448×448。
具體操作:yolov2保持yolov1的操作不變,但在原訓(xùn)練的基礎(chǔ)上又加上了(10個epoch)的448×448高分辨率樣本進(jìn)行微調(diào),使網(wǎng)絡(luò)特征逐漸適應(yīng) 448×448 的分辨率;然后再使用 448×448 的樣本進(jìn)行測試,緩解了分辨率突然切換造成的影響。
(2.3.3)聚類提取先驗(yàn)框(Anchor Box)
最終約提升7%的recall達(dá)到88%,但降低了0.3%的mAP。
(1)?? yolov1邊界框都是手工設(shè)定的,通過直接對邊界框的(x,y,w,h)位置進(jìn)行預(yù)測,方法簡單但訓(xùn)練困難,很難收斂。
(2)?? Faster R-CNN共有9種先驗(yàn)框:分三個不同的scale(大中?。?,每個scale的(h,w)比例分為:1:1、1:2、2:1
。
(3)?? yolov2引入Anchor先驗(yàn)框機(jī)制 。但由于Faster R-CNN中先驗(yàn)框的大小和比例是按經(jīng)驗(yàn)設(shè)定的,不具有很好的代表性。故yolov2對訓(xùn)練集中所有標(biāo)注的邊界框先進(jìn)行聚類分析(比如:5類),然后獲取每一類的中心值即實(shí)際的(w,h)比值作為先驗(yàn)框。該值與真實(shí)值更接近,使得網(wǎng)絡(luò)在訓(xùn)練時更容易收斂。備注1:yolov1將圖像劃分為7×7個網(wǎng)格,每個網(wǎng)格grid只預(yù)測2個邊界框,共7×7×2=98個。
備注2:yolov2將圖像劃分為13×13個網(wǎng)格,每個網(wǎng)格grid只預(yù)測5個邊界框,共13×13×5=845個。其中:在Faster R-CNN的9種先驗(yàn)框基礎(chǔ)上,將所有的邊界框13×13×9=1521進(jìn)行K-means聚類,最終選擇最優(yōu)聚類參數(shù):k = 5。
基于自定義距離公式的K-means聚類方法
傳統(tǒng)K-means聚類方法使用標(biāo)準(zhǔn)的歐氏距離,將導(dǎo)致大的box會比小的box產(chǎn)生更多的誤差。而yolo的目的是使得先驗(yàn)框與真實(shí)框有更大的IOU值,故自定義距離公式。距離公式:計(jì)算每一個類別的中心值對應(yīng)的先驗(yàn)框centroids與真實(shí)框box的距離。
如下圖:IOU=(先驗(yàn)框與真實(shí)框的交集)除以(先驗(yàn)框與真實(shí)框的并集)。IOU越大,越相關(guān),則距離越小;反之亦然。備注:數(shù)據(jù)均已采用批標(biāo)準(zhǔn)化處理。
左圖: x軸表示Clusters聚類個數(shù)(K)
、y軸表示IOU均值
、紫色與黑色分別表示兩個不同的數(shù)據(jù)集(形狀相似)。
結(jié)論:在綜合考慮精確度和運(yùn)算速度后,yolov2最終取k=5個先驗(yàn)框。
右圖:k=5個先驗(yàn)框的圖形化顯示。
(2.3.4)相對偏移量計(jì)算 —— 在當(dāng)前網(wǎng)格中進(jìn)行相對位置的微調(diào)
yolov1:在當(dāng)前先驗(yàn)框中,進(jìn)行相對位置的微調(diào)。
- 詳細(xì)過程:已知
先驗(yàn)框位置為(x, y, w, h)
,現(xiàn)在得到的預(yù)測邊界框的偏移量為(tx, ty, tw, th)
,即系統(tǒng)判定需要在先驗(yàn)框位置的基礎(chǔ)上進(jìn)行相對位置的偏移,進(jìn)而可以得到更真實(shí)的位置。故需要將預(yù)測的偏移量加到先驗(yàn)框中(x+tx, y+ty, w+tw, h+th)
。- 問題:由于模型剛開始訓(xùn)練時,網(wǎng)絡(luò)參數(shù)都是隨機(jī)初始化,雖然進(jìn)行了批標(biāo)準(zhǔn)化但是參數(shù)的基數(shù)比較大,將導(dǎo)致預(yù)測的邊界框加上偏移量之后到處亂飄。
yolov2:在當(dāng)前網(wǎng)格中,進(jìn)行相對位置的微調(diào)。
圖中參數(shù)的詳細(xì)說明如下:
(1)(Cx, Cy)
:表示當(dāng)前網(wǎng)格的左上角位置坐標(biāo)。
(2)(tx, ty, tw, th)
:表示預(yù)測結(jié)果在當(dāng)前網(wǎng)格相對位置的偏移量。
(3)σ(tx)
:表示對漂移量 tx 取sigmoid函數(shù),得到(0~1)之間的值。即把預(yù)測邊框的藍(lán)色中心點(diǎn)約束在藍(lán)色背景的網(wǎng)格內(nèi)。約束邊框位置使得模型更容易學(xué)習(xí),且預(yù)測更為穩(wěn)定。
(4)e的tw次方
:由于預(yù)測結(jié)果取的log()對數(shù)值,故計(jì)算位置時需要反log進(jìn)行還原。
(5)(bx, by, bw, bh)
:表示當(dāng)前預(yù)測結(jié)果在特征圖位置(即預(yù)處理后得到的13×13網(wǎng)格)。
(2.3.5)Fine-Grained Features(細(xì)粒度特性)—— 提高對小目標(biāo)的檢測能力
背景:Faster R-CNN共有9種先驗(yàn)框:分三個不同的scale(大中小),每個scale的(h,w)比例分為:1:1、1:2、2:1。
其中:小中大三種尺度的特征圖
-> 對應(yīng)大中小三種尺度的感受野
-> 對應(yīng)大中小三種尺度的先驗(yàn)框
。
缺點(diǎn):感受野越大,其在原圖像中對應(yīng)的特征圖越大,導(dǎo)致其對小尺度目標(biāo)不敏感。
解決方法:對不同層的特征進(jìn)行融合。
具體操作:
添加一個passthrough Layer
,提高對小目標(biāo)的檢測能力。
(1)將高分辨率的淺層特征(26×26×512)進(jìn)行拆分;
(2)疊加到低分辨率的深層特征(13×13×1024)中;
(3)然后進(jìn)行特征融合(13×13×3072);
(4)最后再檢測。
備注:在yolov1中,F(xiàn)C起到全局特征融合的作用。
(2.3.6)Multi-Scale多尺度檢測(yolov2版) —— 尺度變換
背景:由于實(shí)際檢測數(shù)據(jù)的輸入圖像尺寸都不相同,若都裁剪為相同大小,最后檢測結(jié)果將有所下降。
限制:
yolov2
只有卷積層,故對輸入圖像尺寸沒有限制
。但有范圍限制[320, 608];yolov1
有全連接層,故輸入圖像尺寸固定
。
具體操作:訓(xùn)練模型每經(jīng)過一定次數(shù)的迭代之后,可以進(jìn)行輸入圖像尺度變換。如:每迭代100次,輸入圖像尺寸大小增加10%。
- 備注1:輸入圖像尺寸必須可以被32整除。
- 備注2:圖像尺寸越大,耗時越長。
三、巔峰之作:yolov3
論文地址:YOLOv3: An Incremental Improvement
官網(wǎng)代碼:https://github.com/yjh0410/yolov2-yolov3_PyTorch
yolov3主要針對小目標(biāo)檢測的不足之處做出改進(jìn)。
(3.1)性能表現(xiàn)
由圖可得:yolov3的檢測速度和mAP值都強(qiáng)高于其他方法。
參數(shù)解讀:
(1)x軸表示預(yù)測一張圖片所需要的時間;
(2)y軸為mAP;
(3)原點(diǎn)的x軸坐標(biāo)為50
(3.2)網(wǎng)絡(luò)模型(Darknet-53)
下面分兩個部分詳解:
(1)詳解Darknet-53網(wǎng)絡(luò)架構(gòu);
(2)Darknet-53在yolov3中的實(shí)際應(yīng)用,并詳解yolov3模型中的所有網(wǎng)絡(luò)層。
- Darknet-53網(wǎng)絡(luò)架構(gòu);
(1)由53個卷積層構(gòu)成,包括1×1和3×3的卷積層,卷積省時省力速度快效果好,對于分析物體特征最為有效。每個卷積層之后包含一個批量歸一化層和一個Leaky ReLU,加入這兩個部分的目的是為了防止過擬合。
(2)沒有全連接層。可以輸入任意尺寸的圖像
(3)沒有池化層。通過控制卷積層conv的步長stride達(dá)到下采樣的效果。具體操作:需要下采樣時stride=2;否則stride=1;
(4)除此之外,Darknet-53中還使用了類似ResNet結(jié)構(gòu)。![]()
- Darknet-53網(wǎng)絡(luò)架構(gòu)在yolov3中的實(shí)際應(yīng)用,并詳解yolov3模型中的所有網(wǎng)絡(luò)層。
(1)DBL
:由一個卷積層、一個批量歸一化層和一個Leaky ReLU組成的基本卷積單元。在Darknet-53中,共有53個這樣的DBL,所以稱其為Darknet-53。
(2)res unit(殘差單元)
:輸入圖像經(jīng)過兩個DBL后,再與原輸入進(jìn)行特征add,得到與原圖像大小維度相同的圖像。
殘差單元的目的:使得網(wǎng)絡(luò)可以提取到更深層的特征,同時避免出現(xiàn)梯度消失或爆炸。殘差網(wǎng)絡(luò)的特點(diǎn):至少不比原來差。
(3)res(n)
:表示n個res unit。計(jì)算公式:resn = Zero Padding + DBL + n × res unit 。
(4)y1、y2、y3
: 分別表示yolov3的三種不同尺度輸出(分別對應(yīng):大中小感受野)。
(5)concat1(拼接)
:(大中小感受野)將大感受野的特征圖像進(jìn)行上采樣,得到與中感受野的特征圖像相同大小,然后進(jìn)行維度拼接,達(dá)到多尺度特征融合的目的。為了加強(qiáng)算法對小目標(biāo)檢測的精確度。
(6)concat2(拼接)
: (大中小感受野)將中感受野
的特征圖像進(jìn)行上采樣,得到與小感受野
的特征圖像相同大小,然后進(jìn)行維度拼接,達(dá)到多尺度特征融合的目的。 為了加強(qiáng)算法對小目標(biāo)檢測的精確度![]()
(3.3)改進(jìn)之處
(3.3.1)Multi-Scale多尺度檢測(yolov3版) —— 上采樣+維度拼接
圖像分辨率大小直接反映像素?cái)?shù)量。分辨率越高,像素?cái)?shù)量越多,對細(xì)節(jié)表現(xiàn)越豐富。
- 前提:在目標(biāo)檢測中,語義信息主要用于區(qū)分前景(目標(biāo))和背景(非目標(biāo))。故不需要太多的信息,且分辨率大反而會降低語義信息。
- 具體操作:在網(wǎng)絡(luò)預(yù)測的最后某些層進(jìn)行上采樣+維度拼接操作。提高對小目標(biāo)的檢測效果
(詳細(xì)請看yolov3網(wǎng)絡(luò)架構(gòu))
(3.3.2)多標(biāo)簽分類:softmax()改成logistic()
將
yolov2的單標(biāo)簽分類:softmax()
改進(jìn)為yolov3的多標(biāo)簽分類:logistic()
。
具體形式:logistic()通過對每個類別都進(jìn)行二分類,以實(shí)現(xiàn)多標(biāo)簽分類。使用sigmoid函數(shù)將特征圖的預(yù)測結(jié)果約束在[0, 1]
之間,若有一個或多個值大于設(shè)定閾值,就認(rèn)定該目標(biāo)框所對應(yīng)的目標(biāo)屬于該類別。多個值稱為多標(biāo)簽對象。(如:一個人有woman、person、地球人等多個標(biāo)簽)
四、大神接棒:yolov4
論文地址:YOLOv4: Optimal Speed and Accuracy of Object Detection
官網(wǎng)代碼:https://github.com/AlexeyAB/darknet
yolov3發(fā)布至今,衍生了各式各樣能夠提高檢測精度的技巧(tricks)。
核心思想:yolov4篩選了其中一些tricks,并加以組合,以及適當(dāng)創(chuàng)新,形成了yolov4算法,并實(shí)現(xiàn)了速度和精度的完美平衡。
備注:雖然有許多技巧可以提高卷積神經(jīng)網(wǎng)絡(luò)CNN的準(zhǔn)確性,但是某些技巧僅適合在某些模型上運(yùn)行,或者僅在某些問題上運(yùn)行,或者僅在小型數(shù)據(jù)集上運(yùn)行。
主要調(diào)優(yōu)手段:加權(quán)殘差連接(WRC)
、跨階段部分連接(CSP)
、跨小批量標(biāo)準(zhǔn)化(CmBN)
、自對抗訓(xùn)練(SAT)
、Mish激活
、馬賽克數(shù)據(jù)增強(qiáng)
、CmBN
、DropBlock正則化
、CIoU Loss
等等。
(4.1)性能表現(xiàn)
經(jīng)過一系列的堆料,最終實(shí)現(xiàn)了目前最優(yōu)的實(shí)驗(yàn)結(jié)果:43.5%的AP(在Tesla V100上,MS COCO數(shù)據(jù)集的實(shí)時速度約為65FPS)。
(4.2)網(wǎng)絡(luò)模型(CSPDarknet53)
- CSPDarknet53網(wǎng)絡(luò)在yolov4中的實(shí)際應(yīng)用。
yolov4的CSPDarknet53
與yolov3的Darknet-53
相比,主要區(qū)別:
(1)將原來的Darknet53與CSPNet進(jìn)行結(jié)合,形成Backbone網(wǎng)絡(luò)。
(2)采用SPPNet適應(yīng)不同尺寸的輸入圖像大小,且可以增大感受野;
(3)采用SAM引入空間注意力機(jī)制;
(4)采用PANet充分利用了特征融合;
(5)激活函數(shù)由MIsh替換Leaky ReLU; 在yolov3中,每個卷積層之后包含一個批歸一化層和一個Leaky ReLU。而在yolov4的主干網(wǎng)絡(luò)CSPDarknet53中,使用Mish替換原來的Leaky ReLU。
CSPDarknet53網(wǎng)絡(luò)架構(gòu):
(4.2.1)跨階段部分網(wǎng)絡(luò)(Cross Stage Partial Networks,CSPNet)
- 背景: 2019年,Chien-Yao Wang等人提出CSPNet,主要用來解決網(wǎng)絡(luò)優(yōu)化中的重復(fù)梯度信息問題,在ImageNet dataset和MS COCO數(shù)據(jù)集上有很好的測試效果。
- 特點(diǎn):易于實(shí)現(xiàn),在ResNet、ResNeXt和DenseNet網(wǎng)絡(luò)結(jié)構(gòu)上都能通用。
- 目的: 實(shí)現(xiàn)更豐富的梯度組合,同時減少計(jì)算量。
具體方式: 將基本層的特征圖分成兩部分:11、主干部分繼續(xù)堆疊原來的殘差塊;22、支路部分則相當(dāng)于一個殘差邊,經(jīng)過少量處理直接連接到最后。
(4.2.2)空間金字塔池化網(wǎng)絡(luò)(Spatial Pyramid Pooling Network,SPPNet)
論文地址:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
yolov1背景:yolov1訓(xùn)練時的分辨率:224×224;測試時:448×448。
yolov2背景:yolov2保持yolov1的操作不變,但在原訓(xùn)練的基礎(chǔ)上又加上了(10個epoch)的448×448高分辨率樣本進(jìn)行微調(diào),使網(wǎng)絡(luò)特征逐漸適應(yīng) 448×448 的分辨率;然后再使用 448×448 的樣本進(jìn)行測試,緩解了分辨率突然切換造成的影響。
目的:通過
最大池化
將不同尺寸的輸入圖像變得尺寸一致,使得輸入圖像不再限制于固定尺寸。
優(yōu)點(diǎn):增大感受野。
下圖是經(jīng)典的空間金字塔池化層(SPP)。
(4.2.3)空間注意力機(jī)制(Spatial Attention Module,SAM)
具體方式: yolov4采用改進(jìn)的SAM方法
優(yōu)化歷程: CBAM(Convolutional Block AM) -> SAM(Spatial Attention Module) -> 改進(jìn)的SAM
優(yōu)化原因:
(1)CBAM
計(jì)算比較復(fù)雜且耗時,而yolo的出發(fā)點(diǎn)是速度,故只計(jì)算空間位置的注意力機(jī)制。
(2)常規(guī)的SAM
最大池化層和平均池化層分別作用于輸入的feature map,得到兩組shape相同的feature map,再將結(jié)果輸入到一個卷積層。過程過于復(fù)雜,yolo采取直接卷積進(jìn)行簡化。
CBAM與SAM的區(qū)別
- CBAM:特征圖注意力機(jī)制(Channel Attention Module):在Channel維度上,對每一個特征圖(channel)加一個權(quán)重,然后通過sigmoid得到對應(yīng)的概率值,最后乘上輸入圖像,相當(dāng)于對輸入圖像的特征圖進(jìn)行加權(quán),即注意力。??
如:32×32×256,對256個通道進(jìn)行加權(quán)。- SAM:空間注意力機(jī)制(Spatial Attention Module):在Spatial維度上,對每一個空間位置(Spatial)加一個權(quán)重,然后通過sigmoid得到對應(yīng)的概率值,最后乘上輸入圖像,相當(dāng)于對輸入圖像的所有位置特征進(jìn)行加權(quán),即注意力。??
如:32×32×256,對任意空間位置進(jìn)行加權(quán)。
SAM與改進(jìn)的SAM的區(qū)別
(4.2.4)路徑聚合網(wǎng)絡(luò)(Path Aggregation Network,PANet)
論文地址(FPNet):Feature Pyramid Networks for Object Detection
論文地址(PANet):Path Aggregation Network for Instance Segmentation
背景: PANet發(fā)表于CVPR2018,其是COCO2017實(shí)例分割比賽的冠軍,也是目標(biāo)檢測比賽的第二名。
具體方式: yolov4采用改進(jìn)的PANet方法
優(yōu)化歷程: FPNet(Feature Pyramid Networks) -> PANet(Path Aggregation Network) -> 改進(jìn)的PAN
優(yōu)化原因:
- (1)
FPNet
網(wǎng)絡(luò)采取自上而下的方式,將高層特征逐層與中高層、中層、中底層、低層特征進(jìn)行融合。缺點(diǎn)是無法自下而上融合,而PANet的優(yōu)化了該部分不足,詳見示意圖的(b)部分。- (2)
PANet
采用特征相加的融合方式,而yolo采用特征拼接的融合方式。加法可以得到一個加強(qiáng)版的特征圖,但特征權(quán)重不大于1,而拼接可能得到大于1的特征圖。
FPNet示意圖
PANet示意圖
圖中分為四個部分:
- (a)FPNet:通過 融合高層特征 來提升目標(biāo)檢測的效果。
- (b)Bottom-up Path Augmentation:通過 融合低層特征(邊緣形狀等)來提升目標(biāo)檢測的效果。
- (c)Adaptive Feature Pooling:采用 拼接特征融合。詳見下圖:拼接相比加法,特征更明顯,可以提高檢測效果。
- (d)Fully-connected Fusion
(4.2.5)Mish激活函數(shù)
論文地址:Mish: A Self Regularized Non-Monotonic Activation Function
- 特點(diǎn):Mish在負(fù)值的時候并不是完全截?cái)?,允許比較小的負(fù)梯度流入。
- 結(jié)論:網(wǎng)絡(luò)層數(shù)越多,ReLU激活函數(shù)精度迅速下降,而Mish激活函數(shù)在訓(xùn)練穩(wěn)定性、平均準(zhǔn)確率(1%-2.8%)、峰值準(zhǔn)確率(1.2% - 3.6%)等方面都有全面的提高。
22個激活函數(shù)
(4.3)改進(jìn)之處
BackBone訓(xùn)練策略:數(shù)據(jù)增強(qiáng)、自對抗訓(xùn)練、DropBlock正則化、類標(biāo)簽平滑、CIoU損失函數(shù)、DIoU-NMS等。
(4.3.1)Mosaic數(shù)據(jù)增強(qiáng) + CutMix數(shù)據(jù)增強(qiáng)
CutMix論文: https://arxiv.org/pdf/1905.04899v2.pdf
最大特點(diǎn):使得yolov4只通過單CPU就能完成訓(xùn)練,不用再擔(dān)心設(shè)備問題。
具體方式:基于CutMix方法對所有圖像進(jìn)行處理,然后基于Mosaic方法隨機(jī)取四張圖像拼接為一張圖像。CutMix方法的詳細(xì)過程如下:
由圖可得(左):CutMix表現(xiàn)最優(yōu)。
- (1)
ResNet-50
:采用常規(guī)的數(shù)據(jù)增強(qiáng)方法。如:調(diào)整亮度、飽和度、對比度;隨機(jī)縮放、旋轉(zhuǎn)、翻轉(zhuǎn)等。- (2)
Mixup
:將貓狗兩張圖像進(jìn)行圖像融合,其中狗和貓的權(quán)重參數(shù)都為0.5,故標(biāo)簽概率值都為0.5。- (3)
Cutout
:隨機(jī)刪除/遮擋一個區(qū)域。- (4)
CutMix
:隨機(jī)刪除/遮擋一個區(qū)域,并將圖像A的一部分(patch)粘貼到圖像B上,分類概率按A與B的patch面積比例進(jìn)行分配。如:將狗頭替換為貓頭,其中狗和貓的權(quán)重參數(shù)分別為0.6、0.4,故標(biāo)簽softmax的概率值分別為0.6、0.4。備注1:softmax能夠得到當(dāng)前輸入屬于各個類別的概率。
備注2:標(biāo)簽(分類結(jié)果)會根據(jù)A與B的patch面積比例進(jìn)行分配,且采用加權(quán)求和的方式計(jì)算損失。
數(shù)據(jù)增強(qiáng)的其余方法擴(kuò)展:
(4.3.2)自對抗訓(xùn)練(Self-Adversarial Training,SAT)
- 在第一階段:在原始圖像的基礎(chǔ)上,添加噪音并設(shè)置權(quán)重閾值,讓神經(jīng)網(wǎng)絡(luò)對自身進(jìn)行對抗性攻擊訓(xùn)練。如下圖:
- 在第二階段:用正常的方法訓(xùn)練神經(jīng)網(wǎng)絡(luò)去檢測目標(biāo)。
備注:詳細(xì)可參考對抗攻擊的快速梯度符號法(FGSM)。
(4.3.3)改進(jìn)的Dropout(DropBlock)
b圖
:Dropout是隨機(jī)刪除一些神經(jīng)元(如:a圖
的紅點(diǎn)),但對于整張圖來說,效果并不明顯。比如:眼睛被刪除,我們?nèi)匀豢梢酝ㄟ^眼睛的周邊特征(眼角、眼圈等)去近似識別。c圖
:DropBlock是隨機(jī)刪除一大塊神經(jīng)元。 如:將狗頭的左耳全部刪除。
(4.3.4)標(biāo)簽平滑(Label Smoothing)
標(biāo)簽值絕對化:只有0和1兩個值。
- 問題:該現(xiàn)象將導(dǎo)致神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中,自我良好,從而過擬合。
- 具體方式:將絕對化標(biāo)簽值進(jìn)行平滑,將[0,1]變換為[0.05,0.95]。即分類結(jié)果具有一定的模糊化,使得網(wǎng)絡(luò)的抗過擬合能力增強(qiáng)。
左圖(使用前)
:分類結(jié)果相對不錯,但各類別之間存在一定的誤差;右圖(使用后)
:分類結(jié)果比較好,簇內(nèi)距離變小,簇間距離變大。
(4.3.5)CIoU損失函數(shù)
效果:采用CIoU Loss損失函數(shù),使得預(yù)測框回歸的速度和精度更高一些。
Loss優(yōu)化過程:經(jīng)典IOU損失 -> GIOU損失(Generalized IOU) -> DIOU損失(Distance IOU) -> CIOU損失
優(yōu)缺點(diǎn):
IoU_Loss
:考慮檢測框和目標(biāo)框重疊面積。GIoU_Loss
:在IOU的基礎(chǔ)上,解決邊界框不重合時的問題。DIoU_Loss
:在IOU和GIOU的基礎(chǔ)上,考慮邊界框中心點(diǎn)距離的信息。CIoU_Loss
:在DIOU的基礎(chǔ)上,考慮邊界框長寬比的尺度信息。
(4.3.6)DIoU-NMS
- 在實(shí)際應(yīng)用場景中,當(dāng)兩個不同物體重疊時,由于IOU值比較大,經(jīng)過NMS處理后可能只剩下一個檢測框,進(jìn)而導(dǎo)致漏檢。
- 而DIOU-NMS 不僅考慮IOU,還考慮兩個框中心點(diǎn)之間的距離。若兩個框之間IOU比較大,且兩個框的距離也比較大時,則認(rèn)為是兩個物體框。
在檢測結(jié)果中,若存在多個檢測框的IOU大于
置信度閾值
,方法如下:
(1)NMS非極大值抑制:只取IoU最大值對應(yīng)的框。
(2)DIoU-NMS:計(jì)算高置信度候選框(M)與其余所有框(Bi)的中心點(diǎn)距離。若距離較大,則提取多個目標(biāo)框。優(yōu)點(diǎn):對重疊目標(biāo)的識別效果更好。
其中:s(i)
是分類置信度,ε
為NMS閾值,M
為最高置信度的框。b, b(gt)
分別表示預(yù)測框和真實(shí)框的中心點(diǎn);ρ
表示計(jì)算兩個中心點(diǎn)的歐式距離。c
表示能夠同時包含預(yù)測框和真實(shí)框的最小外接矩形的對角線長度。(3)SOFT-NMS:對于不滿足要求,且與最大置信度對應(yīng)的檢測框高度重疊的檢測框,不直接刪除,而采取降低置信度的方式。優(yōu)點(diǎn):召回率更高
五、橫空出世:YOLOv5
論文下載:yolov5沒有論文
官網(wǎng)代碼:https://github.com/ultralytics/yolov5
- 2020 年 2 月
YOLO之父Joseph Redmon
宣布退出計(jì)算機(jī)視覺研究領(lǐng)域。- 2020 年 4 月 23 日YOLOv4發(fā)布。
- 2020 年 6 月 10 日YOLOv5發(fā)布。
版本特點(diǎn)
(1)v4與v5兩個版本的改進(jìn)都屬于多種技術(shù)堆積版本,且兩個版本差異不大。
(2)一直在更新中,且更新較快(平均2~3個月一次)。
備注:v5對應(yīng)的GitHub上有詳細(xì)的項(xiàng)目說明。
備注:由于v5項(xiàng)目的訓(xùn)練數(shù)據(jù)集過于龐大,故可以選擇自己的數(shù)據(jù)集 or 小樣本數(shù)據(jù)集學(xué)習(xí)。
Roboflow:開源自動駕駛數(shù)據(jù)集。該數(shù)據(jù)集已經(jīng)畫好邊界框;下載格式:YOLO v5 PyTorch。
(5.1)性能表現(xiàn)
yolov5是在
COCO數(shù)據(jù)集
上預(yù)訓(xùn)練的系列模型,包含5個模型
:YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLO5x。
不同的變體模型使得YOLOv5能很好的在精度和速度中權(quán)衡,方便用戶選擇。
(5.2)網(wǎng)絡(luò)模型(YOLOv5s)
模塊1(CBL-CBL
):由Conv + BN + Leaky_relu組成。
模塊2(Res unit
):借鑒ResNet網(wǎng)絡(luò)中的殘差結(jié)構(gòu),用來構(gòu)建深層網(wǎng)絡(luò),CBM是殘差模塊中的子模塊。
模塊3(CSP1_X
):借鑒CSPNet網(wǎng)絡(luò)結(jié)構(gòu),該模塊由一個CBL + Res unint + 卷積層,最后Concat組成。
模塊4(CSP2_X
):借鑒CSPNet網(wǎng)絡(luò)結(jié)構(gòu),該模塊由兩個CBL + Res unint + 卷積層,最后Concat組成。
模塊5(Focus結(jié)構(gòu)
):首先將多個slice結(jié)果進(jìn)行拼接Concat,然后將其送入CBL模塊中。
模塊6(SPP
):采用1×1、5×5、9×9和13×13的最大池化方式,進(jìn)行多尺度特征融合。
(5.2.1)Backbone(特征提取模塊)
由下向上:
Backbone(骨干網(wǎng)絡(luò))
:用于提取圖像特征的網(wǎng)絡(luò) 。采用通用模型resnet、VGG等。
- 使用方式:將通用模型作為backbone時,直接加載預(yù)訓(xùn)練模型的參數(shù),再拼接上自定義網(wǎng)絡(luò)。
- 訓(xùn)練方法:對遷移后的預(yù)訓(xùn)練模型進(jìn)行微調(diào),使其更適合我們自己的任務(wù)。
Neck(脖子)
:用于更好的使用backbone提取的特征。Bottleneck(瓶頸)
:輸出維度比輸入維度小(如:身體到脖子,由寬到細(xì))。
- 常用參數(shù):bottle_num=256,表示網(wǎng)絡(luò)的輸出維度是256,但輸入維度可能是1024。
Head(頭部)
:獲取模型的輸出特征,并進(jìn)行預(yù)測
Backbone結(jié)構(gòu)主要分成三類:
(1)CNNs結(jié)構(gòu)
包括:非輕量化CNNs + 輕量化CNNs。
(2)Transformer結(jié)構(gòu)
(3)CNNs+Transformer結(jié)構(gòu)
深度學(xué)習(xí)框架-Backbone匯總(超詳細(xì)講解)
?? 一、(非輕量化CNNs)Backbone結(jié)構(gòu)
LeNet5
:(1998)AlexNet
:(2012)VGG
:(2014)GoogLeNet(InceptionNet)系列
:Inception-v1(GoogleNet): (2015)、Inception-v2 (2015,BN-inception)、Inception-v3 (2015)、Inception-v4: (2017)、Inception-resnet-v2: (2017)Resnet
: (2016)ResNet變種
:ResNeXt (2016)、ResNeSt(2020)、Res2Net(2019)、DenseNet (2017)DPNet
:(2017)NasNet
:(2018)SENet及其變體SKNet
:SENet(2017)、SKNet(2019)EfficientNet 系列
:EfficientNet-V1(2019)、EfficientNet-V2(2021)Darknet系列
:Darknet-19 (2016, YOLO v2 的 backbone)、Darknet-53 (2018, YOLOv3的 backbone)DLA
(2018, Deep Layer Aggregation)
?? 二、(輕量化CNNs)Backbone結(jié)構(gòu)
SqueezeNet
:(2016)MobileNet-v1
:(2017)XCeption
:(2017, 極致的 Inception)MobileNet V2
:(2018)ShuffleNet-v1
:(2018)ShuffleNet-v2
:(2018)MnasNet
:(2019)MobileNet V3
(2019)CondenseNet
(2017)ESPNet系列
:ESPNet (2018)、ESPNetv2 (2018)ChannelNets
PeleeNet
IGC系列
:IGCV1、IGCV2、IGCV3FBNet系列
:FBNet、FBNetV2、FBNetV3GhostNet
WeightNet
MicroNet
?? 三、 ViT(Vision Transformer )Backbone結(jié)構(gòu)
ViT-H/14 和 ViT-L/16
(2020)(Vision Transformer,ViT)Swin Transformer
(2021)PVT
(2021, Pyramid Vision Transformer)MPViT
(CVPR 2022,Multi-path Vision Transformer, 多路徑 Vision Transformer)EdgeViTs
(CVPR 2022,輕量級視覺Transformer)
?? 四、(CNNs+Transformer / Attention)Backbone結(jié)構(gòu)
CoAtNet
(2021)BoTNet
(2021)
(5.2.1)EfficientNet
EfficientNet網(wǎng)絡(luò)詳解
(5.3)改進(jìn)之處
深入淺出Yolo系列之Yolov5核心基礎(chǔ)知識完整講解
六、曇花一現(xiàn):YOLOv6
手把手教你運(yùn)行YOLOv6(超詳細(xì))
yolov6與v7相差不到十天,區(qū)別不大。
七、誰與爭鋒:YOLOv7
論文下載:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object
detectors
代碼地址:https://gitcode.net/mirrors/WongKinYiu/yolov7
在項(xiàng)目實(shí)戰(zhàn)中,只研究yolov5或yolov7對應(yīng)的項(xiàng)目即可,yolov3不要再研究了。因?yàn)楝F(xiàn)在的torch版本是高版本,而v3當(dāng)時是低版本。
(7.1)性能表現(xiàn)
(7.2)網(wǎng)絡(luò)模型
(7.3)改進(jìn)之處
(7.3.1)RepVGG(最大改進(jìn))
背景
- 2014年:牛津大學(xué)著名研究組VGG (Visual Geometry Group), 提出VGGNet。
- 2021年:清華大學(xué)、曠視科技以及香港科技大學(xué)等機(jī)構(gòu),基于VGG網(wǎng)絡(luò)提出了RepVGG網(wǎng)絡(luò)。
效果
RepVGG無論是在精度還是速度上都已經(jīng)超過了 ResNet、EffcientNet 以及 ResNeXt 等網(wǎng)絡(luò)。
核心:結(jié)構(gòu)重參數(shù)化
RepVGG采用
結(jié)構(gòu)重參數(shù)化(structural re-parameterization)
的方法,詳細(xì)過程如下:
(1)訓(xùn)練時,使用ResNet-style的多分支模型(特點(diǎn):增加模型的表征能力)
(2)測試時,轉(zhuǎn)化成VGG-style的單線路模型(特點(diǎn):速度更快、更省內(nèi)存并且更加的靈活)備注:訓(xùn)練與測試的網(wǎng)絡(luò)結(jié)構(gòu)是可以不一樣的。
核心操作:在測試時,將訓(xùn)練時的多分支模型進(jìn)行合并得到一條單線路模型。
即對1 x 1卷積 + BN(批標(biāo)準(zhǔn)化)與3 x 3卷積進(jìn)行合并
。RepVGG網(wǎng)絡(luò):結(jié)構(gòu)重參數(shù)化 - 詳細(xì)過程
詳細(xì)如下:
- (1)將1x1卷積轉(zhuǎn)換成3x3卷積
- (2)將BN和3x3卷積進(jìn)行融合,轉(zhuǎn)換成3x3卷積
- (3)多分支融合
備注1:yolo的核心是檢測速度快,而不是檢測精度高。
備注2:在yolo六個版本的優(yōu)化后,網(wǎng)絡(luò)層只留下了3 x 3卷積、1 x 1卷積和BN(每一個網(wǎng)絡(luò)層之后都進(jìn)行批標(biāo)準(zhǔn)化)。
備注3:VGG在2014年告訴我們,3 x 3卷積是計(jì)算速度最快的
,優(yōu)化最好的。
備注4:黃色模塊是激活函數(shù)ReLU,藍(lán)色模塊是卷積層。
備注5:單支路模型可以節(jié)約內(nèi)存。
1、將1x1卷積轉(zhuǎn)換成3x3卷積
具體過程:
(1)取1x1卷積(卷積核:1個參數(shù)),設(shè)置padding=1(即在其周圍填補(bǔ)一圈全為零的元素)
(2)設(shè)置原始輸入的padding=1
(3)輸入與卷積核進(jìn)行卷積操作,得到3x3的卷積層。。
注意:原始輸入和1x1卷積都需要設(shè)置padding=1。
2、將BN和3x3卷積進(jìn)行融合,轉(zhuǎn)換成3x3卷積
通俗來講:將BN公式拆解為 一元二次方程(y1 = k1* x1 + b1);然后與損失函數(shù)(y2 = k2* x2 + b2)進(jìn)行合并得到新的方程(y3 = k3* x3 + b3)。
3、多分支融合
具體過程:(1)將1x1卷積 + BN全部轉(zhuǎn)換為3x3卷積,然后與3x3卷積進(jìn)行合并,得到一個3x3卷積。
(7.3.2)正樣本分配策略
主要目的:為了得到更多的正樣本。
- 備注1:正樣本(anchor)即先驗(yàn)框;負(fù)樣本即背景;真實(shí)框(Ground Truth,GT)即檢測目標(biāo)
- 備注2:先驗(yàn)框在不同的yolo目標(biāo)檢測模型中,又有不同的叫法。如:anchor(錨框)、bounding box(邊界框)。叫法不同,但都是同一個概念。
具體計(jì)算過程分兩個步驟:
步驟一(提取anchor)
:(1)計(jì)算anchor的中心點(diǎn)位置
(2)中心點(diǎn)位置在當(dāng)前網(wǎng)格進(jìn)行上、下、左、右四個方向偏移,偏移大小為0.5。
(3)取當(dāng)前網(wǎng)格 + 四個方向的中心點(diǎn)所對應(yīng)的兩個網(wǎng)格。共三個網(wǎng)格作為正樣本(一個黑色點(diǎn) + 兩個藍(lán)色點(diǎn))
備注:對漂移量取sigmoid函數(shù),得到(0 ~ 1)之間的值。
步驟二(篩選anchor)
:篩選條件一:GT和anchor的長款比范圍:[0.25,4] 。
篩選條件二:GT和anchor的IOU要大于自定義閾值。
篩選條件三:GT和anchor的類別預(yù)測損失要大于自定義閾值。
計(jì)算過程:三個條件分別篩選出滿足要求的anchor,然后基于權(quán)重計(jì)算損失Loss,并進(jìn)行損失TOPK排序,最終只提取滿足要求的K個anchor。
備注:Loss = (權(quán)重系數(shù)1 * 條件一) + (權(quán)重系數(shù)2 * 條件二) + (權(quán)重系數(shù)3 * 條件三)
舉例:以下是具體過程(篩選anchor)中,條件二的損失計(jì)算。
- 備注1:計(jì)算GT對應(yīng)的anchor數(shù)量(損失計(jì)算得到的結(jié)果):向下取整。
- 備注2:若一個GT同時和多個anchor高度匹配,則按照損失計(jì)算原則,只能匹配損失最小對應(yīng)的一個anchor。
(7.3.3)相對偏移量計(jì)算(yolov5/v7版)
(7.3.4)輔助頭(auxiliary head)+主頭(lead head)
詳細(xì)請看v7論文
圖5:輔助頭用粗線,主頭用細(xì)線。與常規(guī)模型(a)
相比,模型(b)
具有輔助頭。與通常的獨(dú)立標(biāo)簽分配器(c)
不同,我們提出主頭引導(dǎo)標(biāo)簽分配器(d)
以及由粗至細(xì)的主頭引導(dǎo)標(biāo)簽分配器(e)
。
- 計(jì)算:通過主頭的預(yù)測值和真實(shí)值進(jìn)行標(biāo)簽分配器優(yōu)化,然后同時得到主頭和輔助頭的訓(xùn)練標(biāo)簽。
- 備注:詳細(xì)的從粗到細(xì)的實(shí)現(xiàn)方法和約束設(shè)計(jì)細(xì)節(jié)將在附錄中詳細(xì)闡述。
參考文獻(xiàn)
1.YOLO學(xué)習(xí):召回率Recall、精確率Precision、IoU、Map
2.YOLOv1到Y(jié)OLOv3的演變過程及每個算法詳解
3.YOLO系列總結(jié):YOLOv1, YOLOv2, YOLOv3, YOLOv4, YOLOv5, YOLOX
4.YOLO系列詳解:YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5
5.YOLO系列算法精講:從yolov1至yolov5的進(jìn)階之路(2萬字超全整理)
6.深入淺出Yolo系列:Yolov3、Yolov4、Yolov5、YoloX(超多-免費(fèi)數(shù)據(jù)集)
7.深度學(xué)習(xí)框架-Backbone匯總(超詳細(xì)講解)
8.深入淺出Yolo系列之Yolov5核心基礎(chǔ)知識完整講解
9.YOLOv7 RepVGG網(wǎng)絡(luò):結(jié)構(gòu)重參數(shù)化 - 詳細(xì)過程
10.目標(biāo)檢測算法——YOLOV7——詳解文章來源:http://www.zghlxwxcb.cn/news/detail-414320.html
實(shí)戰(zhàn)一:目標(biāo)檢測:教你利用yolov5訓(xùn)練自己的目標(biāo)檢測模型
實(shí)戰(zhàn)二:認(rèn)真總結(jié)6000字Yolov5保姆級教程(2022.06.28全新版本v6.1)
實(shí)戰(zhàn)三:利用yolov5實(shí)現(xiàn)口罩佩戴檢測算法(非常詳細(xì))
實(shí)戰(zhàn)四:YOLOv7(目標(biāo)檢測)入門教程詳解—檢測,推理,訓(xùn)練
?? roboflow官網(wǎng):開源自動駕駛數(shù)據(jù)集(Computer Vision Datasets)??文章來源地址http://www.zghlxwxcb.cn/news/detail-414320.html
到了這里,關(guān)于三萬字硬核詳解:yolov1、yolov2、yolov3、yolov4、yolov5、yolov7的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!