從錨點到關鍵點,最新的目標檢測方法發展到哪了

机器之心發表於2019-08-19

從經典的 R-CNN 到今年非常受關注的 CenterNet,目標檢測近幾年到底有哪些發展?現在都到 2019 年了,基於關鍵點檢測這一新正規化效果到底怎麼樣?對於目標檢測,這篇 40 頁的綜述論文有你想要的所有答案。

目標檢測計算機視覺領域中的一個基礎視覺識別問題,在近幾十年得到了廣泛研究。視覺目標檢測即在給定影像中找出屬於特定目標類別的物件及其準確位置,併為每個物件例項分配對應的類別標籤。

近日,來自新加坡管理大學和 Salesforce 亞洲研究院的研究人員撰寫了一篇論文,對基於深度學習的視覺目標檢測的近期發展進行了全面綜述,系統性地分析了現有的目標檢測框架。

論文連結:https://arxiv.org/abs/1908.03673v1

該綜述文章包括三個主要部分:1)檢測元件;2)學習策略;3)應用與基準,並詳細介紹了影響目標檢測效能的多種因素,如檢測器架構、特徵學習、候選框生成、取樣策略等。

下圖 2 展示了,2012 年以來基於深度學習的目標檢測技術的主要發展和里程碑。這篇論文介紹了這些關鍵技術的基本思想,並進行了系統性分析。

從錨點到關鍵點,最新的目標檢測方法發展到哪了

圖 2:2012 年以來,基於深度卷積神經網路的目標檢測技術的主要里程碑。過去一年的技術發展趨勢是基於 anchor-free 的目標檢測器(紅色線)和 AutoML 技術(綠色線),這兩項技術可能成為未來重要的研究方向。

因為該綜述論文花了近 40 頁篇幅綜述各種解決方案與組成結構,內容覆蓋了這些年主要的研究進展與突破,所以機器之心只介紹部分內容,更詳細的介紹請查閱原論文。

當然,以前機器之心也曾介紹過很多目標檢測方面的研究或綜述文章,因此本文會側重介紹 18 年到 19 年非常流行的基於關鍵點的目標檢測。這一種單步檢測正規化不僅擁有極高的準確率,同時速度還非常快,也許目標檢測未來的發展主流會聚集在這一正規化下。

如果讀者希望瞭解以前非常流行的兩種目標檢測方法,可以查閱以下文章:

  • 從 RCNN 到 SSD,這是超全的目標檢測演算法盤點

  • 單級式目標檢測方法概述:YOLOSSD

從經典走向前沿的目標檢測

在深度學習時代之前,早期的目標檢測流程分為三步:候選框生成、特徵向量提取和區域分類。

候選框生成階段的目標是搜尋影像中可能包含物件的位置,這些位置又叫「感興趣區域」(ROI)。直觀的思路是用滑動視窗掃描整幅影像。為了捕捉不同尺寸和不同寬高比物件的資訊,輸入影像被重新分割為不同的尺寸,然後用不同尺寸的視窗滑動經過輸入影像。

第二階段,在影像的每一個位置上,利用滑動視窗獲取固定長度的特徵向量,從而捕捉該區域的判別語義資訊。該特徵向量通常由低階視覺描述子編碼而成,這些描述子包括 SIFT (Scale Invariant Feature Transform) 、Haar 、HOG(Histogram of Gradients) 、SURF(Speeded Up Robust Features) 等,它們對縮放、光線變化和旋轉具備一定的魯棒性。

第三階段,學習區域分類器,為特定區域分配類別標籤。

通常,這裡會使用支援向量機(SVM),因為它在小規模訓練資料上效能優異。此外,Bagging、級聯學習(cascade learning)和 Adaboost 等分類技術也會用在區域分類階段,幫助提高目標檢測準確率

DL 時代的目標檢測

在將深度卷積神經網路成功應用於影像分類後,基於深度學習技術的目標檢測也取得了巨大進步。基於深度學習的新演算法顯著優於傳統的目標檢測演算法。

目前,基於深度學習的目標檢測框架可以分為兩大類:1)二階檢測器(Two-stage),如基於區域的 CNN (R-CNN) 及其變體;2)一階檢測器(One-stage),如 YOLO 及其變體。

二階檢測器首先使用候選框生成器生成稀疏的候選框集,並從每個候選框中提取特徵;然後使用區域分類器預測候選框區域的類別。一階檢測器直接對特徵圖上每個位置的物件進行類別預測,不經過二階中的區域分類步驟。

通常而言,二階檢測器通常檢測效能更優,在公開基準上取得了當前最優結果,而一階檢測器更省時,在實時目標檢測方面具備更強的適用性。

DL 目標檢測器該怎樣系統學習

本文目標是全面理解基於深度學習的目標檢測演算法。下圖 3 展示了本文涵蓋主要方法的分類:根據深度學習目標檢測演算法的不同貢獻將其分為三類:檢測元件、學習策略,以及應用與基準

從錨點到關鍵點,最新的目標檢測方法發展到哪了

圖 3:本文涵蓋主要方法的分類。

對於檢測元件,這篇論文首先介紹了兩種檢測設定:邊界框級(bbox-level)定位和畫素掩碼級(mask-level)定位。bbox-level 演算法需要按照矩形邊界框進行目標定位,而 mask-level 演算法則按照更準確的畫素級掩碼進行目標分割。

接下來,論文總結了二階檢測和一階檢測的代表性框架。然後對每個檢測元件進行了詳細論述,包括主幹架構、候選框生成和特徵學習。

對於學習策略,論文首先強調了學習策略的重要性(因為訓練檢測器是很艱難的過程),然後詳細介紹了訓練和測試階段中的最佳化技術。最後,論文概覽了一些基於目標檢測的現實應用,並展示了近年來通用目標檢測技術在公開基準上的當前最優結果。

這些雖然是這篇綜述論文的寫作思路,但是對於希望系統瞭解該領域的讀者而言,也是非常好的學習路徑:先了解整體類別與研究現狀,再瞭解具體的元件與策略。

檢測正規化

當前最優的深度學習目標檢測器可以分為兩大類:二階檢測器和一階檢測器。二階檢測器首先生成稀疏的候選框集合,然後使用深度卷積神經網路編碼生成候選框的特徵向量,並執行類別預測。一階檢測器沒有候選框生成這一單獨步驟,它們通常將影像的所有位置都看作潛在物件,然後嘗試將每個感興趣區域分類為背景或目標物件。

二階檢測器

二階檢測器將檢測任務分成兩個階段:候選框生成和對候選框執行預測。在第一階段,檢測器嘗試識別影像中可能存在物件的區域。其基本思想是以高召回率提出候選區域,使得影像中的所有物件屬於至少一個候選區域。第二階段中,使用基於深度學習的模型為這些候選區域分配正確的類別標籤。每個區域可能是背景,也可能是屬於某個預定義類別標籤的物件。

從錨點到關鍵點,最新的目標檢測方法發展到哪了

圖 4:不同二階目標檢測框架概覽。紅色虛線矩形表示輸出(該輸出定義損失函式)。

一階檢測器

與把檢測流程分成兩部分的二階檢測器不同,一階檢測器沒有單獨的候選框生成步驟。它們通常將影像上的所有位置都看作潛在物件,然後再把每個感興趣區域分類為背景或目標物件。

從錨點到關鍵點,最新的目標檢測方法發展到哪了

圖 5:不同一階目標檢測框架概覽。紅色虛線矩形表示輸出(輸出定義目標函式)。

Redmon 等人提出了一種叫做 YOLO(You Only Look Once)的實時檢測器。YOLO目標檢測看作迴歸問題,將整個影像分割為固定數量的網格單元(如使用 7 × 7 網格)。每個單元被看作一個候選框,然後網路檢測候選框中是否存在一或多個物件。

基於精細設計的輕量級架構,YOLO 可以 45 FPS 的速度執行預測,使用更簡化的骨幹網路後速度可達 155 FPS。但是,YOLO 面臨以下挑戰:

對於給定位置,它至多隻能檢測出兩個物件,這使得它很難檢測出較小的物件和擁擠的物件。

只有最後一個特徵圖可用於預測,這不適合預測多種尺寸和寬高比的物件。

2016 年,Liu 等人提出另一個一階檢測器 Single-Shot Mulibox Detector (SSD),解決了 YOLO 的缺陷。SSD 也將影像分割為網格單元,但是在每一個網格單元中,可以生成一組不同尺寸和寬高比的錨點框,從而離散化邊界框的輸出空間。

SSD 在多個特徵圖上預測物件,且每一個特徵圖基於其感受野來檢測特定尺寸的物件。整個網路透過端到端訓練機制,使用位置損失和分類損失的加權和作為損失函式進行最佳化。最後網路合並來自不同特徵圖的全部檢測結果,得到最終的預測。

沒有候選框生成步驟來幫助篩選容易正確分類的負樣本,導致前景背景類別不均衡成為一階檢測器中的嚴重問題。Lin 等人提出一階檢測器 RetinaNet,用更靈活的方式解決了類別不均衡的問題。

RetinaNet 使用 focal loss 抑制易分負樣本的梯度,而不是簡單地摒棄它們。然後使用特徵金字塔網路,在不同級別的特徵圖上檢測多尺寸物件。

Redmon 等人提出 YOLO 改進版本——YOLOv2,它顯著提升了檢測效能,且仍然維持實時推斷速度。YOLOv2 透過對訓練資料執行 k 折聚類(而不是手動設定)來定義更好的錨點先驗,這有助於降低定位中的最佳化難度。

以前的方法在訓練檢測器時需要手動設計錨點框,後來一批 anchor-free 目標檢測器出現,其目標是預測邊界框的關鍵點,而不是將物件與錨點框做匹配。

其中比較受關注的是基於關鍵點的檢測架構,它會預測左上角和右下角的熱圖,並用特徵嵌入將其合在一起,CornerNet 就是基於關鍵點檢測中非常經典的架構。當然還有後續結合中心點和角點的 CenterNet,它具有更好的效能。

候選框生成

候選框生成在目標檢測框架中起著非常重要的作用。候選框生成器生成一組矩形邊界框,它們有可能包含物件。然後使用這些候選框進行分類和定位精煉(localization refinement)。

基於錨點的方法

監督式候選框生成器的一個大類是基於錨點的方法。它們基於預定義錨點生成候選框。Ren 等人提出區域候選網路 (Region Proposal Network,RPN),基於深度卷積特徵圖以監督方式生成候選框。

該網路使用 3 × 3 卷積核在整個特徵圖上滑動。對於每個位置,網路都考慮 k 個 不同大小和寬高比的錨點(或邊界框的初始估計)。這些不同的尺寸和寬高比允許網路匹配影像中不同尺寸的物件。

基於真值邊界框,將物件的位置與最合適的錨點進行匹配,從而為錨點估計獲得監督訊號。

從錨點到關鍵點,最新的目標檢測方法發展到哪了

圖 6:RPN 圖示。

基於關鍵點的方法

另一種候選框生成方法基於關鍵點檢測,它分為兩類:基於角點(corner)的方法和基於中心(center)的方法。

基於角點的方法透過合併從特徵圖中學得的角點對,來預測邊界框。這種演算法無需設計錨點,從而成為生成高質量候選框的更高效方法。

Law 和 Deng 提出 CornerNet,直接基於角點建模類別資訊。CornerNet 使用新型特徵嵌入方法和角點池化層(corner pooling layer)建模左上角點和右下角點的資訊,從而準確匹配屬於同一物件的關鍵點。該方法在公開基準上獲得了當前最優結果。

基於中心的方法在特徵圖的每個位置上預測它成為物件中心的機率,且在沒有錨點先驗的情況下直接恢復寬度和高度。

Duan 等人 提出了 CenterNet,它結合了基於中心的方法和基於角點的方法。CenterNet 首先透過角點對預測邊界框,然後預測初始預測的中心機率,來篩除易分負樣本。相比基線,CenterNet 的效能獲得了顯著提升。

anchor-free 方法是未來很有前途的研究方向。

目標檢測公開基準

當然除了整體正規化與候選框的生成,目標檢測還有更多的元件與細節,例如主體架構怎麼選、資料增強/取樣怎麼做、模型壓縮/加速怎麼處理等等,本文就不一一介紹了。最後,讓我們看看當前目標檢測公開基準上的模型效果都怎麼樣。

目標檢測基準其實有挺多的,它們主要可以分為通用型、人臉檢測型、公共區域型,它們加起來差不多有 16 個基準

從錨點到關鍵點,最新的目標檢測方法發展到哪了

幾個通用型目標檢測基準,及其資料集的樣本。

在下面表 2 和表 3 中,論文展示了近幾年各種目標檢測方法在 VOC2007、VOC2012 和 MSCOCO 基準上的效果。

從錨點到關鍵點,最新的目標檢測方法發展到哪了

表 2:各種方法在 PASCAL VOC 資料集上的檢測效果。

從錨點到關鍵點,最新的目標檢測方法發展到哪了

從錨點到關鍵點,最新的目標檢測方法發展到哪了

表 3: MS COCO 資料集上的檢測效果。

相關文章