AlignDet特征對齊:one-stage檢測算法的改進


當前針對目標檢測算法有兩種思路(暫時不考慮anchor free),其中一種是輕量化two-stage檢測算法(如thundernet),另外一種就是

提高one-stage算法的精度,如使用更好的特征(特征融合、多尺度特征FPN等),包括基於SSD改進的refinedet,基於FPN的RetinaNet等等。

AlignDet就是在RefinDet的基礎上的進一步工作,它指出了one-stage和two-stage的精度差距的本質問題--特征對齊問題(其實這個問題在19年的1月份

RefineDet的作者就在一個講座里指出了,不知道為啥讓圖森的人搶先了。另外似乎跟RepPoints里的basemodel一樣,

在知乎引發了熱議https://www.zhihu.com/question/338959309)。

 

1、多尺度特征和One-stage

在two-stage中,通過roipooling或者roialign可以解決特征的對齊問題。在One-stage中,可以通過FPN來緩解特征的對齊問題--FPN中,不同尺度的

bbox,會對應不同尺度的feature。作者做了一組實驗,分別在faster rcnn和retinaNet中,去除FPN,one-stage精度下降的更厲害。

 

 

 另外關於特征對齊,可參考上述知乎鏈接里kwduan的回答。

2、RoIConv

   思路:由anchor回歸得到learned  anchor之后,根據stride算出其對應特征圖的offsets,

然后dcn用這個offsets,去卷積learned anchor 對應的feature,這樣就將特征對齊了。將

對齊后的特征再次進行分類和回歸。(疑問:既然已經知道了learned anchor了,為什么

還要算offsets,再去用dcn呢?直接用一個conv不就可以了嗎?)

3、AlignDet

如圖,個人感覺這已經不是one stage了。其中DPM可以是RPN,SSD等,這部分就是一個One-stage。

經過RoiConv去做特征對齊,再去做分類和回歸。

(想法:和two-stage相比,這里采用了全卷積網絡,差別就剩沒有耗時的roi-pooling了,這也是AlignDet的速度仍然要比two-stage快的原因。)

 4、實驗

     (1)只使用單一尺度,可以看到RoIConv高了5個點,還是挺牛逼的。

 

 

 

  (2)在多尺度FPN上增加RoiConv仍然可以提高。(疑問:不加ADM的AlignDet,不就是DPM略有變化的RetinaNet嗎?效果為啥差別這么大?)

 

 

 (3)不同階段采用不同的iou來挑選樣本(類似與cascade rcnn)。在dpm階段使用較低的iou,在adm階段使用較高的iou,整體看

效果最好。

 

(4) RoiConv的設計。越大越好,同時為了速度考慮,在使用7*7RoiConv的同時,p3的RoiConv使用3*3(是為了在paper里速度比RetinaNet好看嗎?)

 

 

 

 想法

總的來看還是一篇不錯的paper,對特征對齊給出了一個不錯的解決方法,可惜有些細節還有疑問,目前還沒有開源。

one-stage和two-stage現在的界限越來越模糊了,此前我曾移植過mobilenet-refinedet,速度並不理想,不知道輕量級的aligndet效果怎么樣

,還是有些期待的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM