初步總結的SSD和yolo-v3之間的一些區別。
其中的一些概念還有待充分解釋。
SSD | YOLOv3 | |
---|---|---|
Loss | Softmax loss | Logistic loss |
Feature extractor | VGG19 | Darknet-53 |
Bounding Box Prediction | direct offset with default box | offset with gird cell by sigmoid activation |
Anchor box | Different scale and aspect ratio | K-means from coco and VOC |
Small objects | Semantic value for bottom layer is not high. Worse for small objects. | Higher resolution layers have higher semantic values. Better for small objects. |
Big objects | Better. Feature map rangers from 38 * 38 to 3 * 3 ,1 * 1. | Worse. 13 * 13 feature map is the most coarse-grained. |
Data Augmentation | different sample IOU crop on original image | randomly put the scaled original image (from 0.25 to 2) on the gray canvas |
Input | resize original image to fixed size | Random multi-scale input |
FPN | no | with FPN |
SSD的loss中,不同類別的分類器是softmax,最終檢測目標的類別只能是一類。而在yolo-v3中,例如對於80類的coco數據集,對於類別進行判斷是80個logistic分類器,只要輸出大於設置的閾值,則都是物體的類別,物體同時可以屬於多類,例如一個物體同時是person和woman。
Backbone network。ssd原版的基礎網絡就是VGG19,也可以用mobile-net、resnet等。yolo-v3的基礎網絡是作者自己設計的darknet-53(因為具有53個卷積層),借鑒了resnet的shortcut層,根據作者的話,以更少的參數、更少的計算量實現了接近的效果。
Anchor box。ssd從faster-rcnn中吸收了這一思想,采用的是均勻地將不同尺寸的default box分配到不同尺度的feature map上。例如6個feature map的尺度,default box的大小從20%到90%的占比,同時有aspect_ratios = [[2], [2, 3], [2, 3], [2, 3], [2], [2]] ,最終可以計算出不同default box大小。而yolo-v3延續了yolo-v2的方法:從coco數據集中對bouding box 的(width, height)進行聚類,作者聚出9類,每類中心點取出作為一個box_size, 將每三個box_size划分給一個feature map。例如總共有(10,13), (16,30), (33,23), (30,61), (62,45), (59,119), (116,90), (156,198), (373,326)共9組w,h, 作者將后三個(116,90), (156,198), (373,326)作為13 * 13 的gird cell上的anchor box size。
圖片輸入。yolo-v3將輸入圖片映射到第一層feature map的固定比例是32。對於輸入為416 * 416的圖片,第一層feature map 大小為13 * 13。但是yolo-v3支持從300到600的所有32的倍數的輸入。例如輸入圖片為320 * 320,這樣第一層feature map就為10 * 10,在這樣的gird cell中同樣可以進行predict和match groudtruth。
Bounding Box 的預測方法。在不同的gird cell上,SSD預測出每個box相對於default box的位置偏移和寬高值。yolo-v3的作者覺得這樣剛開始訓練的時候,預測會很不穩定。因為位置偏移值在float的范圍內都有可能,出現一個很大的值的話,位置都超出圖片范圍了,都是完全無效的預測了。所以yolov3的作者對於這位置偏移值都再做一個sigmoid激活,將范圍縮為0-1 。b_x和b_y的值在(cell_x_loc, cell_x_loc+1), (cell_y_loc, cell_y_loc+1)之間波動。
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-095d4a0b23.css" rel="stylesheet">
</div>
yolov3為什么比ssd好.
不僅僅因為YOLO V3引入FPN結構,同時它的檢測層由三級feature layers融合,而SSD的六個特征金字塔層全部來自於FCN的最后一層,其實也就是一級特征再做細化,明顯一級feature map的特征容量肯定要弱於三級,尤其是淺層包含的大量小物體特征。