1. 程式人生 > 實用技巧 >ATSS:自動選擇樣本,消除Anchor based和Anchor free物體檢測方法之間的差別

ATSS:自動選擇樣本,消除Anchor based和Anchor free物體檢測方法之間的差別

點選上方“AI公園”,關注公眾號,選擇加“星標“或“置頂”


導讀

本文認為,anchor based和anchor free物體檢測方法的本質區別在於如何選擇樣本,文章通過實驗驗證了這個想法,並提出了一種自動選取樣本的方法,在不引入任何計算量的情況下,提升了效果,並且可以認為是沒有任何超引數。

論文:https://arxiv.org/abs/1912.02424

程式碼:https://github.com/sfzhang15/ATSS

後臺回覆“ATSS”獲取打包好的論文和程式碼

摘要

文章指出,基於anchor的方法和anchor free的方法的本質區別在於如何定義正負樣本。所以,文章提出了一個自適應的樣本選擇的方法來根據物體的統計特性自適應的選擇正負樣本,提升了效能,同時顯著縮小了anchor based和anchor free方法之間的gap。

1. 介紹

anchor free的方法一般有兩種:一種是定位可以保衛物體的預定義的特徵點,稱為keypoint-based方法,另一種是使用物體的中心點或者物體的區域來定義正樣本,然後預測該正樣本點到4個邊的距離,這種稱為center-based方法。這兩種方法中,keypoint-based方法是follow了特徵點檢測的方法,和anchor based方法差別較大,而center-based方法則把點看做是樣本,這和anchor based方法中把anchor看做是樣本是非常相似的。

以RetinaNet和FCOS為例,比較這兩種方法的區別:(1)每個空間位置的樣本數量不同,RetinaNet的每個位置有好幾個anchor,而FCOS每個位置只有一個anchor點。(2)正負樣本的定義不同,RetinaNet使用IOU來定義正負樣本,FCOS使用空間和尺度約束來選擇樣本。(3)迴歸的初始狀態不一樣,RetinaNet從預設的anchor為起點進行迴歸,而FCOS的迴歸起點是該位置的anchor點。從FCOS的論文中可以看到,FCOS的效果要比RetinaNet好的多。所以需要研究一下,這三個不同點,哪個才是決定性的。

本文的貢獻點:

  • 指出了anchor based和anchor free方法分本質區別在於如何選擇正負樣本。

  • 提出了基於物體統計特性自適應的選擇正負樣本的方法。

  • 指出了在單個空間位置上疊加多個anchor來做物體檢測是沒什麼用的。

  • 沒有增加任何的開銷,在MS COCO上達到了SOTA。

2. Anchor-based和Anchor-free方法的區別分析

2.1 去掉不相干的東西

我們使用MS COCO來做實驗,我們把只使用了一個正方形anchor的RetinaNet記做RetinaNet(#A=1),這其實和anchor free的FCOS非常接近了。不過,在FCOS的論中,FCOS的效果要比RetinaNet好很多,一個是37.1%,一個是32.5%。FCOS中還用了一些進一步的優化,包括把centerness的預測移動到迴歸分支中,使用GIoU loss,通過對於的stride對target做歸一化,這些方法將FCOS從37.1%提升到37.8%。在FCOS使用的一些優化方法,其實也可以用在RetinaNet中,比如在檢測頭上加GroupNorm,使用GIoU損失函式,限制groundtruth box的正樣本,引入centerness分支,在特徵金字塔中引入可訓練的尺度引數s。不過,這些都不是兩者的根本的區別。我們把這些優化方法一個一個的加入到了RetinaNet(#A=1)中,如表1,performance提升到了37.0%。還是有0.8%的gap。現在,去掉了這些不相干的差別,我們可以來探索一下兩者的根本差別在哪裡。

2.1 根本的差別

現在,RetinaNet(#A=1)和FCOS只有兩個差別了,一個和分類子任務相關,也就是定義正負樣本的方法,另一個和迴歸子任務相關,也就是迴歸的起點是anchor box還是anchor點。

分類

如圖1(a),RetinaNet使用IOU將來自不同level的anchor box劃分為正負樣本,對於每個物體,在IOU>θp的所有anchor box中,選一個最大的作為正樣本,所有IOU<θn的都認為是負樣本,其他的都忽略掉。如圖1(b),FCOS使用空間和尺度約束將anchor點分配到不同的level上,首先將所有在groundtruth box內的anchor點作為候選點,然後基於預先對每個level設定的尺度範圍來選擇最終的正樣本,沒有選中的點就是負樣本。

這兩種不同的方案最終的到了不同的正負樣本。見表2,如果在RetinaNet(#A=1)使用空間和尺度約束的方式來代替IOU來選擇正負樣本,RetinaNet(#A=1)的performance可以提升到37.8%。而對於FCOS,如果使用IOU的策略在選擇正負樣本,那麼performance會降到36.9%。這表明了正負樣本的選擇策略才是這兩種方法的根本區別。

迴歸

在正負樣本確定了之後,需要對正樣本進行物體位置的迴歸。如果圖2,RetinaNet迴歸的是anchor box和groundtruth的4個offset,而FCOS迴歸的是anchor點到4條邊的距離。這表明RetinaNet的迴歸起點是一個框,而FCOS的迴歸起點是一個點。而表2中可以看到,當RetinaNet和FCOS使用相同的正負樣本選擇策略的時候,兩者並沒有明顯的差別,這表明迴歸的起點並不是兩個方法的本質區別。

結論 從上面的實驗可以得出結論,一階段的anchor based物體檢測方法和center-based anchor free的物體檢測方法的本質區別在於正負樣本的選取策略上。

3. 自適應樣本選擇

3.1 描述

之前的樣本選擇策略都是有一些敏感的超引數的,比如anchor based方法中有IOU的閾值,anchor free的方法中有尺度範圍。我們提出的自適應的方法,通過物體的統計特性,自動的區分正負樣本,不需要任何超引數。

對於每個groundtruth box g,我們首先找到它的候選正樣本。在每個level上,我們選擇k個anchor box,它們的中心點和g的中心點的距離是最近的。假設有L的特徵level,groundtruth box g就可以得到k×L個候選正樣本,然後,我們計算這些候選正樣本與g的IOU,這些IOU的均值和方差記為mg和vg,得到IOU的閾值tg=mg+vg,然後,我們在這些候選正樣本中選擇IOU大於等於閾值tg的作為最終的正樣本。我們還特別的對正樣本的中心做了限制,必須落在物體內部,另外,如果某個anchor box匹配到了多個groundtruth box上,只選擇IOU最高的那個作為最終的匹配。其餘的都是負樣本。演算法流程如下:

基於中心距離來選擇候選正樣本

對於RetinaNet,anchor box和groundtruth box的中心點越接近,IOU會越大,對於FCOS,anchor點和物體中心越接近,產生的檢測的質量越高。因此,越靠近物體中心的anchor是更好的候選正樣本。

使用均值和方差的和作為IOU的閾值

IOU的均值是這個物體和anchor box的匹配度的度量,mg越大表示候選正樣本的質量越高,那麼IOU的閾值可以設定的高一些。mg越小表示候選正樣本的質量越低,閾值應該設定的小一些。vg是哪些特徵level與這個物體相匹配的度量,vg高,表明對於這個物體,有一個非常匹配的特徵level,可以使用較大的閾值只從哪個最匹配的層中選擇正樣本,而vg低,表明好幾個特徵level都可以和這個物體匹配,設定一個較小的閾值可以廣泛的從這幾個合適的層中都選出樣本來作為正樣本。見圖3。

正樣本中心的限制

anchor的中心點在物體外面的候選正樣本是不好的正樣本,這些正樣本由物體外面的特徵預測,在訓練的時候應該去掉。

在不同的物體之間保持公平

根據統計理論,有16%的樣本在[mg+vg, 1]的置信區間,雖然候選樣本的IOU的分佈並不是標準的正太分佈,統計結果表明對於每個物體,有大約0.2×kL個正樣本,這個對於尺度,比例,位置具有不變性,而對於RetinaNet和FCOS的策略,大的物體會趨向於有更多的正樣本,這導致了不同尺度物體之間的不公平性。

幾乎不需要超引數

這裡只有一個超引數k,後面的實驗表明了實驗結果對於這個超引數其實並不敏感,所以可以認為是不需要超引數。

3.2 驗證

Anchor based RetinaNet

為了驗證ATSS的有效性,我們用這個策略替換了RetinaNet(#A=1)中的策略,效果見表3。

Anchor Free FCOS

將ATSS方法用到FCOS中有兩個版本,一個是lite版本,一個是full版本,對於lite版本,我們把ATSS的方法用到了FCOS中,替換了其中的樣本選擇的方法。FCOS把anchor點看做是候選樣本點,這導致了大量的低質量的候選樣本點,我們的方法在每個特徵level中為每個GT選擇了k=9個候選樣本點。lite版本已經作為center sampling合併到了FCOS的官方程式碼中,將FCOS從37.8%提升到了38.6%。但是,尺度範圍的超引數依然是存在的。

對於full版本,我們將FCOS中的anchor點變為使用8S尺度的anchor box來定義正負樣本,但是仍然和anchor點一樣進行迴歸。結果見表3。這兩個版本具有相同的選擇候選正樣本的策略,差別在於在尺度維度選取最終正樣本的方法。從表3可以看到,full版本要好於lite版本,這表明,自適應選擇最終正樣本的方法要比固定選擇最終正樣本的方法要好。

3.3 分析

在訓練的時候,現在只有一個超引數k和相關的anchor box的設定。下面分別分析:

超引數k

我們做了幾個實驗來驗證超引數k的魯棒性,見表4,我們使用了不同的k,發現了k的值在7~19的範圍內對結果變化不大,太大的k導致了太多的低質量的候選樣本反而會導致AP下降,k太小也會導致AP下降,因為太少的候選正樣本會導致統計量不穩定。總的來說,超引數k是非常魯棒的。

Anchor尺寸

在之前的實驗中,使用的是一個8S(S表示該特徵level的stride size)的正方形anchor,我們實驗了不同尺度的正方形anchor,見表5,發現差別不大。另外,我們還實驗了不同比例的anchor,見表6,也沒什麼差別。這表明該方法對於anchor的設定是不敏感的。

3.4 對比

和其他方法的對比。

3.5 討論

之前的實驗使用的是RetinaNet,每個位置只使用了一個anchor,對於anchor based和anchor free方法,其實還有一個區別,就是每個位置的anchor的數量,實際上,原始的RetinaNet每個位置有9個anchor,3個尺度和3個比例,我們記為RetinaNet (#A=9) ,從表7中可以看到,AP為36.3%,通用的優化方法也可以用在RetinaNet (#A=9) 上,將AP提升到了38.4%,這要比RetinaNet (#A=1) 要好,這說明,在傳統的IOU based正負樣本選擇策略下,更多的anchor可以取得更好的效果。

但是,使用了我們的方法之後,RetinaNet (#A=9) 和RetinaNet (#A=1)的performance幾乎一樣。換句話說,只要樣本選取的合理,每個位置選取多少anchor都是無所謂的。因此,我們認為,每個位置上的多個anchor是沒有必要的。

—END—

後臺回覆“ATSS”獲取打包好的論文和程式碼。

請長按或掃描二維碼關注本公眾號

喜歡的話,請給我個在看吧