<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          丟棄Transformer,F(xiàn)CN也可以實(shí)現(xiàn)E2E檢測(cè)

          共 5133字,需瀏覽 11分鐘

           ·

          2022-08-25 00:52

          點(diǎn)擊上方“程序員大白”,選擇“星標(biāo)”公眾號(hào)

          重磅干貨,第一時(shí)間送達(dá)

          作者丨王劍鋒@知乎
          來(lái)源丨h(huán)ttps://zhuanlan.zhihu.com/p/332281368
          編輯丨極市平臺(tái)

          導(dǎo)讀

           

          作者基于FCOS,首次在dense prediction上利用全卷積結(jié)構(gòu)做到E2E,受到DETR的啟發(fā),設(shè)計(jì)了一種prediction-aware one-to-one assignment方法 。該方法基本不修改模型結(jié)構(gòu),不需要更長(zhǎng)的訓(xùn)練時(shí)間,可以基于現(xiàn)有dense prediction方法平滑過(guò)渡。本文主要闡述了方法實(shí)現(xiàn)的過(guò)程中遇到的問(wèn)題的解決思路以及相應(yīng)的實(shí)驗(yàn)結(jié)果。

          介紹一下我和 @Steven Song 一同完成的工作:

          End-to-End Object Detection with Fully Convolutional Network

          鏈接:E2ENet (arxiv版已上傳)

          https://megvii-my.sharepoint.cn/personal/wangjianfeng_megvii_com/_layouts/15/onedrive.aspx

          代碼:正在準(zhǔn)備中,稍后放出

          我們基于FCOS,首次在dense prediction上利用全卷積結(jié)構(gòu)做到E2E,即無(wú)NMS后處理。我們首先分析了常見(jiàn)的dense prediction方法(如RetinaNet、FCOS、ATSS等),并且認(rèn)為one-to-many的label assignment是依賴(lài)NMS的關(guān)鍵。受到DETR的啟發(fā),我們?cè)O(shè)計(jì)了一種prediction-aware one-to-one assignment方法。此外,我們還提出了3D Max Filtering以增強(qiáng)feature在local區(qū)域的表征能力,并提出用one-to-many auxiliary loss加速收斂。我們的方法基本不修改模型結(jié)構(gòu),不需要更長(zhǎng)的訓(xùn)練時(shí)間,可以基于現(xiàn)有dense prediction方法平滑過(guò)渡。我們的方法在無(wú)NMS的情況下,在COCO數(shù)據(jù)集上達(dá)到了與有NMS的FCOS相當(dāng)?shù)男阅?;在代表了密集?chǎng)景的CrowdHuman數(shù)據(jù)集上,我們的方法的recall超越了依賴(lài)NMS方法的理論上限。

          整體方法流程如下圖所示:

          One-to-many vs. one-to-one

          自anchor-free方法出現(xiàn)以來(lái),NMS作為網(wǎng)絡(luò)中最后一個(gè)heuristic環(huán)節(jié),一直是實(shí)現(xiàn)E2E dense prediction的最大阻礙。但其實(shí)我們可以發(fā)現(xiàn),從RPN、SSD、RetinaNet等開(kāi)始,大家一直遵循著這樣一個(gè)流程:先對(duì)每個(gè)目標(biāo)生成多個(gè)預(yù)測(cè)(one-to-many),再將多個(gè)預(yù)測(cè)去重(many-to-one)。所以,如果不對(duì)前一步label assignment動(dòng)刀,就必須要保留去重的環(huán)節(jié),即便去重的方法不是NMS,也會(huì)是NMS的替代物(如RelationNet,如CenterNet的max pooling)。

          那直接做one-to-one assignment的方法是否存在呢?其實(shí)是有的。上古時(shí)代有一個(gè)方法叫MultiBox(https://arxiv.org/abs/1412.1441),對(duì)每個(gè)目標(biāo)和每個(gè)預(yù)測(cè)做了bipartite matching,DETR其實(shí)就是將該方法的網(wǎng)絡(luò)換成了Transformer。此外還有一個(gè)大家熟知的方法:YOLO,YOLO也是對(duì)每個(gè)目標(biāo)只匹配一個(gè)grid[1],只不過(guò)它是采用中心點(diǎn)做的匹配,而且有ignore區(qū)域。

          Prediction-aware one-to-one

          于是接下來(lái)的問(wèn)題就是,在dense prediction上我們能不能只依賴(lài)one-to-one label assignment,比較完美地去掉NMS?我們首先基于去掉centerness分支的FCOS,統(tǒng)一網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練方法,用Focal Loss + GIoU Loss,做了如下分析實(shí)驗(yàn):

          我們?cè)O(shè)計(jì)了兩種hand-crafted one-to-one assignment方法,分別模仿RetinaNet(基于anchor box)和FCOS(基于center點(diǎn)),盡可能做最小改動(dòng),發(fā)現(xiàn)已經(jīng)可以將有無(wú)NMS的mAP差距縮小到4個(gè)點(diǎn)以?xún)?nèi)。

          但我們認(rèn)為手工設(shè)計(jì)的label assignment規(guī)則會(huì)較大地影響one-to-one的性能,比方說(shuō)center規(guī)則對(duì)于一個(gè)偏心的物體就不夠友好,而且在這種情況下one-to-one規(guī)則會(huì)比one-to-many規(guī)則的魯棒性更差。所以我們認(rèn)為規(guī)則應(yīng)該是prediction-aware的。我們首先嘗試了DETR的思路,直接采用loss做bipartite matching的cost[2],發(fā)現(xiàn)無(wú)論是絕對(duì)性能還是有無(wú)NMS的差距,都得到了進(jìn)一步的優(yōu)化。

          但我們知道,loss和metrics往往并不一致,它常常要為優(yōu)化問(wèn)題做一些妥協(xié)(比如做一些加權(quán)等等)。也就是說(shuō),loss并不一定是bipartite matching的最佳cost。因而我們提出了一個(gè)非常簡(jiǎn)單的cost:

          看起來(lái)稍微有點(diǎn)復(fù)雜,但其實(shí)就是用網(wǎng)絡(luò)輸出的prob代表分類(lèi),網(wǎng)絡(luò)輸出和gt的IoU代表回歸,做了加權(quán)幾何平均,再加一個(gè)類(lèi)似于inside gt box的空間先驗(yàn)。加權(quán)幾何平均和空間先驗(yàn)我們后面都分別做了ablation。

          這就是我們提出的POTO策略,它進(jìn)一步地提升了無(wú)NMS下的性能,也側(cè)面驗(yàn)證了loss并不一定是最好的cost[3]。但從Table 1中我們也發(fā)現(xiàn)了,POTO的性能依舊不能匹敵one-to-many+NMS組合。我們認(rèn)為問(wèn)題出在兩個(gè)方面:

          1. one-to-one需要網(wǎng)絡(luò)輸出的feature非常sharp,這對(duì)CNN提出了較嚴(yán)苛的要求(這也是Transformer的優(yōu)勢(shì));
          2. one-to-many帶來(lái)了更強(qiáng)的監(jiān)督和更快的收斂速度。

          我們分別用3D Max Filtering和one-to-many auxiliary loss緩解如上問(wèn)題。

          3D Max Filtering

          針對(duì)第一點(diǎn),我們提出了3D Max Filtering,這基于一個(gè)intuition(paper中沒(méi)有提到):卷積是線性濾波器,學(xué)習(xí)max操作是比較困難的。此外,我們?cè)贔COS做了實(shí)驗(yàn),發(fā)現(xiàn)duplicated prediction基本來(lái)自于5x5的鄰域內(nèi),所以最簡(jiǎn)單的做法就是在網(wǎng)絡(luò)中嵌入最常見(jiàn)的非線性濾波器max pooling。另外,NMS是所有feature map一起做的,但網(wǎng)絡(luò)在結(jié)構(gòu)上缺少層間的抑制,所以我們希望max pooling是跨層的。

          如Figure 3所示,這個(gè)模塊只采用了卷積、插值、max pooling 3d,速度非??欤膊恍枰獙?xiě)cuda kernel。

          One-to-many auxiliary loss

          針對(duì)第二點(diǎn)監(jiān)督不夠強(qiáng)、收斂速度慢,我們依舊采用one-to-many assignment設(shè)計(jì)了auxiliary loss做監(jiān)督,該loss只包含分類(lèi)loss,沒(méi)有回歸loss。assignment本身沒(méi)什么可說(shuō)的,appendix的實(shí)驗(yàn)也表明多種做法都可以work。這里想提醒大家的是注意看Figure 2的乘法,它是auxiliary loss可以work的關(guān)鍵。在乘法前的一路加上one-to-many auxiliary loss,乘法后是one-to-one的常規(guī)loss。由于1*0=0,1*1=1,我們只需要大致保證one-to-one assignment的正樣本在one-to-many中依然是正樣本即可。

          實(shí)驗(yàn)

          最主要的實(shí)驗(yàn)結(jié)果已經(jīng)在Table 1中呈現(xiàn)了,此外還有一些ablation實(shí)驗(yàn)。

          這里highlight幾點(diǎn):

          1. α越低,分類(lèi)權(quán)重越大,有無(wú)NMS的差距越小,但絕對(duì)性能也會(huì)降低[4];α太高也不好,我們后續(xù)所有實(shí)驗(yàn)用α=0.8;
          2. 在α合理的情況下,空間先驗(yàn)不是必須的,但空間先驗(yàn)?zāi)軌蛟谄ヅ溥^(guò)程中幫助排除不好的區(qū)域,提升絕對(duì)性能;我們?cè)贑OCO實(shí)驗(yàn)中采用center sampling radius=1.5,在CrowdHuman實(shí)驗(yàn)中采用inside gt box;
          3. 加權(quán)幾何平均數(shù)(Mul)[5]比加權(quán)算術(shù)平均數(shù)(Add)[6]更好。

          去掉NMS的最大收益其實(shí)是crowd場(chǎng)景,這在COCO上并不能很好地體現(xiàn)出來(lái)。所以我們又在CrowdHuman上做了實(shí)驗(yàn)如下:

          請(qǐng)注意CrowdHuman的ground-truth做NMS threshold=0.6,只有95.1%的Recall,這也是NMS方法的理論上限。而我們的方法沒(méi)有采用NMS,于是輕易超越了這一上限。

          我們還做了其它一些實(shí)驗(yàn)和分析,歡迎看原文。

          可視化

          經(jīng)過(guò)以上方法,我們成功把one-to-one的性能提升到了與one-to-many+NMS方法comparable的水平。我們可視化了score map,可以發(fā)現(xiàn)FCN是有能力學(xué)出非常sharp的表示的,這也是很讓我們驚奇的一點(diǎn)。

          Others

          有些人可能比較關(guān)心訓(xùn)練時(shí)間,因?yàn)闈撘庾R(shí)里在dense prediction上做bipartite matching應(yīng)該是很慢的。然而實(shí)際上依賴(lài)于scipy對(duì)linear_sum_assignment(https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.linear_sum_assignment.html)的優(yōu)化,實(shí)際訓(xùn)練時(shí)間僅僅下降了10%左右。

          如果對(duì)這一時(shí)間依然敏感,可以用topk(k=1)代替bipartite matching;在dense prediction里top1實(shí)際上是bipartite matching的近似解[7]。相似地,k>1的情況對(duì)應(yīng)了one-to-many的一種新做法,我們組也對(duì)此基于最優(yōu)傳輸做了一些工作,后續(xù)可能會(huì)放出來(lái)。

          Relation to @孫培澤 's work

          @孫培澤 最近放出了該文章:

          孫培澤:OneNet: End-to-End One-Stage Object Detectionzhuanlan

          https://zhuanlan.zhihu.com/p/331590601

          他們的工作和我們是非常相似的,我們?cè)贒ETR之后各自獨(dú)立地意識(shí)到了Transformer不是E2E的必要條件,one-to-one matching才是必要條件。不過(guò)我們還發(fā)現(xiàn)one-to-one是不夠的,必須prediction-aware,把必要條件變成了充要條件,且用loss做cost不一定是更好的。

          他們采用的min cost匹配,其實(shí)就是上文提到的top1,即bipartite matching的近似解。他們也得出了和我們Table 3類(lèi)似的結(jié)論,即分類(lèi)cost權(quán)重越大,去除NMS的效果越好。不過(guò)我們還從feature和監(jiān)督兩個(gè)角度提升性能的方法,最后首次實(shí)現(xiàn)了與one-to-many+NMS方法comparable的性能,并在CrowdHuman上證明了在工業(yè)界大規(guī)模應(yīng)用的潛力。

          參考

          1. ^如果有人感興趣的話,可以在YOLO上去掉NMS嘗試一下,可以接近30mAP。
          2. ^注意我們這里沒(méi)有使用DETR的CE+GIoU+L1組合,而是直接采用loss本身(Focal+GIoU)。我們認(rèn)為這樣更符合DETR用loss做cost的原意。
          3. ^其實(shí)這里可以有一個(gè)腦洞留給大家,因?yàn)閏ost是不需要求導(dǎo)的,所以甚至是可以直接算AP當(dāng)cost的。
          4. ^側(cè)面印證了分類(lèi)和回歸的沖突在檢測(cè)任務(wù)上是顯著的。
          5. ^事實(shí)上加權(quán)幾何平均數(shù)的負(fù)對(duì)數(shù)就是CE+IoU Loss,加權(quán)算術(shù)平均數(shù)則沒(méi)有明顯的物理含義。
          6. ^NoisyAnchor在assign中采用了類(lèi)似的公式,只不過(guò)采用的是anchor IoU。
          7. ^更具體來(lái)講,top1是Hugarian Algorithm只做第一次迭代的結(jié)果;由于在dense prediction下沖突會(huì)很少,一次迭代就已經(jīng)逼近了最優(yōu)匹配,這也是為什么Hungarian Algorithm這里實(shí)際運(yùn)行很快。

          13個(gè)你一定要知道的PyTorch特性

          解讀:為什么要做特征歸一化/標(biāo)準(zhǔn)化?

          一文搞懂 PyTorch 內(nèi)部機(jī)制

          張一鳴:每個(gè)逆襲的年輕人,都具備的底層能力


          關(guān)


          ,學(xué),西學(xué)學(xué)運(yùn)營(yíng)護(hù)號(hào),樂(lè)質(zhì),結(jié)識(shí),關(guān)[],學(xué)習(xí)進(jìn)!



          瀏覽 89
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产91白丝jk无套进入在线播放 | 国产灬性灬淫…乱…视频… | 色丁香午夜婷 | 一级A片免费观看视频 | 久久精品国产亚洲AV无码偷窥 |