深度學習目標檢測--anchor

目標檢測算法–anchor

給目標檢測算法分類,可以從好幾個維度去看。例如我們常見的One-Stage和Two-Stage,這是從網絡Stage數量上來分的。今天總結的方法,是根據是否有anchor來區分,所以在這個維度上,目標檢測算法可以分爲anchor based和anchor free,其實歸根結底,都被稱爲Proposal Generation。其實anchor-free並不是一個新概念,大名鼎鼎的yolo應該是目標檢測領域最早的anchor-free模型了。

Proposal Generation在目標檢測中也是一個非常重要的角色,因爲目標檢測是需要定位的,定位準不準,全看proposal。一個Proposal生成器可以生成一系列的Bounding Box,這些BBox都是潛在的目標。我們將生成Proposal的方法分爲四類:傳統計算機視覺方法,anchor-based監督學習方法,anchor-free方法。不管是One-Stage還是Two-Stage算法都會生成Proposal,兩者主要的區別是Two-Stage的算法生成的Proposal只有前景或者背景簡單的二分類信息,具體類別和精細位置迴歸值由另一個stage的網絡完成;然而One-Stage算法認爲圖像中每一個區域都是一個潛在的proposal,然後有根據地去預測出潛在目標的座標和類別。

1、傳統計算機視覺方法

這類的方法是使用傳統計算機視覺的方法去生成Proposal,例如“邊”,”角“,”顏色“,”連通域“之類的。從目標檢測算法的發展路線中就可以看到,早期的目標檢測算法就是通過一些傳統視覺方法找到Proposal,例如大名鼎鼎的SS方法(Selective Search),在fast RCNN中被用來獲取推選框的那個。這裏涉及到一個概念叫做超像素(superpixels),超像素是一系列像素的集合,這些像素具有類似的顏色、紋理、、梯度等特徵,並且距離相近,然後把這些像素歸於一類。如下圖所示

在這裏插入圖片描述
通過合併超級像素之後,可以很粗略地找到一些潛在的目標,然後再通過一系列分割的算法,最終生成一些Proposals。後來由於此種方法太耗時,逐漸被CNN取代,以至於現在基本上看不到傳統算法做proposal了。

2、Anchor-based 方法

anchor-based方法在目標檢測算法中佔有半壁江山,這種說法絕不爲過,此種方法是根據預先定義的anchor來生成Proposal。我是在Faster-RCNN中第一次接觸到proposal,使用監督學習RPN網絡去生成Proposal,這裏引用下關於FasterRCNN的介紹

第一步是在一個滑動窗口上生成不同大小和長寬比例的anchor box,取定IoU的閾值來標定這些anchor box的正負。於是,傳入RPN網絡的樣本數據被整理爲anchor box(座標)和每個anchor box是否有物體(二分類標籤)。RPN網絡將每個樣本映射爲一個概率值和四個座標值,概率值反應這個anchor box有物體的概率,四個座標值用於迴歸定義物體的位置。最後將二分類和座標迴歸的損失統一起來,作爲RPN網絡的目標訓練。由RPN得到Region Proposal在根據概率值篩選後經過類似的標記過程,被傳入R-CNN子網絡,進行多分類和座標迴歸,同樣用多任務損失將二者的損失聯合。

後來SSD直接使用多尺度anchor去匹配目標,這一點跟RPN有一點類似,在預定義的acnhor上使用不同的aspect ratio,所以能夠適應多尺度的目標檢測。 SSD的思想和RPN不同之處在於,前者可以在每一個Anchor Proposal上輸出具體的類別判斷,後者只能輸出是前景還是背景的概率值,具體的類別需要另一個stage的算法判斷。

後面,不管是目標檢測還是人臉檢測,很多都是anchor-based的方法

3、anchor-free方法

anchor-free的方法提出的還挺早的,早在2015年DenseBox做人臉檢測,yoloV1做目標檢測,MTCNN做人臉檢測,這些都是anchor-free的方法。這些可以被看成是anchor-free的早期探索吧,因爲yolov2和yolov3後來都不使用anchor-free了。

在這裏插入圖片描述

  • 基於關鍵點的方法

    基於關鍵點的方法又可以被分爲corner-based和center-based。最早的基於關鍵點的方法是CornerNet,是通過檢測bbox的對角線來檢測出目標,提出corner pooling,更好地定位bbox的角點。首先預測出兩組heatmaps,一組爲top-left角點,另一組爲bottom-right角點,每一組heatmaps有C個通道,表示C個類別,尺寸爲HxW。ExtremeNet通過預測上下左右四個極值點和一箇中心點來檢測目標,CenterNet是預測左上角點,右下角點和中心點三個值。從目前的目標檢測效果來看CenterNet的性能還不錯,正在持續跟進。

  • 基於密集預測的方法

    密集預測就是直接在特徵圖上回歸出object的座標,不同於角點檢測。關於這一塊的內容,我也實踐的比較少,經常聽說的幾類方法有FCOSFoveaBox,感興趣的同學自己去看下原文吧。

從目前的檢測算法文章來看,感覺anchor-free的方法更加的流行,新的文章層出不窮。應該去多花點時間學學新的東西了。


公衆號:卡本特
在這裏插入圖片描述

發佈了62 篇原創文章 · 獲贊 61 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章