連結:https://www.zhihu.com/question/431890092
編輯:深度學習與計算機視覺
聲明:僅做學術分享,侵刪
作者:信息門下添狗昨晚看完直接失眠了,躺在床上捋清楚了幾個細節,比如學出來的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奠定了基礎,感覺真的是一個剛剛好的時候。
真的太強了,相比一些想出來感覺不快點做就會被別人做的東西,這個就是那種根本想不到的東西。作者:yanwan最後,Set Prediction detector也開始分為兩類了:
看起來set prediction挺香的,只不過,set prediction的檢測器,同等測試條件下還是anchor/anchor-free的檢測器在精度上差一點,和Sparse R-CNN作者也討論了下,set prediction還有優化的空間。
set prediction的檢測器很簡潔,部署也很方便,如果把精度和速度肝上去了,就可以造福工業界了。
作者:深度眸論文核心思想應該是借鑑了上述三篇論文做法,簡單來說是核心組件是:
上述兩個組件中最重要的是可學習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領域,那也不用奇怪!
作者:小磊我覺得 DETR 的成功有兩個關鍵點:
Self-attention 帶來的 proposal 之間的強關聯性, 使得整個輸出結果更加整體同時, DETR 有個大的缺點, 就是對 local feature 利用不足. 這會導致一個問題: bbox 邊界回歸不準. 表現為小物體的 mAP 非常低(如下表)。
DETR 的 APs 比 Sparse RCNN 低了6個點!但 mAP_small 低有可能有兩個原因:
為了找到 mAP_small 低的具體原因, 我們對比了一下 DETR 和 MaskRCNN 的 bbox mAP_small 曲線:
縱坐標:mAP_small. 橫坐標: IoU閾值[0.5:1:0.05]. 藍色 DETR, 橙色 MaskRCNN發現 DETR(藍色) 在 IoU 閾值為 0.5 時候, mAP_small 比 MaskRCNN還高, 所以 DETR 感知到小物體的能力還挺強的, "邊界回歸不準"才是 mAP_small 低的主要原因.
再回到主角 Sparse RCNN, Sparse RCNN 完全繼承了 DETR 的兩個關鍵優點:
Proposal 之間的強關聯性(iteration+dynamic 機制類比於 self-attention)同時, 由於 Sparse RCNN 是全卷積的, 具有 CNN local feature 強的優點. 所以在邊界回歸的準確度上會優於 DETR.
綜上, Sparse RCNN 集成了 DETR 的兩個優點, 並摒棄了 transformer 帶來的缺點, 並在結果上超過了 DETR. 但老實說, Sparse RCNN 只高了0.3 的 mmAP, 而 mAP50 和 AP_large 上都低了不少, 說明 Sparse RCNN 還有挺多進步空間的.
補充:
其實可以換一種方式來解決 DETR 對 local feature 利用不足的缺點, 就是直接學 RCNN, 做 two-stage 的回歸。
具體的, 在第二個 stage 找出 small object 的 bbox, padding 一點點, 在高清一點的 CNN feature 上 crop 一個 RoI 出來。給 RoI 加上 spatial positional encoding 和 object 的 query 一起丟給 transformer 的 decoder, 輸出一個 refine 後的 bbox。
作者:匿名用戶這篇是少量的初始proposal+多輪 refine stage。proposal box 和 proposal feature可以與輸入圖像無關 就證明了 不靠譜的初始proposal是可以考多輪 refine修正回來的。還是挺神奇的。
我很想看看每輪refine前後 box的變化,到底圖片無關的proposal box是怎麼和Object對應的,有什麼規律。
作者:雲中君其次:後續的Dynamic instance interactive head 是論文的重點,但是堆了很多料,比較tricky,整個story似乎是沒講好。
然後:仔細看了一遍代碼,發現的proposal bbox 最後是固化的一個統計值,靠後續的proposal feature 和 dynamic head 來救,這樣可能會存在如果測試集和訓練集gap比較大,掉點可能會比較嚴重,同時這種方式,拿掉了費電的rpn,但是引入一個相對比較低效的方法,光靠後面的兩到工序可能救不動,所以會存在很明顯的一些object沒被召回的情況,如果proposal也是圖像卷出來的,可能還能再提升,搞個2.0版本?
最後:當然效果好,收斂速度快,實驗足,工業界還是香的。作者:摘掉眼鏡睡覺周末仔細讀了這篇Sparse R-CNN, 感覺Learnable proposal boxes和Learnable proposal feature並不是很難想,DETR的出現已經證明了learnable query embedding是work的,所以稀疏的learnable proposal feature也應該可以work,但是我覺得這個learnable proposal可以比較好的解釋DETR中query object的物理含義。
之前沒有接觸過meta learning,所以這個dynamic head中把proposal feature當成params和roi feature進行卷積(就是矩陣乘法)在我看來還是挺有想法的。然後使用Iterative architecture,和Cascade的思想一樣,從可視化結果來看,這裡也很好的訓練出NMS的作用。最後還是類似DETR,使用了Hungarian Algorithm loss,不過它這裡對分類loss使用了focal loss,這是處理proposal中正負樣本不平衡的一個好方法,在DETR裡也可以用這個來改進。
我其實挺想弄懂Hungarian Algorithm到底有沒有作用,能不能解決NMS的drawback
作者:匿名用戶