FCOS:全卷積一階段Anchor Free物體檢測器,多種視覺任務的統一框架

2020-12-11 AI科技大本營

作者 | ronghuaiyang

來源 | AI公園

導讀:這是眾多Anchor Free中比較有影響力的一篇文章,不光是效果好,而且思路清楚,簡單,不需要任何trick,並將眾多的視覺任務統一到了一個框架中,值得一看。

介紹

基於anchor的物體檢測器的缺點,這個基本上每篇anchor free的文章都會列一遍。

檢測性能依賴於anchor的尺寸,比例,數量,這些都需要非常精細的設計。一旦anchor設計好了,尺寸,比例就固定了,在物體的尺寸和比例多樣性非常大的時候會有困難,特別是小物體。預設的anchor的泛化能力也有限,對於新的任務,需要重新去設計anchor。為了有高recall,需要設計非常密集的anchor,FPN中的anchor數量就超過了160k,而且大部分都是負樣本,正負樣本非常的不均衡。在計算的時候需要計算IOU,非常的複雜。現在的各種計算機視覺的任務,比如分割,深度預測,關鍵點加測,計數等等,都是全卷積的結構,就物體檢測是個例外。那麼,很自然的就有了一個問題:我們能不能把物體檢測也變成類似分割那樣的逐像素的預測問題呢?這樣的話,這些視覺相關的任務就都統一成了一個架構了,所以說,這篇文章就是幹了這麼個事情。

之前也有過類似的嘗試,直接再feature map的每個空間位置上回歸出一個4D Vector,外加一個類別,不過這些方法在文本檢測中用的較多,因為當物體間的包圍框重疊比較多的時候,某一個點就不知道去回歸哪一個了。如圖1:

圖1:左邊是FCOS預測的4個向量,右邊是當特徵圖的某個位置同時位於兩個物體內部的時候,這個位置就不知道去回歸哪個物體了。

我們仔細的研究了這個問題,發現使用全卷積的方案是可以很大程度上解決的,後面我們具體去看。我們的新框架的優點如下:

將物體檢測和其他視覺任務的框架進行了統一檢測不需要建議區域,也不需要anchor了。由於不需要anchor了,所以也沒有了IOU之類的複雜計算了,訓練更快了,所需要的的內存也更少了。我們得到了STOA的結果,而且FCOS也可以用到二階段的檢測方案中,而且效果比基於anchor的方案更好。我們覺得可以重新考慮下anchor在物體檢測中的必要性。可以非常方便的將檢測框架擴展到分割,關鍵點檢測等其他視覺任務上。

方法

全卷積一階段物體檢測

我們把第i層的特徵圖記做Fi,它相對於輸入圖像的stride為s,輸入圖像的groundtruth bbox記為{Bi},Bi=(x0,y0,x1,y1,c),其中(x0,y0)和(x1,y1)分別為左上角和右下角的坐標,c為物體的類別。對於Fi的每個位置(x,y),我們可以映射會輸入圖像中,映射成一個範圍(s/2+xs, s/2+ys),對於基於anchor的物體檢測方法,我們把這個位置作為anchor box的中心點,然後去回歸目標box相對於這些anchor box的偏差。而我們這裡直接在這個位置上回歸目標box,換句話說,我們在訓練中是把這些位置當成是樣本,而不是anchor box,這個和分割是一樣。

如果位置(x,y)落入到某個groundtruth box中,而且類別也和groundtruth box的類別一樣,那它就是正樣本,否則就是負樣本,而且c=0(背景)。除了類別標籤之外,我們在這個位置上還會回歸一個4D的向量,t=(l,t,r,b),其中,l,t,r,b分別是這個位置點到bbox的4個邊的距離,如圖1(左)所示。如果這個位置同時落入到好幾個bbox中,那這種就認為是模糊樣本。我們簡單的選擇一個面積最小的bbox作為它回歸的目標。下面,我們會展示一個多level的預測方法,這種模糊樣本的數量會大大的減少,這樣幾乎不會影響檢測的性能。這樣,如果位置(x,y)和一個bbox Bi相關聯起來,那麼在訓練的時候,我們的回歸目標可以這樣來表示:

這裡值得注意的是,FCOS可以利用任意多的前景樣本來訓練這個回歸,而基於anchor的方法只選取哪些和groundtruth box的IOU大於一定閾值的anchor作為正樣本進行訓練。我們認為這也許是FCOS效果比anchor based的模型好的原因之一。

網絡的輸出 對於coco的數據集,有80個類,我們需要輸出一個80維的分類向量和一個4維的t=(l,t,r,b),分類的時候,我們沒有用多分類的方法,而是訓練了C個二分類器,參考了RetinaNet,我們主幹feature map後面對於分類和回歸分別加了4個卷積層,作為兩個不同分支。由於回歸的目標值永遠是正的,我們用exp(x)將輸出映射到(0, ∞)。值得注意的是,FCOS的輸出要比基於anchor的方法(使用9個anchor)小了9倍。

損失函數 定義如下:

其中Lcls是focal loss,Lreg是UnitBox中使用的IOU loss,Npos表示正樣本的數量,λ用來做loss之間的平衡,文中用的值是1。

推理 推理的時候很直接,我們可以每個位置的類別預測pxy和每個位置的回歸預測txy,我們選擇p>0.05的作為正樣本,將其回歸值轉化為bbox的預測。

使用FPN進行多level的預測

這裡我們解決了FCOS的兩個問題:

在最後的特徵圖中,大的stride,比如16,對於anchor based檢測器,這樣會導致較低的best possible recall(BPR),但是對於FCOS,大的stride不會降低BPR,而且,使用了multi-level FPN來預測的話,還可以進一步提升BPR。重疊的物體會導致模糊匹配,這也可以通過multi-level FPN來很好的解決。我們用FPN在不同的level上檢測不同尺寸的物體,具體結構如圖2,

和基於anchor的方法通過在不同的level上設置不同尺寸的anchor的方式,將不同尺寸的物體分配到不同level的特徵圖上去檢測。我們這裡更加直接一點,直接對每個level限制物體尺寸的範圍。具體來說,我們首先在每個位置上都計算出目標的l,t,r,b,如果max(l,t,r,b) > mi,或者max(l, t, r, b) < mi-1的話,就將這個位置設置為負樣本。這裡mi是在第i個level上需要去回歸的最大距離。這裡,我們將m2,m3,m4,m5,m6,m7設置為0,64,128,256,512和∞。這樣一來,不同尺寸的物體就被分配到了不同的level的特徵圖上去進行檢測了,由於大部分overlap的都是不一樣的尺寸,所以不會出現模糊匹配的問題。如果還是有某個位置匹配到多個groundtruth的情況,那麼我們就匹配面積最小的那個。

最後,我們對於不同level的特徵圖,共享同一個檢測頭,如圖2,但是,由於不同的level回歸的是不同的尺寸,共享同一個檢測頭貌似不是很合理,所以我們又做了點修改,將exp(x)修改為exp(six),加入了一個可訓練的尺度參數si,自動的調整exp的輸出大小,這個改動對檢測性能有小的提升。

FCOS的Center-ness

我們發現,在訓練的時候,會出現大量的距離物體中心點很遠的低質量的預測框。這會降低模型的性能。我們用了一個簡單有效的方法來抑制這種低質量的預測框。我們加了一個分支來預測位置的center-ness,這個center-ness描述了負責檢測這個物體的位置到這個物體的中心的歸一化的距離,計算方式如下:

用sqrt來減慢center-ness的衰減,center-ness的範圍是0~1,用二分類交叉熵來訓練。測試的時候,通過它乘上類別得分來對檢測出的bbox進行排序,這樣,遠離中心的那些預測框的分數會減小,這樣做nms的時候,就可以去過濾掉這些檢測框,顯著提升檢測性能。

還有種center-ness的替代方案,就是只使用中心區域作為groundtruth,但是這樣需要一個超參數,將這兩種方式結合起來,可以得到更好的結果。

實驗

消融實驗

使用FPN進行Multi-level的預測對於BRP的效果:

對模糊樣本的影響:

是否使用Center-ness使用了Center-ness前後的效果:

anchor base的檢測器RetinaNet使用了2個閾值來進行正負樣本的選擇,如果同時使用center-ness和閾值的話,還能提升性能,下面給出了一些額外的優化方法及其效果:

和anchor based的檢測器的比較和RetinaNet的比較見上面的圖3。

和其他的檢測器的比較

擴展到RPN上

用FCOS來代替FPN中的RPN網絡的效果:

相關焦點

  • Anchor Free的目標檢測方法--FCOS
    六、實驗效果anchor-based detectors 存在的一些缺點目前主流的目標檢測算法,如Faster R-CNN,SSD 和YOLOv2,v3等都依賴於一組預定義的 anchor box,儘管 anchor box使檢測器取得了巨大成功,但anchor-based detectors 存在的一些缺點:    1、如
  • 目標檢測之—FCOS介紹
    ,Anchor-free全卷積網絡用於目標檢測的工作起源於DenseBox,Anchor-free的想法跟YOLOv1相似(YOLO思想參考 YOLO與SSD )。 FCOS特點:全卷積網絡:類似於語義分割,以像素級的形式解決目標檢測。FCN應用在密度估計的任務中,如語義分割、深度預測、關鍵點預測、計數。目標檢測任務與上述任務統一在FCN的框架之下,因此可以互相借鑑。
  • mmdetection最小復刻版(七):anchor-base和anchor-free差異分析
    本文通俗易懂,正如本文標題Bridging the Gap所示,為了清楚理解anchor-base和anchor-free特點,本文是非常值得分析的一篇目標檢測算法。貼一下框架github地址:https://github.com/hhaAndroid/mmdetection-mini歡迎star1 anchor-base和anchor-free本質差別
  • Anchor的泛化:統一物體檢測、實例分割、姿態估計的Point-set Anchor
    眾所周知,在object detection領域,無論是anchor based或者anchor-free based的方法中,其實都是事先定義了物體(bonding box 為GT的表示)的表示形式。
  • 目標檢測:Anchor-Free時代
    一個anchor-free的分支在每個特徵金字塔層構建,獨立於anchor-based的分支。和anchor-based分支相似,anchor-free分支由分類子網絡和回歸子網絡。一個實例能夠被安排到任意層的anchor-free分支。訓練期間,基於實例的信息而不是實例box的尺寸來動態地為每個實例選擇最合適的特徵層。選擇的特徵層學會檢測安排的實例。
  • 超越bounding box的代表性點集:視覺物體表示的新方法
    近日,來自北大、清華和微軟亞研的研究者們提出了一種新的視覺物體表示方法,稱作 RepPoints(representative points,代表性點集),這種方法能更精細地描述物體的幾何位置和進行圖像特徵的提取,同時也兼有簡便和方便特徵提取的特點。利用這種表示,很自然能得到一個 anchor-free 的物體檢測框架,取得了和目前 anchor-based 方法可比的性能。
  • 物體檢測的過去、現在和未來
    2013年之前檢測方法大多以傳統方法為主,特徵提取加分類器是那些年檢測的重心所在,2013年至2016年是檢測的飛速發展階段,多種神經網絡結構的問世大大改變了檢測算法的格局。2020年開始,新方向的引出,使得深度學習研究者燃起了新的希望,那麼,在未來多少年內可以真正解決檢測問題(How far from solving)呢,是當下眾多學者所關心的問題。
  • 【目標檢測】Anchor Free —— CenterNet
    早就要補🙅‍anchor free的坑,再從CenterNet開始吧!CenterNet是端到端的,在訓練時不需要提供anchor的大小,並且在檢測階段不需要非極大值抑制的後處理。,通過embedding vector對兩個角點進行匹配,來決定這一對角點是否屬於同一個物體;而CenterNet由於僅僅預測物體的一個中心點,所以不需要對預測點進行分組。
  • CVPR 2020 | 商湯提出 Anchor-free 目標檢測新網絡
    Centripetalnet在大型公開數據集MS-COCO上達到了目前anchor-free檢測模型中的最優效果。,而這些物體內部特徵在角點位置形成了如下圖的「十字星(cross-star)」,因此我們設計了十字星可變形卷積(cross-star deformableconvolution),成功地提取了這些物體內部信息,從而優化了角點位置的物體特徵,提高了模型性能。
  • 港中文李弘揚:物體檢測最新進展
    主攻計算機視覺和深度學習方向,尤其對物體檢測、人體姿態估計、CNN網絡結構設計、少樣本學習(few-shot learning)、膠囊網絡(capsule networks)等熱點問題做了一些初步探索。在機器學習和計算機視覺六大頂級會議和兩大頂級期刊中,共發表文章9篇,其中一作6篇(包含1篇口頭報告)。多次擔任頂級會議審稿人、AI教育公司兼職顧問。
  • Guided Anchoring: 物體檢測器也能自己學 Anchor
    這篇 paper 的方法用在了 COCO Challenge 2018 檢測任務的冠軍方法中,在極高的 baseline 上漲了 1 個點。最近公開在 ArXiv 上,歡迎大家提出意見。在使用 ResNet-50-FPN 作為 backbone 的情況下,Guided Anchoring 將 RPN 的 recall(AR@1000) 提高了 9.1 個點,將其用於不同的物體檢測器上,可以提高 mAP 1.2 到 2.7 個點不等。下圖是我們的方法和傳統 RPN 的性能和速度對比,可以看到要顯著優於傳統 RPN。
  • CVPR 2021 | DisAlign: 面向多種長尾視覺任務的統一框架
    作者提出了一種使用姿勢簡單,性能提升明顯,適用於長尾數據場景下的多種視覺任務的統一學習框架。https://arxiv.org/pdf/2103.16370.pdf 一、引言長尾數據分布在許多視覺任務中普遍存在,如何能有效提升在長尾分布情況下各類視覺任務的性能,是大家(學術界和工業界)都特別關心的一個問題。
  • YoloX框架:高效更精確的目標檢測框架(附原始碼)
    >在YOLO系列的基礎上做了許多有意思的工作,其主要貢獻在於:在YOLOV3的基礎上,引入了「Decoupled Head」,「Data Augmentation」,「Anchor Free」 和「SimOTA樣本匹配」的方法,構建了一種anchor-free的端到端目標檢測框架,並且達到了頂級的檢測水平。
  • 細粒度物體檢測算法的升級揭秘
    在眾多模型使用場景中,小目標物體的檢測比較常見,一般的目標檢測算法往往效果不理想;因此,EasyDL團隊針對小目標物體的檢測進行了專項優化,並取得了令人矚目的效果提升。自AlexNet在2012年ImageNet比賽上展露頭角以來,計算機視覺各個方向和神經網絡的聯繫變得越發緊密,物體檢測也不例外。
  • 視覺物體跟蹤新進展:讓跟蹤器讀懂目標語義信息
    從2016年起,深度學習和卷積神經網絡開始被大量運用在物體跟蹤算法中。其中,全卷積孿生網絡成為了近兩年最炙手可熱的框架,但它訓練出的網絡主要關注外觀特徵而無視語義信息,會讓跟蹤器犯一些匪夷所思的錯誤。由此,微軟亞洲研究院網絡多媒體組提出使用雙重孿生網絡進行視覺物體跟蹤的方案SA-Siam,不僅能夠關注語義和外觀信息,且加入注意力模塊使網絡關注特定的語義信息,在VOT任務的權威數據集上效果良好地實現了「能跟住」、「不跟錯」和「實時跟」的目標。視覺追蹤是人類最基本的視覺能力之一。嬰兒在出生兩個月左右就已具備了「固視」的能力,即固定的注視一個物體,視線隨物體移動。
  • 計算機視覺領域2019推薦論文列表
    /17013452該論文提出了一種稱為anchor-free RPN的物體檢測算法來解決經典RPN算法無法有效預測任意方向文本框的問題。該算法不僅在單詞級別的文字檢測任務上取得很好的結果,而且類似思想在當前物體檢測領域也成為主流。該論文發表在IJDAR期刊上。5.
  • 旋轉目標(遙感/文字)檢測方法整理(2017-2019)
    預定義anchor2.EAST (單階段文字檢測器 曠視科技)時間:11 Apr 2017題目:《EAST: An Efficient and Accurate Scene Text Detector》連結
  • 丟棄Transformer,全卷積網絡也可以實現E2E檢測
    機器之心轉載 作者:王劍鋒 在近來研究人員熱衷於探索 Transformer 用於目標檢測的嘗試時,這篇論文提出了一種全新的觀點,即利用全卷積網絡也可以實現良好的端到端目標檢測效果。
  • 一文讀懂目標檢測:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD
    一、目標檢測常見算法object detection,就是在給定的圖片中精確找到物體所在位置,並標註出物體的類別。所以,object detection要解決的問題就是物體在哪裡以及是什麼的整個流程問題。
  • 港中大-商湯聯合實驗室等提出:Guided Anchoring: 物體檢測器也能自己學 Anchor
    這篇 paper 的方法用在了 COCO Challenge 2018 檢測任務的冠軍方法中,在極高的 baseline 上漲了1個點。最近公開在 ArXiv 上,歡迎大家提出意見。概述我們提出了一種新的 anchor 生成方法 —— Guided Anchoring,即通過圖像特徵來指導 anchor 的生成。