<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,FCN也可以實現E2E檢測

          共 5454字,需瀏覽 11分鐘

           ·

          2020-12-12 01:07

          ↑ 點擊藍字?關注極市平臺

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

          極市導讀

          ?

          作者基于FCOS,首次在dense prediction上利用全卷積結構做到E2E,受到DETR的啟發(fā),設計了一種prediction-aware one-to-one assignment方法?。該方法基本不修改模型結構,不需要更長的訓練時間,可以基于現有dense prediction方法平滑過渡。本文主要闡述了方法實現的過程中遇到的問題的解決思路以及相應的實驗結果。>>加入極市CV技術交流群,走在計算機視覺的最前沿

          介紹一下我和 @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

          代碼:正在準備中,稍后放出

          我們基于FCOS,首次在dense prediction上利用全卷積結構做到E2E,即無NMS后處理。我們首先分析了常見的dense prediction方法(如RetinaNet、FCOS、ATSS等),并且認為one-to-many的label assignment是依賴NMS的關鍵。受到DETR的啟發(fā),我們設計了一種prediction-aware one-to-one assignment方法。此外,我們還提出了3D Max Filtering以增強feature在local區(qū)域的表征能力,并提出用one-to-many auxiliary loss加速收斂。我們的方法基本不修改模型結構,不需要更長的訓練時間,可以基于現有dense prediction方法平滑過渡。我們的方法在無NMS的情況下,在COCO數據集上達到了與有NMS的FCOS相當的性能;在代表了密集場景的CrowdHuman數據集上,我們的方法的recall超越了依賴NMS方法的理論上限。

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

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

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

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

          Prediction-aware one-to-one

          于是接下來的問題就是,在dense prediction上我們能不能只依賴one-to-one label assignment,比較完美地去掉NMS?我們首先基于去掉centerness分支的FCOS,統(tǒng)一網絡結構和訓練方法,用Focal Loss + GIoU Loss,做了如下分析實驗:

          我們設計了兩種hand-crafted one-to-one assignment方法,分別模仿RetinaNet(基于anchor box)和FCOS(基于center點),盡可能做最小改動,發(fā)現已經可以將有無NMS的mAP差距縮小到4個點以內。

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

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

          看起來稍微有點復雜,但其實就是用網絡輸出的prob代表分類,網絡輸出和gt的IoU代表回歸,做了加權幾何平均,再加一個類似于inside gt box的空間先驗。加權幾何平均和空間先驗我們后面都分別做了ablation。

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

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

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

          3D Max Filtering

          針對第一點,我們提出了3D Max Filtering,這基于一個intuition(paper中沒有提到):卷積是線性濾波器,學習max操作是比較困難的。此外,我們在FCOS做了實驗,發(fā)現duplicated prediction基本來自于5x5的鄰域內,所以最簡單的做法就是在網絡中嵌入最常見的非線性濾波器max pooling。另外,NMS是所有feature map一起做的,但網絡在結構上缺少層間的抑制,所以我們希望max pooling是跨層的。

          如Figure 3所示,這個模塊只采用了卷積、插值、max pooling 3d,速度非常快,也不需要寫cuda kernel。

          One-to-many auxiliary loss

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

          實驗

          最主要的實驗結果已經在Table 1中呈現了,此外還有一些ablation實驗。

          這里highlight幾點:

          1. α越低,分類權重越大,有無NMS的差距越小,但絕對性能也會降低[4];α太高也不好,我們后續(xù)所有實驗用α=0.8;
          2. 在α合理的情況下,空間先驗不是必須的,但空間先驗能夠在匹配過程中幫助排除不好的區(qū)域,提升絕對性能;我們在COCO實驗中采用center sampling radius=1.5,在CrowdHuman實驗中采用inside gt box;
          3. 加權幾何平均數(Mul)[5]比加權算術平均數(Add)[6]更好。

          去掉NMS的最大收益其實是crowd場景,這在COCO上并不能很好地體現出來。所以我們又在CrowdHuman上做了實驗如下:

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

          我們還做了其它一些實驗和分析,歡迎看原文。

          可視化

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

          Others

          有些人可能比較關心訓練時間,因為潛意識里在dense prediction上做bipartite matching應該是很慢的。然而實際上依賴于scipy對linear_sum_assignment(https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.linear_sum_assignment.html)的優(yōu)化,實際訓練時間僅僅下降了10%左右。

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

          Relation to @孫培澤 's work

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

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

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

          他們的工作和我們是非常相似的,我們在DETR之后各自獨立地意識到了Transformer不是E2E的必要條件,one-to-one matching才是必要條件。不過我們還發(fā)現one-to-one是不夠的,必須prediction-aware,把必要條件變成了充要條件,且用loss做cost不一定是更好的。

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

          參考

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


          推薦閱讀




          添加極市小助手微信(ID : cvmart2),備注:姓名-學校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳),即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術交流群:月大咖直播分享、真實項目需求對接、求職內推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

          △長按添加極市小助手

          △長按關注極市平臺,獲取最新CV干貨

          覺得有用麻煩給個在看啦~??
          瀏覽 73
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  逼特逼视频免费观看 | 在线视频韩国一区 | www.夜夜嗨 | 婷婷五缴天国产激情 | 午夜视频免费看 |