1. 程式人生 > >Speed/accuracy trade-offs for modern convolutional object detectors

Speed/accuracy trade-offs for modern convolutional object detectors

1、Motivation

這篇文章通過大量的實驗,主要權衡了三種被稱為“元結構”(meta-architectures)的主流,教我們如何選擇速度和精度滿足要求的檢測器。充分的對比了Faster RCNN、RFCN和SSD優缺點,並且實驗的設計非常系統。

2、作者做了哪些實驗

<1> 首先作者在TensorFlow裡復現了Faster RCNN、RFCN和SSD三種方法,在統一框架下進行比較。

<2> Feature extractor的影響。實驗的不同的主幹網路:VGG16、Resnet-101、Inception v2、Inception v3、Inception Resnet(v2)和MobileNet。

<3>-<9>

3、元結構

Single Shot Detector (SSD):文中將SSD定義為使用單個前饋神經網路來直接預測類別和 anchor offsets,並不要求stage per-proposal分類操作。Multibox和RPN都使用了這一方法來預測類不可知(class-agnostic)的proposals。注:SSD中直接得出分類和anchor offsets
Faster R-CNN:detection分兩步走。第一步產生region proposals,中間層的一些特徵(例如VGG16中的conv5)被用於預測box proposals。第二步利用這些box proposals在同一層來裁剪特徵並將它們送入特徵提取器的剩下幾層(例如fc6和fc7)來獲得所屬類別並修正proposals。
注:Faster R-CNN中需要利用proposal generator先得出分類和proposals然後將box proposals再送回預測出它們的中間層進行對特徵的crop,最後送入fc6和fc7(圖中用藍色矩形表示),得出最終結果(兩個藍色小矩形)
R-FCN:與Faster R-CNN不同的是,R-FCN是在產生預測region proposals的那一層的前面一層對特徵進行裁剪而非與預測同一層。這樣做的好處在於每個區域所需的計算總量實現最小化。注:Box Classifier這一步中box proposals被送回到特徵層的最後一層(也就是圖中三個藍色矩形後面的那一層),緊接著就是預測層了(藍色小矩形)

文中用TensorFlow重新設計了三種結構的流程。這一塊包括 Architectural configuration,Loss function configuration,Input size configuration,Training,hyperparameter tuning, Benchmarking procedure,Model Details等。

4、實驗及結論

<1>Accurancy VS time

從上圖可以看出SSD,R-FCN在速度上要遠遠超過Faster R-CNN,但是在精度上Faster R-CNN領先,R-FCN緊隨其後。但是Faster R-CNN可以通過設定region proposal來降低處理速度,如Faster R-CNN w/ResNet 50 poposal。

速度選擇:SSD,R-FCN,Faster R-CNN w/Resnet 101

精度選擇:Faster R-CNN

<2>Feature extractor

從下圖可以看到,SSD對Feature extractor並不是很敏感,Faster RCNN和RFCN對特徵的好壞很敏感。我們還是可以看出ResNet-101的效果比其他的略好。

                                                                    

<2>、輸入尺寸的影響

作者給出了下圖,但是我覺得這張圖很亂,並沒有清楚展示出我想知道的結果。作者得到的結論是輸入尺寸增大會提升map,速度會變慢等。我想要比較的是:當輸入尺寸不斷增加,SSD效果的提升和Faster RCNN系列方法的提升哪個大,即輸入尺寸的提升對哪種方法的提升更大。作者做的實驗也只是輸入尺寸為300和600的對比,我覺得還可以試一試更大一點輸入尺寸的效果。


<3> 目標尺寸的影響

從下圖可以看出,SSD在小目標上的表現實在是太差了,但是大目標上的表現和two stage的方法還是差不多的,甚至在VGG16、Inception v2和MobileNet上更好。

這裡寫圖片描述

從上圖可以看出,三種基礎架構對於大目標檢測準確率均比較高,總體來說SSD在大目標檢測上表現的比較好,但是在小目標檢測上均比較低,SSD最低。

大目標:首選SSD。Faster R-CNN也可以。

小目標:Faster R-CNN,R-FCN

<4> 圖片大小的影響

比較了解析度對於檢測器的影響,從圖可以看出,影象解析度增大後,Faster R-CNN與R-FCN檢測率均提高,而SSD沒有太大改變。


<5>、proposals的數量

從圖(a)可以看出,當proposal 設定為10的時候mAP離最高的mAP:35也相差了不到5個點(proposal=300),最佳的是在proposal=50的情況。圖(b)也表現出了同樣的trade-off。


<6>、Flops 

圖7再次印證了SSD的處理速度要比其它兩個架構的快很多。從圖8看出當FLOPs對等的情況下Inception與MobilNet這兩種特徵提取器處理速度要遠比其它提取器要高。



<7> Memory

從圖9圖10可以看出,MobileNet架構與Inception架構相比較其它幾個,同等條件下需要的記憶體較少,尤其是MobileNet架構。



<8>Good localization at .75 IOU means good localization at all IOUthresholds

從圖11看出,當檢測器在較大的IOU(.75)上表現出較差的效能的時候,往往在小的IOU(.5)上表現出同樣的效能。這兩個IOU較好的擬合了IOU在0.5~0.95上的情況,並且在IOU=0.75的時候曲線表現的稍微緊湊些。


<9> ensemble

作者顯式的選擇了一系列差異較大的模型,如果兩個模型的category-wise AP vectors的cosine距離較大則認為這兩個模型相似。

這裡寫圖片描述

4、一些值得注意的實驗細節

<1> 作者在實施Resnet和Inception Resnet時使用了atrous convolution來增大解析度。更進一步,作者還測試了把conv4_3的stride也將為1,效果也有提升,但是速度也會受到影響。

<2> 對於SSD的額外層,作者使用truncated normal distribution with a standard deviation of σ = .03進行初始化。

<3> 對於SSD,作者沒有使用SGD,而是用了RMSProp。