目标检测_目标检测: AnchorFree 时代
本文轉載自Smarter。
自從2018年8月CornerNet開始,Anchor-Free的目標檢測模型層出不窮,最近達到了井噴的狀態,宣告著目標檢測邁入了Anchor-Free時代。
其實Anchor-Free并不是一個新概念了,大火的YOLO算是目標檢測領域最早的Anchor-Free模型,而最近的Anchor-Free模型如FASF、FCOS、FoveaBox都能看到DenseBox的影子。
下面主要講一下有代表性的Anchor-Free模型(包括DenseBox、YOLO、CornerNet、ExtremeNet、FSAF、FCOS、FoveaBox),分成3個部分來介紹(早期探索、基于關鍵點、密集預測),具體細節就不展開了~早期探索
1.DenseBox
最早知道這篇文章,是在去年剛接觸目標檢測的時候,看了一篇地平線對DenseBox作者的采訪,當時因為剛接觸感觸不深,但是從當前的時間節點回頭看,DenseBox的想法是多么的超前啊。采訪中說道,當年DenseBox其實早在2015年初就已經開發出來了,這比同期的Faster-RCNN系列提前數月,但是論文直到9月才在arxiv上發布。如果DenseBox能在2015年初就發表,那么最近幾年目標檢測的發展會不會是另外一番景象呢~~
地平線HorizonRobotics:黃李超:讓算法成為一種生活方式 | 地平線算法工程師特稿 |?https://zhuanlan.zhihu.com/p/24350950
兩點貢獻:
1.證明單個FCN可以檢測出遮擋嚴重、不同尺度的目標。
2.通過多任務引入landmark localization,能進一步提升性能。
如圖1所示,單個FCN同時產生多個預測bbox和置信分數的輸出。測試時,整個系統將圖片作為輸入,輸出5個通道的feature map。每個pixel的輸出feature map得到5維的向量,包括一個置信分數和bbox邊界到該pixel距離的4個值。最后輸出feature map的每個pixel轉化為帶分數的bbox,然后經過NMS后處理。
Ground Truth Generation
第一個通道ground truth map的正標簽區域由半徑為r的圓填充,圓的中心點位于bbox的中點。而剩下的4個通道由bbox的2個角點決定。
Refine with Landmark Localization
在FCN結構中添加少量層能夠實現landmark localization,然后通過融合landmark heatmaps和score map可以進一步提升檢測結果。
2.YOLO
YOLO將目標檢測作為一個空間分離的邊界框和相關的類概率的回歸問題。可以直接從整張圖片預測出邊界框和分類分數。
三個優點:
1.速度快
2.通過整幅圖進行推理得到預測結果
3.能學到目標的一般特征
Unified Detection
YOLO將輸入圖片分成SXS個網格,如果某個目標的中心點落到其中一個格點,那么該格點就負責該目標的檢測。每個格點預測出B個bbox和每個bbox的置信分數。
定義置信度為:
每個bbox由5個預測值組成:x,y,w,h 和 置信度。每個格點也預測C個類概率
測試的時候,將類概率和置信分數相乘,得到類置信分數
舉個例子,在Pascal VOC數據集上評估YOLO,使用S=7,B=2,VOC有20類,所以C=20,那么最終的預測結果是7x7x30的向量。
DenseBox和YOLO的區別:
1.DenseBox應用于人臉檢測,相當于只有兩類,而YOLO是通用檢測,通常大于兩類。
2.DenseBox是密集預測,對每個pixel進行預測,而YOLO先將圖片進行網格化,對每個grid cell進行預測。
3.DenseBox的gt通過bbox中心圓形區域確定的,而YOLO的gt由bbox中心點落入的grid cell確定的。基于關鍵點
3.CornerNet
兩點貢獻:
1.通過檢測bbox的一對角點來檢測出目標。
2.提出corner pooling,來更好的定位bbox的角點。
Detecting Corners
首先預測出兩組heatmaps,一組為top-left角點,另一組為bottom-right角點。每組heatmaps有C個通道,表示C個類別,尺寸為HxW。每個通道是一個binary mask,表示一個類的角點位置。
對于每個角點來說,只有一個gt正例位置,其他都為負例位置。訓練時,以正例位置為圓心,設置半徑為r的范圍內,減少負例位置的懲罰(采用二維高斯的形式),如上圖所示。
Grouping Corners
受到多人姿態估計論文的啟發,基于角點embedding之間的距離來對角點進行分組。
Corner Pooling
在每個pixel位置,最大池化第一個feature map右方的所有特征向量,最大池第二個feature map下方的所有特征向量,然后將兩個池化結果相加。
4.ExtremeNet
兩個貢獻:
1.將關鍵點定義為極值點。
2.根據幾何結構對關鍵點進行分組。
作者使用了最佳的關鍵點估計框架,通過對每個目標類預測4個多峰值的heatmaps來尋找極值點。另外,作者使用每個類center heatmap來預測目標中心。僅通過基于幾何的方法來對極值點分組,如果4個極值點的幾何中點在center map上對應的分數高于閾值,則這4個極值點分為一組。
offset的預測是類別無關的,而極值點的預測是類別相關的。center map沒有offset預測。網絡的輸出是5xC heatmaps和4x2offset maps,C是類別數。
Center Grouping
分組算法的輸入是每個類的5個heatmaps,一個center heatmap和4個extreme heatmaps,通過檢測所有的峰值來提取出5個heatmaps的關鍵點。給出4個極值點,計算幾何中心,如果幾何中心在center map上對應高響應,那么這4個極值點為有效檢測。作者使用暴力枚舉的方式來得到所有有效的4個關鍵點。
CornerNet和ExtremeNet的區別:
1.CornerNet通過預測角點來檢測目標的,而ExtremeNet通過預測極值點和中心點來檢測目標的。
2.CornerNet通過角點embedding之間的距離來判斷是否為同一組關鍵點,而ExtremeNet通過暴力枚舉極值點、經過中心點判斷4個極值點是否為一組。密集預測
5.FSAF
Motivation
讓每個實例選擇最好的特征層來優化網絡,因此不需要anchor來限制特征的選擇。
一個anchor-free的分支在每個特征金字塔層構建,獨立于anchor-based的分支。和anchor-based分支相似,anchor-free分支由分類子網絡和回歸子網絡。一個實例能夠被安排到任意層的anchor-free分支。訓練期間,基于實例的信息而不是實例box的尺寸來動態地為每個實例選擇最合適的特征層。選擇的特征層學會檢測安排的實例。推理階段,FSAF模塊和anchor-based分支獨立或者聯合運行。
Feature Selective Anchor-Free Module
在RetinaNet的基礎上,FSAF模塊引入了2個額外的卷積層,這兩個卷積層各自負責anchor-free分支的分類和回歸預測。具體的,在分類子網絡中,feature map后面跟著K個3x3的卷積層和sigmoid,在回歸子網絡中,feature map后面跟著4個3x3的卷積層和ReLU。
Ground-truth
白色為有效區域,灰色為忽略區域,黑色為負樣本區域。
Online Feature Selection
實例輸入到特征金字塔的所有層,然后求得所有anchor-free分支focal loss和IoU loss的和,選擇loss和最小的特征層來學習實例。訓練時,特征根據安排的實例進行更新。推理時,不需要進行特征更新,因為最合適的特征金字塔層自然地輸出高置信分數。
6.FCOS
四個優點:
1.將檢測和其他使用FCN的任務統一起來,容易重用這些任務的思想。
2.proposal free和anchor free,減少了超參的設計。
3.不使用trick,達到了單階段檢測的最佳性能。
4.經過小的修改,可以立即拓展到其他視覺任務上。
和語義分割相同,檢測器直接將位置作為訓練樣本而不是anchor。具體的,如果某個位置落入了任何gt中,那么該位置就被認為是正樣本,并且類別為該gt的類別。基于anchor的檢測器,根據不同尺寸安排anchor到不同的特征層,而FCOS直接限制邊界框回歸的范圍(即每個feature map負責一定尺度的回歸框)。
Center-ness
為了剔除遠離目標中心的低質量預測bbox,作者提出了添加center-ness分支,和分類分支并行。
開根號使center-ness衰退緩慢。center-ness范圍為0-1之間,通過BCE訓練。測試時,最終分數由center-ness預測結果和分類分數乘積得到。
7.FoveaBox
Motivation
人類眼睛的中央凹:視野(物體)的中心具有最高的視覺敏銳度。FoveaBox聯合預測對象中心區域可能存在的位置以及每個有效位置的邊界框。由于特征金字塔的特征表示,不同尺度的目標可以從多個特征層中檢測到。
FoveaBox添加了2個子網絡,一個子網絡預測分類,另一個子網絡預測bbox。
Object Fovea
目標的中央凹如上圖所示。目標中央凹只編碼目標對象存在的概率。為了確定位置,模型要預測每個潛在實例的邊界框。
FSAF、FCOS、FoveaBox的異同點:
1.都利用FPN來進行多尺度目標檢測。
2.都將分類和回歸解耦成2個子網絡來處理。
3.都是通過密集預測進行分類和回歸的。
4.FSAF和FCOS的回歸預測的是到4個邊界的距離,而FoveaBox的回歸預測的是一個坐標轉換。
5.FSAF通過在線特征選擇的方式,選擇更加合適的特征來提升性能,FCOS通過center-ness分支剔除掉低質量bbox來提升性能,FoveaBox通過只預測目標中心區域來提升性能。
(DenseBox、YOLO)和(FSAF、FCOS、FoveaBox)的異同點:
1.都是通過密集預測進行分類和回歸的。
2.(FSAF、FCOS、FoveaBox)利用FPN進行多尺度目標檢測,而(DenseBox、YOLO)只有單尺度目標檢測。
3.(DenseBox、FSAF、FCOS、FoveaBox)將分類和回歸解耦成2個子網絡來得到,而(YOLO)分類和定位統一得到。
總結:
1.各種方法的關鍵在于gt如何定義
ps:關于這一點我稍加一點補充,目標檢測的gt是一個矩形框,然而用這個矩形框信息來檢測目標顯然是不合理的,因為矩形框內只有一小部分是目標,而剩下的是背景,這可能會導致檢測器的精度下降,而最近的一些anchor-free模型其實是改變了gt的定義,比如cornernet定義為角點,extremenet定義為極值點和中心點,FSAF、FoveaBox定義為矩形框的中間區域,FCOS雖然是矩形框,但是經過center-ness抑制掉低質量的框,其實也是一種變相的將gt定義為矩形框中心區域。gt重新定義之后,需要檢測的目標語義變得更加明確了,有利于分類和回歸。
所以,我認為設計合適的gt,是提升目標檢測速度和精度的關鍵!
個人所見,歡迎探討~
2.主要是基于關鍵點檢測的方法和密集預測的方法來做Anchor-Free
3.本質上是將基于anchor轉換成了基于point/region
Reference【1】DenseBox: Unifying Landmark Localization with End to End Object Detection【2】You Only Look Once: Unified, Real-Time Object Detection【3】CornerNet: Detecting Objects as Paired Keypoints【4】Bottom-up Object Detection by Grouping Extreme and Center Points【5】Feature Selective Anchor-Free Module for Single-Shot Object Detection【6】FCOS: Fully Convolutional One-Stage Object Detection【7】FoveaBox: Beyond Anchor-based Object DetectorEND
備注:目標檢測
目標檢測交流群
2D、3D目標檢測等最新資訊,若已為CV君其他賬號好友請直接私信。
我愛計算機視覺微信號:aicvml
QQ群:805388940
微博知乎:@我愛計算機視覺
投稿:amos@52cv.net
網站:www.52cv.net
在看,讓更多人看到 ?
總結
以上是生活随笔為你收集整理的目标检测_目标检测: AnchorFree 时代的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql innodb表移植_mysq
- 下一篇: 临颖一高2021高考成绩查询,临颍一高举