如何評價Sparse R-CNN,目標檢測未來會如何發展?
https://msc.berkeley.edu/research/autonomous-vehicle/sparse_rcnn.pdf?msc.berkeley.edu
detr最近的進展我都不是很熟,跟做ocr的小夥伴聊了下,他說paper的幾個點在這條線上上看會比較順,我完全不懂,期待有大佬給一些新的視角解讀吧。
昨晚看完直接失眠了,躺在牀上捋清楚了幾個細節,比如學出來的anchor為啥不會很相似,為什麼這樣能去掉nms之類,越想越覺得太秒了
由於dense的anchor設計加上cnn feature map的平滑性質,導致我們在正負樣本劃分不得不使用一對多的形式以及使用nms這樣的後處理,這兩個東西很蛋疼,從而從去年開始導致了一系列做正負樣本劃分以及設計loss適應nms的工作。
我之前跟mentor討論,他堅信cnn上也能像detr一樣去掉nms,但是我就勸他說不用position encoding 這樣的東西,cnn這個平滑性好像必須有這麼個設計,之後的嘗試也完全走偏了,這個認知在dense anchor的基礎上也是對的,但是之後就往怎麼增加feature map高頻上做了,完全沒意識到dense anchor有什麼問題,當然也承認,認識到我也一點不敢想能做成sparse的形式。
其實能想到現在檢測幾個令人頭疼的問題是出在dense的anchor已經很不容易了,之後detr可能啟發了sparse 能做work,最近幾年dynamics 的生成運算參數的工作(condinst之類)為sparse的work奠定了基礎,感覺真的是一個剛剛好的時候。
真的太強了,相比一些想出來感覺不快點做就會被別人做的東西,這個就是那種根本想不到的東西。
將 two stage anchor detector 升級為了 two stage set prediction detector.
1、Learnable proposal box 可以看作 RPN,然後用ROIAlign提取ROI feature。
2、Learnable proposal feature 可以看作是Detr中的object query,相當於anchor。
3、ROI feature 和 Learnable proposal feature 用 optimal bipartite matching做匹配,而不是沿用IOU做匹配。
4、Detr中使用了 transformer讓每個object query都和全局的特徵圖交互,而Sparse R-CNN 通過Learnable proposal box生成了sparse candidates和sparse feature,這樣就避免了和全局特徵的交互。
5、從工業部署角度看,對於端側,sparse detector並不是很友好,dense detecor更直接而且網路也能夠輕量。
最後,Set Prediction detector也開始分為兩類了:
- One-stage:Detr
- Two-stage:Sparse R-CNN
看起來set prediction挺香的,只不過,set prediction的檢測器,同等測試條件下還是anchor/anchor-free的檢測器在精度上差一點,和Sparse R-CNN作者也討論了下,set prediction還有優化的空間。
set prediction的檢測器很簡潔,部署也很方便,如果把精度和速度肝上去了,就可以造福工業界了。
本文解讀:
深度眸:Sparse R-CNN:簡化版fast rcnn?zhuanlan.zhihu.com特意把論文和代碼都看了,結合對relation和relation++、detr的瞭解,說下粗略的感受吧。
Sparse R-CNN確實做的很好,等的就是這樣的工作!極致簡單,不需要複雜anchor先驗設置、不需要nms、不需要RPN,將整個faster rcnn的pipeline變得非常簡潔。
論文核心思想應該是借鑒了上述三篇論文做法,簡單來說是核心組件是:
- 可學習proposal boxes
- 可學習proposal feature
上述兩個組件中最重要的是可學習proposal feature,而可學習proposal boxes只是為了提出roi而已,不然RCNN咋弄?而可學習proposal feature和detr的object query作用非常類似,都是提供全局注意力或者說提供實例級別的統計信息,由於維度比較高,其可以嵌入的信息很多,例如物體姿態或者shape。強烈建議作者在預測時候進行可視化proposal feature,應該可以看出很多東西
對應到relation論文,那麼proposal boxes就是常說的幾何特徵,而proposal feature就是外觀特徵。我覺得沒啥本質區別,因為都是自發學的,學到最後其實可視化看看都一樣應該。
至於roi特徵和proposal feature的交互過程非常重要,雖然論文說具體細節不重要,這個交叉注意力計算過程和transformer裡面的做法類似,作者成為動態head,確實有動態的意味。
最後的loss,也是參考了detr裡面的先雙邊匹配,然後再計算loss的做法,使得最後輸出的預測結果不需要nms。
其他的迭代refine思想應該是為了提點而已,和cascade rcnn做法類似。
以上就是全部核心知識點了。可以發現極其簡單,只要你熟悉了上述所提的3篇論文就能夠理解了。
至於未來嘛,transformer思想還是很值得期待的,雖然本文好像沒有引入(但是我覺得思想還是引入了)。如果哪天將CNN徹底拋棄,僅僅依靠transformer或者類似注意力思想統治了CV領域,那也不用奇怪!
代碼還沒有跑過,暫時不知道裡面有沒有啥坑!
如果對transformer和detr不熟悉的,可以看我的文章:
深度眸:3W字長文帶你輕鬆入門視覺transformer?zhuanlan.zhihu.com由於 Sparse RCNN 有受到 DETR 啟發, 所以先分析 DETR.
我覺得 DETR 的成功有兩個關鍵點:
- Set prediction loss
- Self-attention 帶來的 proposal 之間的強關聯性, 使得整個輸出結果更加整體
同時, DETR 有個大的缺點, 就是對 local feature 利用不足. 這會導致一個問題: bbox 邊界回歸不準. 表現為小物體的 mAP 非常低(如下表).