天天看點

目标檢測:YOLOV3論文解讀一、yolov3論文解讀

一、yolov3論文解讀

論文連接配接位址: 點選打開連結

1. yolov3實作的idea

1.1 邊界框的預測(Bounding Box Prediction)

與之前yolo版本一樣,yolov3的anchor boxes也是通過聚類的方法得到的。yolov3對每個bounding box預測四個坐标值(tx, ty, tw, th),對于預測的cell(一幅圖劃分成S×S個網格cell)根據圖像左上角的偏移(cx, cy),以及之前得到bounding box的寬和高pw, ph可以對bounding box按如下的方式進行預測:
目标檢測:YOLOV3論文解讀一、yolov3論文解讀

在訓練這幾個坐标值的時候采用了sum of squared error loss(平方和距離誤差損失),因為這種方式的誤差可以很快的計算出來。

yolov3對每個bounding box通過邏輯回歸預測一個物體的得分,如果預測的這個bounding box與真實的邊框值大部分重合且比其他所有預測的要好,那麼這個值就為1.如果overlap沒有達到一個門檻值(yolov3中這裡設定的門檻值是0.5),那麼這個預測的bounding box将會被忽略,也就是會顯示成沒有損失值。

目标檢測:YOLOV3論文解讀一、yolov3論文解讀
說一下我在應用中的事:yolov3它的訓練輪數是50200,我的資料量比較小,是以疊代到900輪的時候,每一輪訓練完顯示的損失值都是nan,其原因可能就是上邊因為門檻值他直接忽略掉了這個bounding box導緻沒有loss,之前的版本我使用時貌似不是這樣的。

1.2 分類(Class Prediction)

每個框預測分類,bounding box使用多标簽分類(multi-label classification)。論文中說沒有使用softmax分類,隻是使用了簡單的邏輯回歸進行分類,采用的二值交叉熵損失(binary cross-entropy loss)。

1.3 跨尺度的預測(Predictions Across Scales)

yolov3在三個(num=3)不同的尺度預測boxes,yolov3使用的特征提取模型通過FPN(feature pyramid network)網絡上進行改變,最後預測得到一個3-d tensor,包含bounding box資訊,對象資訊以及多少個類的預測資訊。論文給出是這樣子的:(N×N×[3*(4+1+80)])這裡的80即是80類物體。

FPN結構如下:

目标檢測:YOLOV3論文解讀一、yolov3論文解讀

yolov3使用這樣的方式使得模型可以擷取到更多的語義資訊,模型得到了更好的表現。

yolov3依然使用k-Means聚類來得到bounding box的先驗,選擇9個簇以及3個尺度,然後将這9個簇均勻的分布在這幾個尺度上。

1.4 特征提取(Feature Extractor)

yolov3的特征提取模型是一個雜交的模型,它使用了yolov2,Darknet-19以及Resnet,這個模型使用了很多有良好表現的3*3和1*1的卷積層,也在後邊增加了一些shortcut connection結構。最終他有53個卷積層,是以作者也把它們叫成Darknet-53。它們的結構是這樣的:
目标檢測:YOLOV3論文解讀一、yolov3論文解讀
最後論文說明這個模型的優良之後還說了一句,Resnet模型後邊有太多層并且不是很有效。抱歉,我可是KaiMing的迷弟,哈哈,說的委婉一點多好。

1.5 訓練

最後論文說它們訓練的時候使用了很多方法,諸如資料增強,BN等等,具體怎麼訓練的給出了一個引用,在論文的【12】可以找到。

2. yolov3做了些什麼?

就說yolov2有個毛病就是對小物體的檢測不敏感,關鍵在于它那個cell預測時導緻的毛病,而如今增加了多尺度預測之後yolov3在對小物體檢測友善有了好轉,但是現在的毛病是對中、大size的物體表現的不是那麼好,這還得需要我們去努力做。然而在論文中yolov3各種表示的還行。

3. yolov3那些嘗試過并沒有提升表現的想法

① 想對Anchor box的x,y偏移使用線性激活方式做一個對box寬高倍數的預測,結果發現沒有好的表現并且是模型不穩定。

②對anchor box的x, y使用線性的預測,而不是使用邏輯回歸,實驗結果發現這樣做使他們模型的mAP掉了。

③使用Focal loss,測試結果還是掉mAP。(想法的确挺好的)

4. yolov3測試表現的一些截圖

目标檢測:YOLOV3論文解讀一、yolov3論文解讀

二、yolov3應用到自己的項目中

訓練自己資料之後檢測的結果:
目标檢測:YOLOV3論文解讀一、yolov3論文解讀

如何使用yolov3訓練自己的資料,如何做出修改,這裡我給出一個教程文檔,這個文檔一步步的訓示如何去制作一個VOC格式的資料集去跑yolov,需要注意的是yolov3模型結構有所改變,這個文檔在資料集的制作上沒問題,但是在說如何訓練yolo?它給出的是訓練yolov2的教程,但是大差不差,可以通過上面論文解讀自己修改yolov3裡邊的參數去訓練自己的資料,就當做是一個練習吧!

教程位址:點選打開連結

繼續閱讀