天天看點

yolov3損失函數_YOLOv3: An Incremental Improvement解讀

入門小白,若博文有不妥之處,望加以指點,筆者一定及時修正

YOLOV1解讀:(https://blog.csdn.net/qq_33948796/article/details/88538940) YOLOV2解讀:(https://blog.csdn.net/qq_33948796/article/details/88561542)

目錄:

①前言

②YOLOV3論文翻譯

1、引言

2、YOLOV3内容

2.1 Bounding Box Prediction

2.2 類别預測

2.3 多尺度預測

2.4 網絡結構

③ 總結

④主要參考

正文開始:

① 前言

首先介紹一下YOLO整個系列的算法思路:通過卷積神經網絡對 input image 提取特征,很多層,每個層都得到一定尺寸的 feature map。比如YOLOV2輸入 416x416 分辨率的時候,最後一層的輸出是 416/32=13,13X13。然後将輸入圖像分成 13x13 個網絡格子。然後如果 ground truth中的某個目标的中心點落在哪個格子裡面,該格子就負責預測這個目标。每個 grid cell 預測的 bounding boxes的數目的一定的(YOLOV1的數目是2,YOLOV2的數目是5,YOLOV3的數目是3,但是這幾個 bounding boxes 的初始大小不一樣)。而固定數量的 bounding boxes裡面哪一個才真正的來預測目标呢?論文中是這樣處理的:這幾個bounding boxes 裡面與 ground truth 的 IOU最大的那個才是真正用來預測該 object。一個次元是最後的特征圖,如 YOLOV2的 13x13,還有一個次元是深度,是 B*(5+C)。這邊 B 是每個格子的預測框數,5 代表框的坐标和置信度,C表示預測的類别數。YOLOV1,YOLOV2,YOLOV3裡面的 B 和 C是不一樣的,詳細可以參考我前面的部落格。 這邊給出三個網絡結構圖,主要參考:這位大牛的。

YOLOV1的網絡結構圖

yolov3損失函數_YOLOv3: An Incremental Improvement解讀
YOLOV2的網絡結構圖:
yolov3損失函數_YOLOv3: An Incremental Improvement解讀
YOLOV3的網絡結構圖

yolov3損失函數_YOLOv3: An Incremental Improvement解讀

② YOLOV3論文翻譯

摘要

emmmmmm.....不重要,跳!

1、引言

emmmmmm....也無關重要,再跳!

2、YOLOV3内容

2.1 Bounding Box Prediction

YOLOV2使用次元聚類作為Anchor boxes來源來預測邊界框(YOLOV2論文提及了可以人為地設定 Anchor boxes 的面積和大小,後面介紹了聚類可以給更有效的開始,詳細可以參考我的部落格)。

YOLOV3跟YOLOV2一樣,還是使用次元聚類進行選擇 Anchor boxes。同時,YOLOV3使用 Logistic regression 來預測每個邊界框裡面對象的分數,用來區分對象和背景。當某個 bounding box 與 ground truth 的 IOU大于其他所有的 bounding box時,target 值賦1;如果某個 bounding box 不是 IOU最大的那個,但是 IOU 也大于了某個門檻值,那麼忽略這個框,既不懲罰也不獎勵。對每個ground truth隻配置設定一個最好的 bounding box 與其對應。如果某個 bounding box 沒有與任何一個 ground truth 對應,那麼這個框對邊框位置大小的回歸和類别預測沒有幫助,隻會懲罰他的 objects,試圖減小他的 confidence。

2.2 類别預測

YOLOV3不使用 softmax 對每個框進行分類,因為 softmax 使每個框配置設定一個類别(得分最高的一個)。而 很多東西是重疊的标簽,比如預測的是女生,也屬于人這一個類别,屬于多标簽問題,而 softmax 不适合多标簽分類。因為 softmax強加一個假設,使得每個框隻包含一個類别。邏輯回歸層主要用到sigmoid函數,該函數可以将輸入限制在0到1的範圍内,是以當一張圖像經過特征提取後的某一類輸出經過sigmoid函數限制後如果大于0.5,就表示屬于該類。 是以 softmax 可被獨立的多個 Logistic 分類器代替,且準确率不會下降。分類損失使用二進制交叉熵損失函數。

2.3 多尺度預測

這一部分主要參考:這位大牛的。 YOLOV2裡面有一個層叫做:passthrough layer 。最後的 feature map 的 size 是 13x13。這個層的作用:将前一個 pooling 層和本層進行 concat,類似于 ResNet,目的也是加強對小目标的檢測。

而在YOLOV3中,采用了 upsample 和融合,YOLOV3裡面融合了3個 scale,三個尺寸為:13x13,26x26,52x52。

在多個feature map 做檢測,

yolov3損失函數_YOLOv3: An Incremental Improvement解讀

結合上圖看,卷積網絡在79層後,經過下方幾個黃色的卷積層得到一種尺度的檢測結果。相比輸入圖像,這裡用于檢測的特征圖有32倍的下采樣。比如輸入是 416x416 的話,這裡的特征圖就是 13x13 了。由于

下采樣倍數高,這裡特征圖的感受野比較大,是以适合檢測圖像中尺寸比較大的對象。 為了實作細粒度的檢測,第79層的特征圖又開始作上采樣(從79層往右開始上采樣卷積),然後與第61層特征圖融合(Concatenation),這樣得到第91層較細粒度的特征圖,同樣經過幾個卷積層後得到相對輸入圖像16倍下采樣的特征圖。它具有中等尺度的感受野,适合檢測中等尺度的對象。 最後,第91層特征圖再次上采樣,并與第36層特征圖融合(Concatenation),最後得到相對輸入圖像8倍下采樣的特征圖。它的感受野最小,适合檢測小尺寸的對象。

這篇部落格裡面網絡結構圖也很通俗易懂,大牛叙述的很棒,參考連結在下面:YOLOV3結構圖。

YOLOV3為每個特征圖聚類3種尺寸的先驗框,那麼一共有9個先驗框。下面簡單的看一下9種先驗框的尺寸。

yolov3損失函數_YOLOv3: An Incremental Improvement解讀
yolov3損失函數_YOLOv3: An Incremental Improvement解讀
yolov3損失函數_YOLOv3: An Incremental Improvement解讀

紅色的為格子,黃色的為真實框,藍色的為聚類的先驗框。

2.4 網絡結構

Darknet-53 ,感覺隻有 Debug 時候才會了解! 餘下的跳過。。。。。

③ 總結

1、網絡結構使用了類似的金字塔網絡;

2、用 Logistic 代替 softmax ;

3、網絡結構;

4、有了YOLOV3,不用提YOLOV2,和YOLOV1。但是還是需要從V1,V2一步一步來理清!

5、YOLOV3的不足,當IOU > 0.5時,mAP後勁不足!

嘿!最近在調試YOLOV3的代碼,哎,估計個把月才能弄懂源碼,科研真難受!github上面見,敬請期待!

④主要參考:

1、https://zhuanlan.zhihu.com/p/47575929

2、https://zhuanlan.zhihu.com/p/46691043

3、https://blog.csdn.net/u014380165/article/details/80202337

4、https://www.jianshu.com/p/d13ae1055302

5、YOLO官網:YOLO: Real-Time Object Detection

6、論文連結:https://pjreddie.com/media/files/papers/YOLOv3.pdf

7、Youtube:https://www.youtube.com/watch?v=MPU2HistivI

8、知乎話題:如何評價YOLOv3: An Incremental Improvement?

繼續閱讀