【AI理論】淺談Anchor-Free based目標檢測(一)
目前主流的目標檢測方法大體分為兩類:single-stage和two-stage。

single-stage典型方法有SSD系列、YOLO系列、RetinaNet等,two-stage方法有RCNN系列、Mask-RCNN、R-FCN。其他各種各樣的SOAT方法基本是這兩類方法的拓展和延伸。這兩類方法的共同點就是anchor-based,在檢測過程中都需要先生成anchor,基于這些先驗區域分別做分類和位置回歸。anchor-based方法近年來在工業界取得了巨大成功,目標檢測算法在很多領域發揮出了不可替代的作用。然而還有另一類方法,雖然不是主流,但依然能取得SOTA的性能,這就是anchor-free的方法,代表算法有CornerNet、ExtremeNet、FSAF(CVPR2019)等。
最近又重新細讀了CornerNet和ExtremeNet,梳理了一下邏輯和思路。
模型的整體結構如下圖,backbone采用hourglass network以得到高質量的feature map,接兩個分支分別預測top-left Corner 和bottom-right Corner,兩個分支的結構完全一樣。
Heatmap分支的設計
heatmap的尺寸大小為(H,W,C),C是類別數,一個channel對應一類物體。H和W和輸入圖片?一般滿足關系:??,文中Stride為4。
heatmap對應的loss函數如下,采用了focal loss的變體形式,其中??是位置為(i,j)的輸出類別為c的scores,??是對應的gt值,這個gt值被penalty reduction進行懲罰。
Offset分支的設計
由上面的介紹,heatmap和原圖輸入有一個stride大小的比例關系,在將heatmap上的點映射到原圖尺寸上時會有位置誤差。假設原圖上位置為(i,j)的點,在heatmap上對應的位置變為??,n是下采樣stride。這樣在映射的過程中會產生??的誤差。因此,模型除了預測heatmap,還同時預測了彌補映射過程中帶來的誤差offset分支
,??是offset,??,??是object k對應的corner。并且offset分支對所有類別共享,采用smooth l1函數進行訓練。
Grouping Corner的設計
假設object k的top-left Corner對應的embedding vector是??,bottom-rightCorner對應的embedding vector是??,embedding vector的訓練目的就是使得同一個object的距離越來越近,不同object的距離越來越遠,即類似于“類間間距大,類內間距小”,因此最后的loss函數如下:
Corner Pooling 的設計
ground-truth對應的Corner必然會存在不在物體上面的情況,這種情況下,Corner周圍都是背景區域,對Corner的預測很不利。從本質上來說,左上角和右下角的Corner其實根據object的邊界信息得到,ExtremeNet就很好的利用了這一點。為了利用物體邊界信息,需要一個操作可以將物體邊界信息聚合到Corner點上,因此就有了pooling操作。
pooling操作很簡單,對每個點,向水平和垂直方向進行pooling操作,這樣同一個水平和垂直方向上就包含了該方向的物體邊界信息。
以top-left Corner為例
實驗效果
基于CornerNet預測bounding box的一對左上角-右下角Corner思路,ExtremeNet直接預測object的左-下-右-上邊界,再通過預測的邊界點得到bounding box,思路更加直接。
ExtremeNet的思路很簡單,首先預測5個邊界點(extreme point),分別對應左-下-右-上4個點和位置中心點。然后對每一類邊界點根據score進行排序,取最大的k個(文中k=40),這樣就得到了40x40x40x40個組合排列,遍歷每一個排列方式,計算其中心點的位置,然后得到中心點的score,若這個score值大于閾值,則接受這個組合下的邊界點得到一個bounding box。
Center grouping
ExtremeNet的center grouping相對于CornerNet的Corner grouping操作更加簡單直接,就是采用遍歷的思路逐個判斷邊界點組合是否符合條件。
ExtremeNet的loss函數設計也參考了CornerNet
Ghost box suppression
所謂ghost box就是一個大的False positive box包含多個小的True positive box,由于在center grouping的過程中,這個False positive box的位置中心點有可能落在True positive box的中心點或附近,因為比較大的score,導致False positive box。
實驗效果
ExtremeNet在COCO上取得了新的SOTA效果,在同樣的backbone和input resolution下,single-scale比CornerNet略差,但multi-scale比CornerNet要好。
總結
Anchor free based method一般采用bottom-up的思路,先生成帶有類別信息和位置信息的feature map,再根據這些feature map得到最后的bounding boxes。總結起來,其關鍵部分包含一下幾方面:
如何生成高質量的feature map,這是得到精準的bounding boxes的前提,主要是backbone的設計。眾所周知,CNN的多層stride會損失很多位置信息,而這些信息對于pixel-level的任務至關重要。
因為沒有提前設定feature map上哪些points負責預測哪個ground-truth box,需要一個grouping操作將屬于同一個object的points劃分到一起。
訓練過程loss的設計。loss函數既需要考慮預測的feature map能學到discriminative的類別置信度,還需要輸出準確的位置信息。
CornerNet和extremeNet都嘗試從keypoint的角度做detection,擺脫了anchor的繁瑣設置,以及先驗anchor帶來的bias。從標注成本的角度來講,CornerNet只需要bounding box標注,ExtremeNet需要instance segmentation mask的標注,標注成本相對較高。同時,keypoint需要更細節的位置信息,對backbone的要求較高,所以hourglass network這類對keypoint較友好的網絡成為了第一選擇,帶來的問題是檢測速度較慢。
另外CVPR2019的Feature Selective Anchor-Free Module for Single-Shot Object Detection也從anchor-free的角度改進了RetinaNet,取得了不錯效果,具體的解讀可以參考我的另一篇ywsun:[CVPR2019]:FSAF for Single-Shot Object Detection
目前anchor-free的文章越來越多,很多人開始考慮從keypoint、segmentation的角度入手做detection,但想要取得像Faster R-CNN、SSD、RetinaNet的實用性和效果還有很長的路要走。
參考文獻:
Associative embedding: End-to-end learning for joint detection and grouping
Deep extreme cut: From extreme points to object segmentation
轉自:https://zhuanlan.zhihu.com/p/58183628
EI 人工智能 AI
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。