YOLOV2相對於YOLOV1的改進


1、YOLOV1有兩個缺點:

(1)定位不夠准確。

(2)和基於region proposal類的方法相比找回率更低。

2、Batch Normalization

YOLOV1中也有BN,但是YOLOV2在加入BN后把dropout去掉了,實驗證明可以提高2%的mAP.

3、High Resolution Classifier

這個主要是介紹了一下檢測模型的一般訓練策略。一般都不會從隨機初始化所有的參數開始的,一般都是用預訓練好的網絡來fine-tuning自己的網絡,預訓練的網絡一般是在ImageNet上訓練好的分類網絡。

在fine-tuning的時候:

(1)YOLOV1預訓練的時候使用224×224的輸入,檢測的時候采用的是448×448的輸入,這會導致分類切換到檢測的時候,模型需要適應圖像分辨率的改變。

(2)YOLOV2中將預訓練分成兩步:先用224×224的輸入來訓練大概160個epoch,然后再把輸入調整到448×448再訓練10個epoch,然后再與訓練好的模型上進行fine-tuning,檢測的時候用448×448就可以順利過度了。這個方法竟然提高了4%的mAP.

4、Convolutional With Anchor Boxes

這段作者簡單借鑒了Fast RCNN的做法,引入anchor.

YOLOV2主要做了下面的改變:

a. 刪除了全鏈接層和最后一個pooling層,使得最后的卷積層可以有更高的分辨率。

b. 縮減網絡,用416×416的輸入代替448×448,這樣做是希望得到的特征圖都是奇數大小的寬和高,奇數大小的寬和高會使得每個特征圖在划分cell的時候只有一個中心cell,因為大的目標一般會占據圖像的中心,所以希望用一個中心cell去預測,而不是四個中心cell。

YOLOV1中將輸入圖像分成7×7的網格,每個網格預測2個bounding box,一共只有7×7×2=98個box.

YOLOV2中引入anchor boxes,輸出feature map大小為13×13,每個cell有5個anchor box預測得到5個bounding box,一共有13×13×5=845個box。增加box的數量是為了提高目標的定位准確率。

5、Dimension clusters

作者說它們試圖把anchor box用在YOLO的時候遇到了兩個issues.

(1)Faster R-CNN中的anchor box的大小和比例是按照經驗來設定的(hand picked),然后在訓練的時候調整anchor box的尺寸。

作者想的是不是可以通過一定的方式事先先確定這樣的候選框呢,最終作者采用了k-means方法,但是如果用標准的K-means(歐式距離)的話會導致大的box會比小的box獲得更大的誤差,更准確的方式是使用IOU來算,所以作者定義了IOU距離,按照IOU越高距離越小的需求,很容易寫出這樣的公式:

d(box,centroid) = 1- IOU(box, centroid)

綜合來說,隨着K的增加,平均IOU是增加的,但是為了綜合考慮模型的復雜度和找回率。最終選擇K=5。

最終實驗對比發現:

(1)采用聚類的5個box就能達到Fast-RCNN中9個box的效果。

(2)采用聚類分析得到的先驗框比手動設置的平均的IOU值更高,模型更容易訓練和學習。

6、直接位置預測

在引入錨框時,遇到第二個問題:模型不穩定,尤其是訓練早期,作者認為這種不穩定來自邊界框中心位置的預測。

基於候選框的網絡一般是通過預測相對錨框中心的偏移值來預測邊界框的中心坐標。

就會向右偏移一個錨框的寬度。所以,每一個預測的邊界框可能處於圖片中的任何位置,這就導致了模型的不穩定。

YOLOV2沿用了YOLO中的方法,預測邊界框的中心點相對於網格左上角的偏移值,每個網格有5個錨框來預測5個邊界框,每個邊界框得到5個值:

 

為了將邊界框的中心約束到當前網格中,利用sigmoid函數將tx,ty進行歸一化處理,使得模型更加穩定。通過對比實驗發現,采用維度聚類與直接位置預測比單純使用錨框的方法精度提高5%。

7、細粒度特征(Fine-Grained Features)

YOLOV2最后一層卷積層輸出是13×13的特征圖,這個分辨率對於大尺寸物體的檢測已經足夠,但對於小尺寸物體不一定奏效。越小的物體,經過層層池化,體現在最后特征圖中的可能性越小。

作者通過添加直通層(passthrough Layer)的方式將前一層高分辨率的特征圖連接到低分辨率的特征圖上:前一層的特征圖維度為26×26×512,最后一層的特征圖的維度為13×13×1024,通過直通層將26×26×512的特征圖映射到13×13×2048,然后將其與最后一層的特征圖連接為13×13×(1024+2048)的特征圖,最后在此特征上進行卷積預測。

通過添加直通層,使得YOLOV2精度提高1%。

8、多尺度訓練

由於YOLOV2去掉了全連接層,使得網絡理論上可以接收任意尺寸的輸入,這使得進行多尺度訓練變得可行。

YOLOV2共進行了5次最大值池化,即下采樣32倍,因此在進行多尺度訓練時,采用32的整數倍尺寸作為輸入尺寸,分別為:320、352、384、416、448、480、512、544、576、608。

在進行訓練時,每10個批次從上述是個尺寸中隨機選擇一個,經過這樣的訓練,相同的網絡可以預測不同分辨率的圖像。

9、新的基礎網絡(darknet-19)

YOLOV2提出一種叫做DarkNet-19的分類網絡,其對224×224的圖像做一次前向傳播需要55.8億次浮點運算,比YOLOV1中使用的卷積網絡更快,精度更高。

可以看到,網絡中使用了大量的3×3卷積,在每一次池化操作之后把數據通道數翻倍

通過上述的改進,相對於YOLO,YOLOV2在准確度和速度上都有提升,在VOC2007上的准確度從65.4%提升到78.6%,在輸入為544×544的情況下,真了為40fps,當分辨率下降到228×228時,幀率則能達到90fps.

參考:https://www.jianshu.com/p/3c3b49ef4ffc


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM