不需要錨框:一種全卷積 One-Stage 目標檢測算法(FCOS)

不需要錨框:一種全卷積 One-Stage 目標檢測算法(FCOS)


本文來源於 ICCV'19 上發表的一種新的目標檢測技術 FCOS :全卷積 One-Stage 目標檢測算法。該算法提出了一種非常直觀和簡單的方法來解決目標檢測問題,本篇文章是對該算法的總結。

本文內容框架

1. 基於錨框的檢測器(Anchor-Based Detectors)

1. 全卷積 One-Stage 目標檢測算法(FCOS)的提出

1. 多級檢測(Multi-level detection)

1. Centre-Ness 策略

1. 實驗對比

1. 總結

基於錨框的檢測器(Anchor-Based Detectors)

現有的目標檢測方法大多使用預先定義的錨框,如:Fast-RCNN, YOLOv3, SSD, RetinaNet 等。但是這些錨框涉及到許多的超參數,如:錨框數量、尺寸比、圖像劃分區域數量等。而這些超參數對於最終結果的影響很大。其中,邊框被判斷為正樣本還是負樣本,由 Intersetcion over Union (IoU)這個超參數決定。而 IoU 的值極大程度上影響著錨框。下圖展示了 Yolov3 當中錨框的作用:

不需要錨框:一種全卷積 One-Stage 目標檢測算法(FCOS)

我們之所以延續使用錨框,是因為這一方法的思想存在已久——歷史上第一個目標檢測器就是借鑑了經典計算機視覺早期檢測模型中滑動窗口(sliding window)的概念。但是,既然現在我們擁有了多個 gpu,那麼也就不需要滑動窗口了。

FCOS 的提出

因此 FCOS 方法採用了新的思路,即不再使用錨框,而是像語義分割一樣,以逐像素預測的方式解決目標檢測問題。首先,讓我們看看這種方法是如何工作的:


設 Fᵢ為總步長為s的 CNN 的第一層Fᵢ⁰ 特徵圖。同時定義圖像的基礎邊界框為Bᵢ = ( x⁰ᵢ, y⁰ᵢ, x¹ᵢ, y¹ᵢ, cᵢ ) ∈ R₄ × {1, 2 … C}. 。其中,C是類的數量;(x⁰ᵢ, y⁰ᵢ)和(x¹ᵢ, y¹ᵢ) 是邊框的左上角及右下角座標。對於特徵圖上的任一位置(x,y),類似於語義分割中的工作,我們可以確定其對應的原始圖像中的像素。然後將特徵圖上的(x,y)映射到感受野中心附近位置(floor(s/2) + x*s, floor(s/2) + y*s)。通過一個 8x8 的圖像以及 4x4 的特徵圖,將能夠很好地理解這一特徵提取過程。

通過上述映射,我們能夠將圖像中的每個像素都關聯起來作為訓練樣本。也就意味著每個位置(x,y)都可以是正樣本或負樣本之一,而決定其是否屬於正樣本的條件為:當其位於基礎邊界框以內,並且該點計算得到的標籤與基礎邊界框的標籤一致。

具體的,我們通過四個值(l*, t*, r*, b*)的迴歸可以確定邊界框的尺寸:

l* = x-x⁰ᵢ ; t* = y-y⁰ᵢ ; r* = x⁰ᵢ-x ; b* = y⁰ᵢ-y

並且針對這些值的迴歸計算也將是整個檢測算法的損失函數的一部分。

現在,由於沒有錨框,因此不需要計算錨框和邊界框之間的 IoU 來獲得正樣本,從而可以直接訓練迴歸器。相反,被確定為正樣本的每個點(位於邊界框內並具有正確的類標籤)都是邊界框尺寸參數迴歸的一部分。而這可能是即使使用的超參數更少,但FCOS比基於錨框的檢測器工作得更好的原因之一。

對於特徵圖中的每個點,我們計算其分類得分,而對於被確定為正樣本的每個點,我們進行迴歸。因此,總損失函數變成:

不需要錨框:一種全卷積 One-Stage 目標檢測算法(FCOS)


其中,λ=1。

RHS的第一部分是像素(x,y)分類,採用了 RetinaNet 中使用的標準焦距損失(Standard focal loss)。RHS的第二部分是邊界框的迴歸,對於被確定為非正樣本的像素,它被賦值為零。

多級檢測(Multi-level detection)

多級預測是指利用不同層次的特徵圖進行目標檢測。這類似於在RetinaNet中使用的FPNs(Feature Pyramid Networks)的概念。如下圖所示,檢測器應用於特徵圖P3、P4、P5、P6、P7等多個級別,這有助於我們檢測圖像中不同大小的物體,同時也有助於解決邊界框重疊的問題。

不需要錨框:一種全卷積 One-Stage 目標檢測算法(FCOS)


基於錨框的檢測器,通過將不同的錨框應用於不同的特徵級別,以實現在不同級別分離不同的重疊的邊界框。而類似於 FCOS 的無錨框檢測器,則通過在不同的特徵級別對迴歸預測進行約束,以實現相同的功能。具體地,首先定義了 $m_i$參數,對於所有的特徵級別(P3-P7),mᵢ被分別設定為0、64、128、256、512和無窮大,而對於P2則設定為0。以P7為例,當max(l*,r*,t*,b*)< infinity時,對邊界框進行迴歸預測。如果一個像素即使在多級檢測之後仍然被分配給多個邊界框,它將自動分配給兩個邊界框中較小的一個。Centre-Ness 策略

center-ness策略在每一個層級預測中添加了一個center-ness分支,該分支與分類和迴歸並行。顧名思義,它是對邊界框內正樣本像素的中心度進行計算,相當於給網絡添加了一個損失,而該損失保證了預測的邊界框儘可能的靠近中心。這是為了改善無錨框檢測器的性能,使其與基於錨框的檢測器不相上下。

具體地,中心度(centerness)計算如下:

不需要錨框:一種全卷積 One-Stage 目標檢測算法(FCOS)

實驗對比

與主流的基於錨框的目標檢測算法進行性能對比,結果如下:

不需要錨框:一種全卷積 One-Stage 目標檢測算法(FCOS)


上表顯示了 FCOS 與 RetinaNet (一種最先進的基於錨框的算法)的性能比較。可以看出,在相同主幹網絡的情況下,FCOS的性能比RetinaNet高出1.9%。對於這兩種模型,在nms閾值等參數設置相同的情況下,採用多級預測策略和centre-ness策略的FCOS算法表現都優於RetinaNet。上表中提到的"improvements"包括:①將中心度分支移到迴歸分支而不是分類分支;②控制採樣。

不需要錨框:一種全卷積 One-Stage 目標檢測算法(FCOS)


同時,上表展示了有添加 center-ness 策略和未添加 center-ness 策略的算法性能比較。可以明顯看出 center-ness 策略對於提升算法性能有著很大作用。基於錨框的算法在對正錨框和負錨框進行分類時需要引入IoU閾值參數,而 center-ness 策略有助於消除這些超超參數。

值得注意的是,該研究中使用的一些重要的超參數,如學習率,NMS抑制閾值等,都是基於 RetinaNet 獲取到。而如果進一步對這些超參數進行調整,將可能獲得更好的目標檢測效果。

總結

FCOS 這一算法能夠使得目標檢測更加簡單化、快速化。這一方法的提出,將引導更多研究者摒棄基於錨框的目標檢測算法,有可能成為解決目標檢測這一難題更有效的方案。


分享到:


相關文章: