部分檢測算法對比(Faster R-CNN, R-FCN, SSD, FPN, RetinaNet and YOLOv3)

聲明:筆者轉載文章僅爲學習研究和個人方便查閱,如有侵權請聯繫作者刪除博文,謝謝
文章轉載自 最全最先進的檢測算法對比Faster R-CNN, R-FCN, SSD, FPN, RetinaNet and YOLOv3

很難衡量一個檢測算法的好壞,因爲除了算法本身的思路之外,還有許多因素影響它的速度和精度,比如:

  • 特徵提取網絡(VGG, ResNet, Inception, MobileNet);
  • 輸出的步長,越大分類數目越多,相應的速度也會受影響;
  • IOU的評判方式;
  • NMS的閾值;
  • 難樣本挖掘的比率(正樣本和負樣本的比率);
  • 生成的proposal的數目(不同的方法輸出是不同的);
  • bbox的編碼方式,是預測offset還是相對位置;
  • 數據預處理的數據增廣方法;
  • 用哪個特徵層來做檢測;
  • 定位誤差函數的實現方法;
  • 不同的框架;
  • 訓練時候的不同設置參數,如batch_size, 輸入圖片大小,學習率,學習衰減率等因素;

爲了對比不同的算法,可以不考慮上述的所有影響因素,直接對論文結果評測,應該能大體看出不同方法的速度差異。

在這裏插入圖片描述
上圖是一個所有方法的預覽。從圖中可以看出RFCN的準確度是最高的。

在這裏插入圖片描述
上圖可以看出,速度最快的還是yolo和SSD一體化的方法。

在這裏插入圖片描述
這是在ms-coco數據集上的測試效果,從效果可以看出,RetinaNet 在mAP效果是最好的。其中Faster-RCNN改用Resnet作爲特徵抽取網絡準確率有較大的提升。

最後是Google做的一個research,在TensorFlow上統一的實現了所有的檢測算法,yolo沒有包含在內。最終的測試結果可以表示爲:
在這裏插入圖片描述
從上面可以大致的看出,Faster-RCNN的準確度更加精確,而RFCN和SSD更快。

上述只是一個預覽,但是除了這些之外,我們還需要考慮一些更加細化的因素。

不同的特徵抽取網絡

特徵抽取網絡不通,最終的結果也不同。簡單來說,一個更加複雜的特徵抽取網絡可以大大的提高Faster-RCNN和RFCN的精確度,但是對於SSD,更好的特徵抽取網絡對結果影響不大,所以你看SSD+MobileNet也不會太大的影響結果。從這個圖可以看得很清楚:
在這裏插入圖片描述

目標物體的大小

對於大物體,SSD即使使用一個較弱的特徵抽取器也可以獲取較好的精確度。但在小物體上SSD的表現結果非常不好。

在這裏插入圖片描述
具體來看,SSD在一張圖片裏面就經常漏檢測小物體,比如:

在這裏插入圖片描述

Proposal的數目

不同的Proposal數目會影響檢測器的速度和精度。這個很重要,很多人想加速Faaster-RCNN但是不知道從何下手,顯然這裏是一個很好的切入點。
將Proposal的數目從300削減到50,速度可以提高3倍,但是精度僅僅降低4%,可以說非常值了。我們從這張圖可以看得很清楚:

在這裏插入圖片描述
最終我們可以得到一個很科學的結果:

1.最高精度

使用Faster-RCNN毫無疑問,使用Inception ResNet作爲特徵抽取網絡,但是速度是一張圖片1s;
還有一種方法是一種叫做集成的動態選擇模型的方法(這個你就不要追求速度了);

2.最快

SSD+MobileNet是速度最快的,但是小目標檢測效果差;

3.平衡
如果既要保證精度又要保持速度,採用Faster-RCNN將proposla的數目減少到50,同時還能夠達到RFCN和SSD的速度,但mAP更優。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章