YOLO系列-YOLOv2與YOLOv3

YOLOv1:https://blog.csdn.net/lipengfei0427/article/details/103589165

三、YOLOv2

爲提高物體定位精準性和召回率,YOLO作者提出了 《YOLO9000: Better, Faster, Stronger》。相比v1提高了訓練圖像的分辨率;引入了Faster RCNN中anchor box的思想,對網絡結構的設計進行了改進,輸出層使用卷積層替代YOLO的全連接層,聯合使用coco物體檢測標註數據和imagenet物體分類標註數據訓練物體檢測模型。相比YOLO,YOLO9000在識別種類、精度、速度、和定位準確性等方面都有大大提升。

YOLOv1、v2、v3是連續的,雖然在網絡結構等各個方面有所提升,但是整體思想是不變的,因爲接下來分析YOLOv2對於YOLOv1的改進。

1.Better-Batch Normalization

使用Batch Normalization對網絡進行優化,讓網絡提高了收斂性,同時還消除了對其他形式的正則化(regularization)的依賴。通過對YOLO的每一個卷積層增加Batch Normalization,最終使得mAP提高了2%,同時還使model正則化。使用Batch Normalization可以從model中去掉Dropout,而不會產生過擬合。

如圖10所示的BN層在全連接層之後,在YOLOv2中,每個卷積層後面都有一個BN層。

                                                                              圖10.BN層在全連接層之後

2.Better-High resolution classifier

目前業界標準的檢測方法,都要先把分類器放在ImageNet上進行預訓練。從Alexnet開始,大多數的分類器都運行在小於256*256的圖片上。而現在YOLO從224*224增加到了448*448,這就意味着網絡需要適應新的輸入分辨率。

爲了適應新的分辨率,YOLOv的分類網絡以448*448的分辨率先在ImageNet上進行Fine Tune,Fine Tune10個epochs,讓網絡有時間調整他的濾波器(filters),好讓其能更好的運行在新分辨率上,還需要調優用於檢測的Resulting Network。最終通過使用高分辨率,mAP提升了4%。

 

                                                                             圖11.YOLOv2訓練的三個階段

3.Better-Convolution with anchor boxes

YOLO去掉了全連接層,使用Anchor Boxes來預測 Bounding Boxes。作者去掉了網絡中一個Pooling層,這讓卷積層的輸出能有更高的分辨率。使用Anchor Box會讓精確度稍微下降,但用了它能讓YOLO能預測出大於一千個框,同時recall達到88%,mAP達到69.2%。

 

4.Better-Dimension clusters

之前Anchor Box的尺寸是手動選擇的,所以尺寸還有優化的餘地。 爲了優化,在訓練集(training set)Bounding Boxes上跑了一下k-means聚類,來找到一個比較好的值。

由於使用標準k-means的方法,即使用歐式距離進行聚類,則大的box產生的誤差必然比小box要大很多。因此採用評估公式爲:

最終我們分別在VOC 2007和COCO數據集上運行,得到了不同數據集上簇的個數與平均IoU的關係,結果如圖12所示。

 

                                                                      圖12.在VOC和COCO數據集利用聚類結果

 

綜合平衡召回率和模型複雜度,我們發現當k=5時,是比較好的權衡點。我們經過實驗分析,聚類得到的anchor box較手動選擇的anchor box有較大的提升。

                                                                     圖13.聚類與手動選擇anchor box結果比較

5.Better-Direction location prediction

在上面我們討論了手動選擇anchor box的尺寸可能會對結果產生的一些影響,在這裏作者引入anchor box遇到第二個問題:模型穩定性。作者認爲模型不穩定性主要來自box的(x, y)座標。

YOLOv2沒有預測偏移量,而是直接預測對於網格單元的相對位置。即相對單元格的左上角的位置座標。作者通過引入Sigmoid函數預測offset,解決了anchor boxes的預測位置問題。

其中,, , ,爲預測框的中心和寬高。最後一個公式是預測框的置信度。,是當前網格左上角到圖像左上角的距離,需要先將網格大小歸一化,即令一個網格寬和高均爲1。, 是先驗框的寬和高。, , , , 是要學到的函數,分別用於預測框的中心點座標,寬高和置信度。

使用聚類搭配直接位置預測法的操作,使得模型上升了5個百分點。

 

6.Better-Fine-Grained Features

在13*13的特徵圖上預測大目標足夠,但對於小目標效果不理想。YOLOv2增加 passthrough層,將前面26*26特徵圖與本層連接。passthrough層將26*26*512特徵圖轉變爲13*13*2048的特徵圖與本層13*13*1024特徵圖結合,得到13*13*3072的特徵圖,由此增加細粒度,在此特徵圖上做預測。

 

7.Better-Multi-Scale Training

爲了使YOLOv2可以應用圖片大小更廣,YOLOv2每迭代幾次都會改變網絡參數。每10個Batch,網絡會隨機地選擇一個新的圖片尺寸,由於使用了下采樣參數是32,所以不同的尺寸大小也選擇爲32的倍數{320,352……608},最小320*320,最大608*608,網絡會自動改變尺寸,並繼續訓練的過程。這一政策讓網絡在不同的輸入尺寸上都能達到一個很好的預測效果,同一網絡能在不同分辨率上進行檢測。

                                                                         圖14.在不同尺寸訓練集上訓練結果

 

8.Faster-Darknet19

Darknet-19是基於Darknet框架編寫的。主要使用3x3卷積並在pooling之後channel數加倍(VGG);global average pooling替代全連接做預測分類,並在3x3卷積之間使用1x1卷積壓縮特徵表示(Network in Network);使用 batch normalization 來提高穩定性,加速收斂,對模型正則化.

                                                                            圖15.Darknet-19網絡結構

9.Faster-損失函數

負責預測目標的anchor:

第一項:負責預測目標的anchor的座標損失(包括中心定位和邊界定位)。僅計算負責預測目標的那個anchor的座標損失。(此項在YOLOv1中邊界定位是採用根號下的差值的平方)——衡量目標定位準確度

第三項:負責預測目標的anchor的confidence損失。負責預測物體的anchor需要計算confidence損失,confidence的目標就是讓預測置信得分去逼近的預測bbox和Ground Truth的IoU。——衡量可能有目標的準確度

第五項:負責預測目標的anchor的類別損失。每個類別的輸出概率0-1之間,計算的是L2損失。也就是說分類問題也把它當做了迴歸問題。且YOLOv2中類別預測沒有預測背景,因爲置信得分值低於閾值就代表不存在目標。——衡量目標分類的準確度

 

不負責預測目標的anchor:

第二項:不負責預測目標的anchor的座標損失。加了限制,希望直接回歸到自身anchor box。

第四項:不負責預測目標的anchor的confidence損失。(只計算那些與Ground Truth的IoU小於IoU閾值的anchor box)。如果設定的anchor box小於閾值說明本身就無意預測,就回歸到與Ground Truth的IoU=0。

 

10.Stronger

作者提出一種聯合訓練分類數據和檢測數據的方法。在檢測數據上學習特別的檢測信息比如bounding box座標及常見對象的分類;只有類別信息的數據用來擴充模型可檢測的類別數量。

檢測數據和類比數據混合後,在訓練時,對於檢測數據可以根據YOLOv2的損失函數反向傳播對應信息,對於類別數據,只反向傳播類別信息。

大多數對待分類的方法是使用softmax層,但是softmax使得類別之間互相排斥,這對類別有包含關係的數據集不適用,比如ImageNet中的“Norfolk terrier”和COCO中的“dog”。對此作者使用一種多標籤的模型進行聯合數據。

 

11.Stronger-Hierarchical classification

ImageNet的標籤分佈爲WordNet,這種結構是圖結構而不是樹結構。因爲樹結構不存在交集,而圖結構可以。比如:狗這個label即屬於犬科也屬於家畜。作者沒有使用全圖結構而是構造一種多層次樹——WordTree,簡化這一問題。我們可以預測每個節點處條件概率值如下

進而如果想判斷某張圖片是否屬於某一類別,可以計算下面的式子,依次在各個類別條件概率相乘。

ImageNet 1k有1000類,使用WordTree後,類別擴充到1369,在ImageNet 1k和WordTree1k上預測情況如圖16所示,在ImageNet上使用一個softmax,在WordTree上使用多個softmax,每一層次類使用一個softmax。

                                                                       圖16.ImageNet和WordTree預測比較

作者使用與之前相同的訓練參數,Darknet-19模型在WordTree1k數據集上top-1 accuracy爲71.9%,top-5 accuracy爲90.4%。儘管增加了額外369類,但準確率值下降了一點兒。

12.Stronger-Hierarchical classification

使用WordTree可以將ImageNet和COCO數據集整合。

                                                                        圖17.ImageNet和COCO整合

 

四、YOLOv3

沿用

·“分而治之”,從YOLOv1開始,YOLO算法就是通過劃分單元格來做檢測,只是劃分的數量不一樣。

·採用"leaky ReLU"作爲激活函數。

·端到端進行訓練。一個loss function搞定訓練,只需關注輸入端和輸出端。

·從YOLOv2開始,YOLO就用batch normalization作爲正則化、加速收斂和避免過擬合的方法,把BN層和leaky ReLU層接到每一層卷積層之後。

·多尺度訓練。在速度和準確率之間trade off。想速度快點,可以犧牲準確率;想準確率高點兒,可以犧牲一點速度。

 

改進

·多級預測終於爲 YOLO 增加了 top down 的多級預測,解決了 YOLO 顆粒度粗,對小目標無力的問題。

·loss不同, v3 替換了 v2 的 softmax loss 變成 logistic loss。

·加深網絡,採用簡化的 residual block 取代了原來 1×1 和 3×3 的 block

                                                                            圖18.YOLOv3性能與RetinaNet比較

1.網絡結構

                                                                              圖19-1.Darknet-53網絡結構示意

                                                                                圖19-2.YOLOv3網絡結構示意

DBL:代碼中的Darknetconv2d_BN_Leaky,是YOLOv3的基本組件。就是卷積+BN+Leaky relu。

resn:n代表數字,有res1,res2, … ,res8等等,表示這個res_block裏含有多少個res_unit。

concat:張量拼接。將darknet中間層和後面的某一層的上採樣進行拼接。

 

2.九種尺寸先驗框

隨着輸出的特徵圖的數量和尺度的變化,先驗框的尺寸也需要相應的調整。YOLO2已經開始採用K-means聚類得到先驗框的尺寸,YOLO3延續了這種方法,爲每種下采樣尺度設定3種先驗框,總共聚類出9種尺寸的先驗框。

在COCO數據集這9個先驗框是:(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90),(156x198),(373x326)。

分配上,在最小的13*13特徵圖上(有最大的感受野)應用較大的先驗框(116x90),(156x198),(373x326),適合檢測較大的對象。中等的26*26特徵圖上(中等感受野)應用中等的先驗框(30x61),(62x45),(59x119),適合檢測中等大小的對象。較大的52*52特徵圖上(較小的感受野)應用較小的先驗框(10x13),(16x30),(33x23),適合檢測較小的對象。

                                                                                   表1.特徵圖與先驗框

 

    9種先驗框的尺寸如下圖所示,藍色框爲聚類得到的先驗框,黃色框爲ground truth,紅色框爲對象中心點所在的網格

                                                                                圖20.聚類得到的9種先驗框

3.損失函數

YOLOv3重要改變之一:No more softmaxing the classes。

softmax來分類依賴於這樣一個前提,即分類是相互獨立的,換句話說,如果一個目標屬於一種類別,那麼它就不能屬於另一種。但是,當我們的數據集中存在人或女人的標籤時,上面所提到的前提就是去了意義。

在這裏,我們使用logistic regression來預測每個類別得分並使用一個閾值來對目標進行多標籤預測。比閾值高的類別就是這個邊界框真正的類別。

 

4.輸入與輸出的映射

                                                                             圖21.輸入與輸出的映射

對於一個416*416的輸入圖像,在每個尺度的特徵圖的每個網格設置3個先驗框,總共有 13*13*3 + 26*26*3 + 52*52*3 = 10647 個預測。每一個預測是一個(4+1+80)=85維向量,這個85維向量包含邊框座標(4個數值),邊框置信度(1個數值),對象類別的概率(對於COCO數據集,有80種對象)。

以上就是個人對YOLO系列的全部理解啦,歡迎大家指正!

 

參考:

1.《You Only Look Once: Unified, Real-Time Object Detection》Joseph Redmon, Santosh Divvala, Ross Girshick¶, Ali Farhadi(2015)

2.《You Only Look Once: Unified, Real-Time Object Detection》Joseph Redmon, Santosh Divvala, Ross Girshick¶, Ali Farhadi(2016)

3.《YOLO9000: Better, Faster, Stronger》Joseph Redmon, Ali Farhadi

4.《YOLOv3: An Incremental Improvement》Joseph Redmon,Ali Farhadi

5.https://www.imooc.com/article/36391

6.https://blog.csdn.net/qq_33270279/article/details/99883051

7.https://blog.csdn.net/c20081052/article/details/80236015

8.https://zhuanlan.zhihu.com/p/63507794

9.https://www.jianshu.com/p/57ea656660f7

10.https://blog.csdn.net/qq_41994006/article/details/88708199

11.https://blog.csdn.net/qq_33948796/article/details/88561542

12.https://www.jianshu.com/p/032b1eecb335

13. https://blog.csdn.net/yanzi6969/article/details/80505421

14. https://www.jianshu.com/p/d13ae1055302

發佈了67 篇原創文章 · 獲贊 133 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章