ATSS論文詳解

《Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection》發表於CVPR2020

代碼地址:https://github.com/sfzhang15/ATSS

現有目標檢測的主流算法中,主要分爲兩階段和一階段。而一階段的算法中,又分爲基於anchor和anchor-free的算法。在FCOS(一種anchor-free的目標檢測算法,想詳細瞭解請看《FCOS算法詳解》論文實驗證明,該方法比retinanet(一種基於anchor的算法,想詳細瞭解請看《Focal Loss for Dense Object Detection論文詳解》)結果要好。也就是說基於anchor的方法結果和anchor-free的方法結果存在一定的差異。本文做的就是探索爲什麼存在這種差異,以及如何解決這種差異。

一、anchor-based 方法與anchor-free方法結果差異的原因分析

這裏的差異要明確的是,分別用FCOS方法與retinanet方法來代表anchor-free的方法和anchor-based的方法。

爲了更好的理解下面的分析,要統一一個概念,就是在FCOS方法中,是每個FPN層輸出的featuremap的像素來測一個框,而在Retinanet中是每個FPN層輸出的featuremap中的像素對應多個anchor,也就是每個像素輸出多個框。爲了更好做對比試驗,這樣規定每個像素只對應一個正方形的anchor,這樣就將兩種方法在預測數量上等價了。這裏Retinanet的anchor大小爲對應5層的fpn輸出中的featuremap對應的正方形anchor邊長大小爲8S,S對應的featuremap的stride。

遵循上述規定的retinanet,下文都稱爲retinanet(#A=1)。Retinanet(#A=1)再採用與FCOS訓練類似的優化方法可以得到下面表格:
在這裏插入圖片描述

可以看出即使採用一樣的策略,retinanet方法還是與FCOS存在0.8的差異。
上述實驗中anchor-based Retinanet(#A=1)與anchor-free FCOS還是有兩個不同的地方,一個是二者的正負樣本定義不一致,一個是迴歸任務不一致(一個通過迴歸anchor box,一個是迴歸點到四條邊的距離)。

1.1 分類任務

首先來回顧一下兩種算法選擇正負樣本的方法,如下圖所示
在這裏插入圖片描述

對於Retinanet來說,如上圖a所示,當anchor與標註框的IoU大於某個閾值θp\theta_{p}時,該anchor爲正樣本,當anchor與標註框的IoU小於某個閾值θn\theta_{n}時,該anchor爲負樣本,其它anchor不參與訓練

對於FCOS來說,如上圖b所示,首先將在標註框內部的像素點作爲正樣本的候選,然後通過一些尺度規則將樣本分配給不同的fpn層作爲正樣本(具體查看《Focal Loss for Dense Object Detection論文詳解》),沒有選入正樣本的作爲負樣本。

通過下表,這裏做了兩個實驗,一個是Retinanet(#A=1)採用FCOS選擇正負樣本的方式訓練,一個是FCOS採用Retinanet(#A=1)選擇正負樣本的方式訓練。可以看出只要採用了非IoU,也就是FCOS的方式,結果都有提升,反之亦然。通過這個實驗,文章得到的啓示就是正負樣本的選擇對於網絡的結果很重要。
在這裏插入圖片描述

1.2 迴歸任務

兩種算法的迴歸任務如下圖所示,圖中藍色點和藍色框是標註框的中心和標註框,紅色點和紅色框表示的是anchor的中心和anchor框。b表示的是Retinanet的迴歸方式,它是從anchor框開始迴歸。c表示的是FCOS的迴歸方式,它是從點開始迴歸。
在這裏插入圖片描述

但是從1.1部分的表可以看出,只要選擇正負樣本的方式相同,迴歸方法不同,但是結果也接近,說明迴歸的起始狀態並不會很大的影響最終結果。

二、自適應選擇訓練樣本(Adaptive Training Sample Selection)

通過第一部分可以看出,兩種方法結果差異主要是訓練樣本選擇方法引起的,這部分就是解決如何更好的選擇訓練樣本的問題,也是本文重點。選擇樣本的僞代碼如下:
在這裏插入圖片描述

下面描述一下這個流程:

  1. 對於一個標註框g來說,先從FPN輸出的featuremap中,每層選取k個anchor boxes,如果輸出L層的話,那總共就有k×Lk \times L個正樣本候選。選取是根據anchor box的中心與標註框的中心的L2距離,每層選最近的k個
  2. 計算候選正樣本與標註框g的IoU,這些IoU組成的集合用DgD_g表示。
  3. 計算集合DgD_g的均值mgm_g和方差vgv_g
  4. 將均值mgm_g和方差vgv_g的和作爲一個閾值,記爲tgt_g
  5. 如果集合DgD_g中,大於閾值tgt_g,且正樣本在標註框內部,則這些候選點就是訓練時用到的正樣本
  6. 不爲正樣本的anchor點,則爲負樣本

ATSS的算法就這些,至於上述有些操作爲什麼要那樣做,文中也給出瞭解釋。

  1. 按照anchor中心與標註框中心距離來獲取候選框,文中認爲離中心越近的候選質量越高,對訓練越有幫助
  2. 使用均值和方差的和作爲閾值選擇,也是爲了選擇高質量的訓練樣本
  3. 限制訓練樣本中心在標註框內,也是爲了選擇高質量的訓練樣本

到這裏原理就介紹完了,詳細實驗結果可以查看原文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章