ATSS:自動選擇物體檢測中的正負樣本

2020-10-13 AI公園

導讀

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


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

代碼:https://github.com/sfzhang15/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是沒有必要的。

更多內容,請關注微信公眾號「AI公園」。

相關焦點

  • BBAVectors:無Anchor的旋轉物體檢測方法
    摘要這是一篇有方向的物體檢測的文章。當前的有方向物體檢測往往是兩階段的基於anchor的檢測方法,但是這種方法會有正負anchor的不平衡的問題。這篇文章將基於水平關鍵點的物體檢測的方法擴展了一下,用於有方向的物體檢測。
  • SSD物體檢測算法詳解
    物體檢測算法,按算法結構,可以分為one-stage和two-stage兩類。
  • FCOS:全卷積一階段Anchor Free物體檢測器
    一旦anchor設計好了,尺寸,比例就固定了,在物體的尺寸和比例多樣性非常大的時候會有困難,特別是小物體。預設的anchor的泛化能力也有限,對於新的任務,需要重新去設計anchor。為了有高recall,需要設計非常密集的anchor,FPN中的anchor數量就超過了160k,而且大部分都是負樣本,正負樣本非常的不均衡。
  • FCOS:全卷積一階段Anchor Free物體檢測器,多種視覺任務的統一框架
    為了有高recall,需要設計非常密集的anchor,FPN中的anchor數量就超過了160k,而且大部分都是負樣本,正負樣本非常的不均衡。在計算的時候需要計算IOU,非常的複雜。現在的各種計算機視覺的任務,比如分割,深度預測,關鍵點加測,計數等等,都是全卷積的結構,就物體檢測是個例外。
  • FCOS:全卷積一階段Anchor Free物體檢測器,多種視覺任務的統一框架
    為了有高recall,需要設計非常密集的anchor,FPN中的anchor數量就超過了160k,而且大部分都是負樣本,正負樣本非常的不均衡。在計算的時候需要計算IOU,非常的複雜。現在的各種計算機視覺的任務,比如分割,深度預測,關鍵點加測,計數等等,都是全卷積的結構,就物體檢測是個例外。那麼,很自然的就有了一個問題:我們能不能把物體檢測也變成類似分割那樣的逐像素的預測問題呢?
  • EasyDL物體檢測新手10問10答
    HI終於等到你,如果你正在嘗試使用百度EasyDL訓練模型,可能正遇到這樣的問題:想要自動檢測零件外觀上是否有裂痕、缺口;想要自動檢查工人是否正確佩戴安全帽、穿工作服、是否在禁區抽菸;想要自動統計血液化驗中的紅細胞、白細胞分別有多少;
  • 在物體檢測中搞定小目標
    小物體檢測是很難的!以Efficient為例,小目標的AP只有12%,大目標的AP為51%。這幾乎是五倍的差異!那麼,為什麼檢測小物體如此困難呢?這一切都歸結於模型。目標檢測模型通過在卷積層中對像素進行聚合來形成特徵。
  • 香港中文大學陳愷:物體檢測算法的近期發展及開源框架介紹 | 大...
    Instance segmentation:實例分割,可以理解為進行物體檢測後,對每個矩形框中的物體進行語義分割,該任務除了需要找到物體的類別和位置之外,還需要分辨出不同物體的 pixel。下面用這個案例來說明物體檢測和實例分割之間的區別:
  • 實戰解析:真實AI場景下,極小目標檢測與精度提升
    EasyDL目前支持的圖像任務類型包括圖像分類、物體檢測、圖像分割。在企業應用中,圖像分類和物體檢測佔比較高,因此百度在這兩方面投入了很多的人力來進行優化。物體檢測任務綜述物體檢測定義物體檢測是指,給定一張圖片,識別出圖片中的物體屬於哪個類別,並對相應的物體進行位置的定位。
  • 細說物體檢測中的Anchors
    作者:Raghul Asokan編譯:ronghuaiyang導讀給大家再次解釋一下Anchors在物體檢測中的作用。今天,我將討論在物體檢測器中引入的一個優雅的概念 —— Anchors,它是如何幫助檢測圖像中的物體,以及它們與傳統的兩階段檢測器中的Anchor有何不同。像往常一樣,讓我們看看在哪些問題中,anchors被引入作為解決方案。
  • NeurIPS'20 | 微軟亞洲研究院論文摘錄之目標檢測篇
    目標檢測(object detection)是計算機視覺中的基礎任務,旨在定位圖像或視頻中某幾類物體的坐標位置。本文將對微軟亞洲研究院入選 NeurIPS 2020 中的目標檢測工作進行介紹。圖1展示了四個主流框架的物體表示形式,以及初始化的物體表示形式如何形成最終的檢測框。可以看到,不同的物體表示形式分別利用其框架的特徵來回歸最終的檢測框。
  • AAAI 2021 | 用於旋轉目標檢測的動態錨框學習策略
    Motivation  基於anchor的算法在訓練時首先根據將預設的anchor和目標根據IoU大小進行空間匹配,以一定的閾值(如0.5)選出合適數目的anchor作為正樣本用於回歸分配的物體。但是這會導致兩個問題:    進一步加劇的正負樣本不平衡。
  • 紅外開關物體檢測電路圖
    打開APP 紅外開關物體檢測電路圖 電子懶人 發表於 2019-10-07 15:39:00   本例電路利用一個紅外發射二極體和紅外接收二極體組成的物體檢測電路
  • 基於Co-Attention和Co-Excitation的少樣本目標檢測|NeurIPS 2019
    論文提出的one-shot目標檢測算法的特徵主要來自兩種上下文信息:目標圖片能夠提供空間上下文,對比其它前景物體和背景來找出特殊對象的位置目標圖片和查詢圖片能夠提供類別上下文,而確切的類別層次則是由模版和目標對象的相同屬性(顏色,紋理,形狀等)決定的度量學習(Metric learning)是one-shot分類問題的關鍵,但不能直接簡單地將學習到的度量方法應用到one-shot目標檢測中,因為檢測器需要先知道哪塊區域最有可能包含目標才能進行比較
  • 目標檢測入門,看這篇就夠了 上篇
    文章中特別提到,IoU閾值的選擇對結果影響顯著,這裡要談兩個threshold,一個用來識別正樣本(如跟ground truth的IoU大於0.5),另一個用來標記負樣本(即背景類,如IoU小於0.1),而介於兩者之間的則為難例(Hard Negatives),若標為正類,則包含了過多的背景信息,反之又包含了要檢測物體的特徵,因而這些
  • 圖像目標檢測算法——總結
    既然要訓練RPN 的分類,就需要定義正負樣本。在RPN 中,正樣本被定義為滿足如下條件之一的那些anchor box:1. 在anchor box 中具有最高的GT IoU;2. GT IoU 大於0.7。而對於負樣本來說,只要滿足GTIoU 小於0.3,即被認定為負樣本。
  • 細粒度物體檢測算法的升級揭秘
    在眾多模型使用場景中,小目標物體的檢測比較常見,一般的目標檢測算法往往效果不理想;因此,EasyDL團隊針對小目標物體的檢測進行了專項優化,並取得了令人矚目的效果提升。自AlexNet在2012年ImageNet比賽上展露頭角以來,計算機視覺各個方向和神經網絡的聯繫變得越發緊密,物體檢測也不例外。
  • 國務院:嚴格選擇樣本外送核酸檢測機構,強化實驗室室內質控
    國務院:嚴格選擇樣本外送核酸檢測機構,強化實驗室室內質控 關於加強外送樣本新冠病毒核酸檢測質量管理工作的通知各省、自治區、直轄市及新疆生產建設兵團應對新冠肺炎疫情聯防聯控機制
  • 「品覽AI論技」RetinaNet在貨架商品盤點中的應用
    品覽面向快消零售行業提供AI物品識別服務,利用計算機視覺智能識別海量SKU,從零售貨架圖像中解析準確有效且完備的數據。在計算機視覺諸多目標檢測模型中,RetinaNet作為經典模型之一,在檢測精度和檢測速度兩方面都有優異的表現。選擇RetinaNet模型框架並調優應用在貨架商品檢測場景,深受客戶好評。
  • 開始構建機器學習模型之前,我們該怎麼選擇樣本?
    樣本選擇主要是從海量數據中識別和選擇相關性高的數據作為機器學習模型的輸入,最理想的情況就是選擇了最少量的樣本,模型的效果依然不會變差。樣本選擇有以下三點好處:當數據量過大,程序會耗費大量的計算資源,減少數據量能夠縮減模型的運算時間,使得某些因為數據量過大而無法應用的機器學習模型的問題變得可能。