[讀論文]Receptive Field Block Net
現在的高性能的檢測演算法是基於深的CNN backbone,像ResNet-101 和 Inception,得益於它們的特徵表達能力,但是它們的計算量是比較大的。而有些輕量級的模型的精度又不夠。作者提出了一個快速並且準確的檢測演算法(用了輕量又好用的特徵)。作者是受Receptive Fields(人類視覺系統里的知識),提出了RF Block:考慮RFs的大小(size)和離心率(eccentricity),以此增強辨別能力(discriminability)和魯棒性(robustness). 作者進一步將其組合到SSD上,形成了RFB Net. 實驗在VOC和COCO上進行,它擁有很深網路的性能並且能做到實時。代碼:
ruinmessi/RFBNet本文不想過多介紹related works,直接說怎麼做RFB,因為它simple並且work。
RFB 用了不同kernel的多分支池化( multi-branch pooling with varying kernels),這些參數的選擇是根據 RFs 的不同sizes的,用了dilated convolution 來控制離心率eccentricities, 並且reshapes 到最後的表達形式。如下圖所示:
作者說了自己的貢獻是:
- 提出RFB模擬人類RFs的結構(size 和eccentricity),增強了輕量級 CNN的深度特徵;
- 提出將SSD的head替換為RFB,大大漲點,並且能夠控制其計算量;
- RFB Net在VOC COCO上面取得state-of-the-art,並且速度很快,並且與MobileNet結合也有泛化能力;
有一點我覺得比較make sense的: Inception block 用了多支路多個核大小(multiple branches with different kernel sizes)來得到多尺度信息(multi-scale information),但是這些核都是在同一個中心採樣的,所以需要更大的核去得到更多信息和細節。這與light head那篇的large kernel生成強表達能力的特徵的想法還是接近的,不過本文的故事性要更強一些。
Method
Visual Cortex Revisit
論文寫到這裡就要給大家說一說人類視覺的東西了。磁共振成像[讀到這裡我嚇哭了]functional Magnetic Resonance Imaging (fMRI) 顯示人類大腦在millimeter
解析度的時候的活動性,RF 是很重要的sensory。下面這句話我不敢翻譯了:Since human neuroscience instruments often observe the pooled responses of many neurons,hese models are thus commonly called pRF models.Based on fMRI and
pRF modeling,it is possible to investigate the relation across many visual field maps in the cortex.At each cortical map, researchers find a positive correlation between pRF size and eccentricity,while the coefficient of correlation varies in visual field maps.
好了,大概意思就是pRF 的size和eccentricity比較符合人類視覺特點。
Receptive Field Block
RFB是一個多支路的卷積塊。它的內部結構可以分為兩個:多支路用不同的卷積核的卷積層、後面跟著擴大池化或卷積(dilated).前者是Inception形式,模仿pRFs的多個size,後者表達pRF 形狀(size) 和 離心率(eccentricity)的關係。
Multi-branch convolution layer
作者在每個支路用了bottleneck結構:1 1 conv,用來減少層數;用兩個堆疊的3 3替換 來減少參數量和加深層數;同樣的原因作者組合 和 來替換 ;作者也用了resnet的做法shortcut。
Dilated pooling or convolution layer
這個想法首先在Deeplab中被提出,被稱作astrous convolution。這種做法可以生成更高解析度的特徵:在更大的區域裡面獲得context信息並且保持一定的參數量.這裡用dilated conv來模擬離心率。最後將所有的支路的特徵concatenate到一起,融合一起送到一個spatial pooling 或者convolution里。
RFB Net Detection Architecture
看一下網路結構
很顯然就是基於SSD的,較淺層特徵通過RFB之後再進行之後的框的回歸和分類。
作者提出了他們的Lightweight backbone,[VGG16 ],是在Imagenet上面預訓練的,不過做了一些修改,fc6 和 fc7轉化為卷積層,pool5從2×2-s2變成3×3-s1. 用dilated convolution
來fill holes.dropout 和fc8被去掉了。
RFB on multi-scale feature maps
跟SSD相比,淺層卷積(相對大解析度的特徵層)用RBF模塊換上去。
Experiments
VOC實驗結果,又快點又高
Ablation Study
RFB module
作者也用相似的結構換RFB來做ablation study,發現還是rfb的組合最好:rfb-s+prior+dilated conv.
Prior指的是SSD的default boxes.在淺層加更多default boxes能漲一些點。
跟其他的工作對比:
接下來是Microsoft COCO的數據集:
Discussion
RFB Net300是圖表中精度最高的實時檢測演算法。關於其他的lightweight backbone:MobileNet, DarkNet, and ShuffleNet需要做進一步的嘗試。作者也試了Training from scratch不太行。
Conclusion
作者提出了快速有強力的檢測方法,主要用了Receptive Field Block模擬人類視覺系統RF的結果。RFB 可以獲得size和eccentricity之間的關係,並且生成更有鑒別能力和魯棒的特徵。總是就是又快又猛。
PS,最近在自己數據集上面訓了一把,效果不錯。
推薦閱讀:
TAG:深度學習(DeepLearning) | 目標檢測 | 人工智慧 |