我自己理解的YOLOv1,YOLOv2,SSD

 YOLO是基於迴歸模型的目標檢測算法,具有準確率低,但是檢測速度快的特點。

YOLOv1

   下面具體介紹Yolo的UnifiedDetection過程

首先將一副圖像分爲7*7個窗格,一個窗格預測2個boundingbox (x1,y1,w1,h1,x2,y2,w2,h2),yolov2中透露了預測box是隨機初始化的。2個boundingbox的confidence score(cs1,cs2),如果預測boundingbox中有物體則confidencescore=。一個grid需要預測當前grid屬於哪種類別的概率Pr(Classi|Object)(p1,p2,…),


在test階段,可以得到每個box的類別confidence

Confidence=

IOU爲groundtruth和預測box的交集比。我理解的Pr(Object)爲預測box中有目標的概率。

最後需要預測7*7*(2*5+20)個

損失函數使用的sum-square-error,見下式。


關於損失函數的幾項設置,

1)     增加包含目標的boundingbox的權重,減少不包含目標的boundingbox的權重,

2)     計算box的loss時,大目標box和小目標的box偏離groundtruth相同的距離,小目標的loss會比較大,由此計算loss時對w和h進行開方計算。

3)     將boundingbox迴歸中預測偏移量

上式中 loss function 在只有當一個 grid cell 中存在 object 時,纔會對 classification error 進行懲罰。

上式中 lossfunction 也只有在當 box predictor 對 groundtruth box 負責的時候,纔會對 bounding box coordinate error 進行懲罰。

YOLOv2

1)將dropout層去掉,在每個卷積層添加了bach-normalization,mAP提高了2%。

2)高分辨率分類器,輸入爲高分辨率數據由224*224變爲448*448,mAP提高了4%。

3)刪除一個pooling層,得到高分辨率數據,在卷積層之後使用anchor代替全連接層,把輸入448*448轉爲416*416,這樣得到的feature map爲奇數,feature map會有一箇中心單元,物體落在中心位置的可能是比較大的,這樣可以使用一箇中心單元代替四個來預測物體。

4)anchorbox是使用K-mean聚類來確定,聚類的距離計算使用來代替歐式距離。

5)不像YOLOv1使用grid來預測每個grid屬於哪種類別的概率Pr(Classi|Object),YOLOv2預測物體類別選用anchorbox的來預測。



6) 預測box座標是延續YOLOv1預測boundingboxes相對柵格左上角的座標, 爲了確保bounding boxes的中心落在柵格中(即座標落在0到1之間),boundingbox中心送入到激活函數中來。

對於每個邊框預測5個座標值,tx、ty、tw、th、to。若單元相對圖像左上角的偏移爲(cx,cy),並且窗口的先驗寬高爲pw、ph。

7)添加一個passthrough層提高對小物體的檢測,此層將高分辨率的feature和低分辨率的feature進行信息融合,通過堆疊不同通道中相鄰的特徵而非空間位置實現融合高低分辨率的特徵,使得26×26×512的特徵圖轉換爲與原始特徵相連接的13×13×2048的特徵圖,mAP值提高了1%。

8)YOLOv2網絡只用到了卷積層和池化層,因此可以進行動態調整輸入圖像的尺寸。根據自己的要求調節精度和速度。

附上參考的blog

http://blog.csdn.net/hrsstudy/article/details/70767950

http://blog.csdn.net/u014593748/article/details/77149773

SSD

SSD比faster rcnn快,比yolov1準確率高,和yolov2相比?

SSD的原理:SSD是從基礎網絡層(basenetwork)層網絡中,

conv4(每個點有4個default box),fc7(6),conv6_2(6),conv7_2(6),conv8_2(4),conv9_2(4)後提取feature map,計算每個層featuremap的default box,每個default box,需要預測20個類別和4個offset,每個feature需要預測的爲(20+4)*k*m*n。

關於default box,default box是和fasterrcnn中的anchor box比較相似,就是一系列的預選框,每一個default box,寬度、高度、中心點計算如下:

sk爲default box的尺度,計算如下,

ar爲default box的寬高比aspectratios:{1, 2, 3,1/2,1/3},額外增加一個default box,該box的尺度爲 ,從而使每個特徵圖位置有6個默認框。

提取出defaultbox之後將groundtruth與具有最大jaccard overlap的defalult box進行匹配,則一個groundtruth box可能對應多個default box。步驟就是先計算的defalut box的jaccard overlap,然後和groundtruth進行匹配重疊大於0.5,設爲true 否則爲false。

經過matching後,很多defaultbox是負樣本,這將導致正樣本、負樣本不均衡,訓練難以收斂。因此,該論文將負樣本根據置信度進行排序,選取最高的那幾個,並且保證負樣本、正樣本的比例爲3:1。

將conv4_3,fc7,conv6_2,conv7_2,conv8_2,conv9_2中得到的正負defaultbox分別送入到各個location,confidence,default box的預測層中。

通過softmax和boundingbox進行分類和迴歸獲得各層的預測的location,confidence,default box,將各層的數據分別合併起來,計算損失函數,

confidenceloss:

localizationloss (loc) :

其中,(gcx, gcy,gw, gh)表示groundtruth box,(dcx, dcy, dw, dh)表示default box,(lcx, lcy, lw, lh)表示預測的box相對於default box的偏移量。

最後,迴歸部分的loss是希望預測的box和default box的差距儘可能跟groundtruth和default box的差距接近,這樣預測的box就能儘量和ground truth一樣。

附上參考的blog

http://blog.csdn.net/u014380165/article/details/72824889

http://blog.csdn.net/u013989576/article/details/73439202

中文翻譯的論文:http://lib.csdn.net/article/deeplearning/57860

文章是我看原論文和各個大神的博客,按照自己的理解總結的,理解如有偏差還請指正!  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章