天天看點

FCOS fully convolutional One Stage Object detection

文章目錄

    • 1 動機
    • 2 算法思想
      • 2.1 網絡結構
      • 2.2 center-ness輸出分支
      • 2.3 優化目标
    • 3 實驗結果
      • 3.1 centerness的影響
      • 3.2 和已有方法的對比
    • 4 總結
    • 5 參考資料

1 動機

目标檢測算法可以分為兩大類别,anchor-based和anchor-free算法,前者是主流的做法,比如yolo-v3、ssd、faster rcnn等,它存在如下缺點,

(1)引入很多需要優化的超參數, 比如anchor number、anchor size、anchor ratio等;

(2)為了保證算法效果,需要很多的anchors,存在正負樣本類别不均衡問題;

(3)在訓練的時候,需要計算所有anchor box同ground truth boxes的IoU,計算量較大;

那麼可不可以不使用anchor box呢,這便是第二種思路,anchor-free,代表性的算法包括yolo-v1、cornernet、FSAF(見筆者之前的文章https://blog.csdn.net/diligent_321/article/details/88384588)。

本文也屬于anchor-free類别的算法,且效果在anchor-free派系中算SOTA了。它的主要優點如下:

(1)因為輸出是pixel-based預測,是以可以複用semantic segmentation方向的tricks;

(2)可以修改FCOS的輸出分支,用于解決instance segmentation和keypoint detection任務;

2 算法思想

2.1 網絡結構

FCOS的網絡結構如下圖,顯然,它包含了如下3個部分,

(1)backbone網絡;

(2)feature pyramid結構;

(3)輸出部分(classification/Regression/Center-ness);

對于輸出部分

</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.76666em; vertical-align: -0.08333em;"></span><span class="mord mathit" style="margin-right: 0.08125em;">H</span><span class="mspace" style="margin-right: 0.222222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right: 0.222222em;"></span></span><span class="base"><span class="strut" style="height: 0.68333em; vertical-align: 0em;"></span><span class="mord mathit" style="margin-right: 0.13889em;">W</span></span></span></span></span>的特征圖,每一個像素點需要輸出類别打分、中心打分、回歸坐标,它們的次元分别為C、1和4。<br> <img src="https://img-blog.csdnimg.cn/2019040716131283.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RpbGlnZW50XzMyMQ==,size_16,color_FFFFFF,t_70" alt="在這裡插入圖檔描述"></p> 
           

大家應該也都注意到了,feature pyramid結構部分并不是标準的FPN結構,P6和P7層似乎有些多餘,是以實驗部分(Table 7)和Retinanet做對比,證明FCOS輸出部分網絡設計的優勢,筆者認為就有些差強人意了。

2.2 center-ness輸出分支

center-ness,可以譯成中心點打分,它表征了目前像素點是否處于ground truth target的中心區域,以下面的熱力圖為例,紅色部分表示center-ness值為1,藍色部分表示center-ness值為0,其他部分的值介于0和1之間。

FCOS fully convolutional One Stage Object detection

數學公式表示如下,

FCOS fully convolutional One Stage Object detection

其中,

</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.61508em; vertical-align: 0em;"></span><span class="mord mathit">c</span><span class="mord mathit">e</span><span class="mord mathit">n</span><span class="mord mathit">t</span><span class="mord mathit">e</span><span class="mord mathit" style="margin-right: 0.02778em;">r</span><span class="mord mathit">n</span><span class="mord mathit">e</span><span class="mord mathit">s</span><span class="mord mathit">s</span></span></span></span></span>的。盡管作者在實驗部分Table 5給出了這種想法的對比結果,說明了效果不好,但是缺乏理論解釋,筆者認為這裡還是可以出一些有價值的工作的。</p> 
           

3 實驗結果

3.1 centerness的影響

FCOS fully convolutional One Stage Object detection

這裡還需要提及一下,作者增加了一組實驗,如果使用ground truth center-ness值,那麼AP會從36.6提升到42.1,顯然會有很大的提升。既然作者已經指明了方向,大家如果想發paper可以沿着這個方向思考。

3.2 和已有方法的對比

由下表可以看出,FCOS的結果優于RetinaNet近2個點。并且,同FSAF算法相比,FSAF聯合anchor-based分支和anchor-free分支的結果是40.9,而單獨使用anchor-free分支無明顯提升,是以,FCOS的效果還是可以的。

FCOS fully convolutional One Stage Object detection

4 總結

(1)雖然Yolo-v1也是anchor-free算法,差別在于,yolo-v1隻利用了目标的中心區域的點做預測,是以recall較低。而FCOS利用了目标的整個區域内的點,recall和anchor-based算法相當;

(2)盡管centerness确實帶來效果上的明顯提升,但是缺乏理論可解釋性;

(3)作為一種新的anchor-free算法,它的效果确實超過了yolo-v1、cornernet、FSAF,但是,既然是one-stage算法,推理速度是固有優勢,而論文中卻始終未提速度,可見,開發anchor-free且速度較快的檢測算法,還有一段路要走。

5 參考資料

https://arxiv.org/abs/1904.01355