目標檢測:Nms-Free時(shí)代
來(lái)源丨h(huán)ttps://zhuanlan.zhihu.com/p/453773468編輯丨計算機視覺(jué)life
導讀
nms是目標檢測任務(wù)中去除多余anchor的重要手段,但nms在使用過(guò)程中也帶來(lái)了大量的計算量,為了克服這一難點(diǎn),nms-free應聲而出,本文回顧了nms-free的發(fā)展歷程,并分析了nms-free的現狀與未來(lái),希望能對讀者們有所幫助。
什么是nms,為什么需要nms
什么是nms-free,有啥好處?
nms-free的發(fā)展歷程
nms-free的現狀與未來(lái)
什么是nms,為什么需要nmsnms是檸檬樹(shù)的簡(jiǎn)稱(chēng),懂得都懂,不懂請退出吧。nms原理請自行搜索。為啥需要檸檬樹(shù)呢?
因為CNN做預測的時(shí)候,往往會(huì )對同一個(gè)目標產(chǎn)生多個(gè)proposal,因此需要nms過(guò)濾掉多余的預測框。
產(chǎn)生duplicate bbox的原因有CNN自身結構的原因,有時(shí)候feature map上很難決定相鄰的兩個(gè)特征點(diǎn)誰(shuí)表示目標誰(shuí)表示背景。尤其在一些目標邊緣比較模糊的時(shí)候,如下圖。另一方面,既然會(huì )產(chǎn)生duplicate bbox,還不如擁抱duplicate,通過(guò)規則讓一個(gè)目標匹配多個(gè)proposal來(lái)增加正樣本數量,使訓練的前景與背景更加均衡,最后理直氣壯用nms過(guò)濾就好了。Bounding Box Regression with Uncertainty for Accurate Object Detection. CVPR2019
圖片來(lái)源:Bounding Box Regression with Uncertainty for Accurate Object Detection. CVPR2019[1]
此處統一術(shù)語(yǔ)。模型輸出的框是候選框(proposal)。proposal會(huì )預測一個(gè)目標稱(chēng)為instance。人工標注的框為GT。訓練階段,如何讓具體哪個(gè)proposal與哪個(gè)GT匹配的策略稱(chēng)為label assign,上面提到一個(gè)GT只跟一個(gè)proposal匹配稱(chēng)為one-to-one(o2o),一個(gè)GT匹配多個(gè)proposal的方法稱(chēng)為many-to-one(m2o)。
so,要想實(shí)現nms-free,label assign必須是one-to-one的。
什么是nms-free,有啥好處?nms-free就是不需要nms的目標檢測,甚至可以認為沒(méi)有后處理的目標檢測。優(yōu)勢1.整體框架簡(jiǎn)潔,更少超參數。2.目標之間重疊嚴重的話(huà)就無(wú)法用了。
但目前的主流依然存在nms,足以說(shuō)明nms的優(yōu)勢大于劣勢。很多場(chǎng)景的目標檢測,目標是稀疏的,此時(shí)many-to-one + nms組合簡(jiǎn)直不要太爽。
出現重疊怎么辦?忽略就行,出現概率很低啦。教育甲方不能這樣玩。甲方要退錢(qián)了?RotateAnchor[2]改一波。
Nice。甲方說(shuō)不可描述場(chǎng)景依然漏檢,還發(fā)來(lái)了圖片[色迷迷]。
此時(shí),nms黨不慌不忙的掏出了《Detection in Crowded Scenes: One Proposal, Multiple Predictions》[3]。每個(gè)proposal預測K個(gè)instance,意思是該proposal預測的地方可能有K個(gè)instance高度重疊。上圖K>=2即可。
是不是有點(diǎn)類(lèi)似anchor-base一個(gè)特征點(diǎn)有k個(gè)anchor,但anchor形狀差異很大,人工匹配規則也無(wú)法解決高度重疊場(chǎng)景。一個(gè)proposal預測k個(gè)instance可看作對anchor做了修改。匹配的規則也做了修改:
b_i是第i個(gè)proposal,L_cls和L_reg分別是label交叉熵和bbox回歸的loss。L(b_i)可以看作是EMDLoss(推土機距離),距離最小就是匹配方案。
由于一個(gè)proposal包含了多個(gè)instance,所以nms也做了相應的修改,稱(chēng)為set-nms,出自同一個(gè)proposal的k個(gè)instance必然非同一目標,iou再高也不能干掉。
等等,nms-base好像沒(méi)啥毛病了,增加后處理算啥毛病。標題起錯了,”who care nms-free”。
有一說(shuō)一,nms使檢測算法不夠直觀(guān)、簡(jiǎn)單,更像tradeoff的行為[挽尊]。nms-free簡(jiǎn)單的結構,降低了det學(xué)習的門(mén)檻。
nms-free的發(fā)展歷程此處挑比較有意思的論文介紹。如有遺漏或指正,歡迎留言。
《End-to-end people detection in crowded scenes》CVPR2016[4]在Faster-rcnn、YOLOv1問(wèn)世的2015年,這篇LSTM跨界搞目標檢測的論文顯得有些默默無(wú)聞。
該論文的主要思路是CNN作為enconder,LSTM作為decoder,把目標檢測看成序列一個(gè)instance一個(gè)instance輸出,每個(gè)instance包含置信度和bbox,當輸出的置信度<0.5,則看作停止符停止往下預測。
那如何訓練?label assign如何做?由于LSTM decoder的機制,instance按順序輸出,而GT無(wú)順序。作者嘗試了讓GT按照從左到右等不同規則排序,并與排序的instance做匹配。
最后作者使用更好的策略,把instances與GTs匹配看成二分圖匹配問(wèn)題,并通過(guò)匈牙利算法確定最佳的匹配。具體算法自行搜索。簡(jiǎn)單的解析是:instance與GT做one-to-one匹配并求instance與GT的IoU,統計IoU之和。不同的匹配方案,IoU之和不同。通過(guò)匈牙利算法找到IoU之和最大的匹配方案,也就是本論文的最終方案。此算法后來(lái)幾乎成了nms-free做label assign的標準解法。
《Relation Networks for Object Detection》CVPR2018[5]作者借鑒了隔壁NLP的《attention is all your need》的思想,在backbone里面融合self-attention,思路是每個(gè)proposal通過(guò)attention了解圖片中存在什么proposal,從而知道自身處于什么場(chǎng)景,提升準確率。例如一個(gè)屏幕,在沙發(fā)旁邊是電視,在鍵盤(pán)旁邊是顯示器。如今沒(méi)人會(huì )懷疑self-attention在cv的作用。
另外,論文提出了Duplicate removal network(DRN)代替nms,實(shí)現端到端訓練。參考下圖,DRN的思路是匹配到同一個(gè)GT的proposal,只取iou最大的,其他都是duplicate。DRN模塊里面有個(gè)attention,讓匹配到同一個(gè)GT的proposal只有iou最大的那個(gè)s1是1,其余是0。score是前景置信度,0-1之間,這里做了rank embed,根據score的大小降序排序,賦值范圍是[1,N]。
鼎鼎大名的DETR,借鑒了隔壁NLP的transformer,跟上文提到的《End-to-end people detection in crowded scenes》基于一樣的方式,基本就是把LSTM部分改成了transformer。由于transformer同時(shí)輸出結果的特性,作者默認DETR固定輸出100個(gè)預測結果,如果沒(méi)有那么多目標,則多出來(lái)的預測結果為空。同樣通過(guò)匈牙利算法做label assignment。
后面基于transformer的XXDert/SwinXX不一一介紹了。coco的最高記錄不斷被刷新,可見(jiàn)transformer之強悍。
《Pix2seq: A Language Modeling Framework for Object Detection》[7]此處不得不提pix2seq,已經(jīng)不是借鑒隔壁NLP了,是把det套在NLP上。把GT的類(lèi)別,坐標都看作詞匯,一個(gè)一個(gè)輸出。把bbox的位置離散化成“詞匯表”,例如x方向的位置,離散成600個(gè)詞匯,每個(gè)詞匯表示圖片中x方向的特定位置。Loss函數統一只用交叉熵。
表現雖然一般,但更加表明了序列模型的通用性,不同屬性構造成序列進(jìn)行預測。
上面幾篇論文都是從NLP借鑒過(guò)來(lái),LSTM - attention - transformer。他們都有一個(gè)特點(diǎn),backbone能捕獲全局特征,one-to-one做label assign沒(méi)有任何違和感。而CNN這邊many-to-one的label assign做了這么多年,看到transformer搞det效果不錯,結構還優(yōu)雅。也做了類(lèi)似的嘗試。
《End-to-End Object Detection with Fully Convolutional Network》CVPR2021[8]從標題就看出對DETR的致敬,簡(jiǎn)稱(chēng)DeFCN。many2one的匹配策略是無(wú)法擺脫nms的關(guān)鍵,只有采用one2one的匹配策略才能擺脫nms。
POTO(Prediction-aware One-To-One)的label assign與DETR設計幾乎一樣。
Π是所有預測instance與GT的one2one匹配方案的集合,Π_hat是這個(gè)集合里面是Q之和最大的方案。Spatial prior是GT外接框所對應的feature map區域=1,其他區域=0,人為的限定了匹配的proposal必須在GT框內找。classification是預測類(lèi)別的交叉熵,regression是定位的iou值。α是超參數。通過(guò)匈牙利算法找到最佳的Π_h。
然而融合spatial prior、classification、regression做label assignment并不是本論文的首次提出,AutoAssign就曾融合多種信息做many2one的label assign,效果讓人十分驚艷。
作者意識到卷積網(wǎng)絡(luò )結構天然更適合many2one,因為one2one的匹配讓feature map變得sharp,激活的feature與其四周有明顯的變化,不然容易出現duplicated predictions,顯然attention結構更加擅長(cháng)。針對CNN不夠sharp,作者提出了3D Max Filtering(3DMF),通過(guò)max pooling抑制周?chē)鶴得分也很高的proposal。
另外one2one帶來(lái)更少的正樣本使更難收斂,作者增加了一個(gè)one-to-many auxiliary loss(Aux Loss)。
類(lèi)似基于FCN的nms-free的工作還有OneNet[9],PSS[10]這里不展開(kāi)介紹了。
nms-free的現狀與未來(lái)nms-free已經(jīng)不單單只有結構簡(jiǎn)單,精度也追上來(lái)了。det的工程研發(fā)變得越來(lái)越簡(jiǎn)單。從結構上,類(lèi)似模板匹配的CNN,天然不適用于one2one的匹配方法,本文介紹了RelationNet和DeFCN對此問(wèn)題的兩個(gè)解決方案?;赥ransformer的模型天然沒(méi)有這樣的問(wèn)題。沒(méi)有后處理的det未來(lái),也許FCN已經(jīng)支撐不起來(lái)了,也許未來(lái)更多是CNN + transformer/MLP/XX的方法,CNN慢慢成為特征提取或者篩選的手段。
考慮工程落地,transformer頻繁reshape對一些硬件不太友好。純CNN的模型結構依然是首選,而純CNN的det,nms還是很難被取代。
參考
^Bounding Box Regression with Uncertainty for Accurate Object Detection. CVPR2019 https://readpaper.com/paper/2962677013
^Arbitrary-Oriented Scene Text Detection via Rotation Proposals https://readpaper.com/paper/3106228955
^Detection in Crowded Scenes: One Proposal, Multiple Predictions .CVPR2020 https://readpaper.com/paper/3035323039
^End-to-end people detection in crowded scenes. CVPR2016 https://readpaper.com/paper/607748843
^Relation Networks for Object Detection. CVPR2018 https://readpaper.com/paper/2964080601
^End-to-End Object Detection with Transformers. ECCV2020 https://readpaper.com/paper/3096609285
^Pix2seq: A Language Modeling Framework for Object Detection https://readpaper.com/paper/3199245537
^End-to-End Object Detection with Fully Convolutional Network. CVPR2021 https://readpaper.com/paper/3111272232
^What Makes for End-to-End Object Detection?. ICML2021 https://readpaper.com/paper/3179092682
^Object Detection Made Simpler by Eliminating Heuristic NMS https://readpaper.com/paper/3125728987
本文僅做學(xué)術(shù)分享,如有侵權,請聯(lián)系刪文。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。