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

2020-12-11 騰訊網

選自arXiv

作者:Xiongwei Wu, Doyen Sahoo, Steven C.H. Hoi

機器之心編譯

參與:魔王、思

從經典的 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 年非常流行的基於關鍵點的目標檢測。這一種單步檢測範式不僅擁有極高的準確率,同時速度還非常快,也許目標檢測未來的發展主流會聚集在這一範式下。

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

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

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

候選框生成階段的目標是搜索圖像中可能包含對象的位置,這些位置又叫「感興趣區域」(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 數據集上的檢測效果。

WAIC 2019 開發者日將於 8 月 31 日在上海世博中心舉辦,包含 1 個主單元、4 個分單元、黑客馬拉松比賽和開發者診所互動區。

屆時,全球頂尖 AI 專家、技術大牛、知名企業代表以及數千名開發者將齊聚上海,圍繞人工智慧前沿理論技術和開發實踐進行分享與解讀。

相關焦點

  • 從RCNN到SSD,深度學習目標檢測算法盤點
    本文對目標檢測進行了整體回顧,第一部分從RCNN開始介紹基於候選區域的目標檢測器,包括Fast R-CNN、Faster R-CNN 和 FPN等。第二部分則重點討論了包括YOLO、SSD和RetinaNet等在內的單次檢測器,它們都是目前最為優秀的方法。機器之心之前已經討論過非常多的目標檢測算法,對計算機視覺感興趣的讀者也可以結合以前的文章加強理解。
  • 從RCNN到SSD,這應該是最全的一份目標檢測算法盤點
    第二部分則重點討論了包括YOLO、SSD和RetinaNet等在內的單次檢測器,它們都是目前最為優秀的方法。機器之心之前已經討論過非常多的目標檢測算法,對計算機視覺感興趣的讀者也可以結合以前的文章加強理解。
  • CVPR乾貨 | ATSS——最新技術的目標檢測(文末源碼下載)
    目標檢測是計算機視覺領域中一個由來已久的課題,其目的是檢測預先定義的目標。準確的目標檢測將對圖像識別和視頻監控等多種應用產生深遠的影響。近年來,隨著卷積神經網絡(CNN)的發展,基於錨定的目標檢測方法逐漸成為主流,一般可分為一級方法和兩級方法。這兩種方法首先在圖像上平鋪大量的預設錨定,然後預測錨定的類別並對錨定的坐標進行一次或多次細化,最後將這些細化後的錨定作為檢測結果輸出。
  • SFFAI 56 X CRIPAC報名通知 | 目標檢測專場
    瞄準國際學科前沿,面向國家公共安全、智能產業發展等重大戰略需求,著眼於基礎理論創新與關鍵技術突破以及系統解決方案的研製,努力打造成為國際一流的研究中心,是集人才培養、技術創新、產業孵化為一體的創新平臺。中心目前主要在多模態智能計算、生物識別與安全、生物啟發的智能計算、智能感知基礎理論四個方面展開科學研究。
  • 論文推薦丨[IEEE TIP2020、IEEE T-ITS2020]場景文本檢測中的錨點機制探索及改進方法(有源碼)
    然而,由於場景文本的多方向分布及尺寸角度變化的多樣性,這類方法常常需要設計複雜多樣的錨點來匹配各式各樣的文本;場景文本檢測中的錨點機制需要深入的探索,並進行有效的改進與創新。這兩篇論文首先將錨點進行長度、高度、角度的解耦合[5],然後採用不同的改進方法將錨點重構為最終的文本檢測結果,能夠克服錨點設計的複雜性,自適應的檢測不同方向、不同尺度的場景文本。其中,隱式錨點機制 HAM將所有錨點的預測值當做一個隱藏層,然後將所有的預測結果融合,使得網絡的輸出類似於直接回歸方法。
  • 深度 | 像玩樂高一樣拆解Faster R-CNN:詳解目標檢測的實現過程
    在閱讀本文之前,若想了解 R-CNN 網絡家族的發展,可以參看機器之心的文章:深度 | 用於圖像分割的卷積神經網絡:從R-CNN到Mark R-CNN去年,我們決定深入了解 Faster R-CNN,閱讀原始論文以及其中引用到的其他論文,現在我們對其工作方式和實現方法有了清晰的理解。
  • 基於雷射雷達數據的深度學習目標檢測方法大合集(上)
    作者 | 黃浴轉載自知乎專欄自動駕駛的挑戰和發展【導讀】上周,我們在《雷射雷達,馬斯克看不上,卻又無可替代?》一文中對自動駕駛中廣泛使用的雷射雷達進行了簡單的科普,今天,這篇文章將各大公司和機構基於雷射雷達的目標檢測工作進行了列舉和整合。由於文章列舉方法太多,故作者將其分成上下兩部分,本文為第一部分。
  • 經典目標檢測方法Faster R-CNN和Mask R-CNN|基於PaddlePaddle深度...
    機器視覺領域的核心問題之一就是目標檢測 (object detection),它的任務是找出圖像當中所有感興趣的目標 (物體),確定其位置和大小。作為經典的目標檢測框架 Faster R-CNN,雖然是 2015 年的論文,但是它至今仍然是許多目標檢測算法的基礎,這在飛速發展的深度學習領域十分難得。
  • 人臉檢測發展:從VJ到深度學習(下)
    :目標檢測,尤其關注基於深度學習的目標檢測方法。目標檢測任務作為一個分類問題,其不僅受益於計算機視覺領域相關技術的不斷發展,在機器學習領域的研究進展同樣也對目標檢測任務具有推波助瀾的作用。事實上,從2006年開始逐步蔓延開的深度學習大爆發給目標檢測的研究帶來了強勁的助推力,使得通用的目標檢測以及各種特定類型目標的檢測任務得到了跨越式地發展。
  • 從數據集到2D和3D方法,一文概覽目標檢測領域進展
    近日,來自阿爾伯塔大學的研究者對目標檢測領域的近期發展進行了綜述,涵蓋常見數據格式和數據集、2D 目標檢測方法和 3D 目標檢測方法。目標檢測任務的目標是找到圖像中的所有感興趣區域,並確定這些區域的位置和類別。由於目標具有許多不同的外觀、形狀和姿態,再加上光線、遮擋和成像過程中其它因素的幹擾,目標檢測一直以來都是計算機視覺領域中一大挑戰性難題。
  • 使用關鍵點進行小目標檢測
    【導語】本文搞了一個小的庫,主要是用於定位紅外小目標。由於其具有尺度很小的特點,所以可以嘗試用點的方式代表其位置。本文主要採用了回歸和heatmap兩種方式來回歸關鍵點,是一個很簡單基礎的項目,代碼量很小,可供新手學習。 1.
  • 【綜述專欄】2020 Pose Estimation人體骨骼關鍵點檢測綜述筆記
    2012年,Hinton課題組為了證明深度學習的潛力,首次參加ImageNet圖像識別比賽,其通過構建的CNN網絡AlexNet一舉奪得冠軍,且碾壓第二名(SVM方法)的分類性能。也正是由於該比賽,CNN吸引到了眾多研究者的注意。深度學習開始迎來超級發展時期,人體骨骼關鍵點檢測效果也不斷提升。
  • 人臉檢測發展:從VJ到深度學習(上)
    :目標檢測,尤其關注基於深度學習的目標檢測方法。這一過程中,分類器調整自己參數的方式和分類器的類型、設定的目標等都有關,由於這部分內容超出了本文所討論的範疇,也並不影響讀者對人臉檢測方法的理解,因此不再展開進行講述。
  • 對於織夢使用ueditor編輯器,添加錨點連結本地錨點的方法
    最近織夢使用ueditor編輯器,添加本地錨點時,出現連接本地錨點名稱會自動加上http://的問題,下面寫下處理的方法:增加錨點連結本地錨點修改ueditor/dialogs/link/link.html 連結窗口文件的75行if(!
  • 從零開始PyTorch項目:YOLO v3目標檢測實現
    機器之心編譯目標檢測是深度學習近期發展過程中受益最多的領域。隨著技術的進步,人們已經開發出了很多用於目標檢測的算法,包括 YOLO、SSD、Mask RCNN 和 RetinaNet。在本教程中,我們將使用 PyTorch 實現基於 YOLO v3 的目標檢測器,後者是一種快速的目標檢測算法。
  • 3D點雲two-stage目標檢測方法優化綜述
    1.為啥要做兩階段方法當然在工業界目前為了能夠實時都是以one-stage的方法居多,兩階段的方法優點是精度高,回歸準但是缺點是速度慢,所以在很多刷榜的任務中,在不考慮精度的前提下都是採用two-stage的方法為主,two-stage方法在學術界可以將精度推進一部分,而目前點雲目標檢測的方法中兩階段方法由最初的嘗試(19年下半段)到現在發展成存在一定的套路
  • 人臉專集3 | 人臉關鍵點檢測(下)—文末源碼
    這些方法大致可分為純學習法和混合學習法。純學習方法直接預測人臉關鍵點位置,而混合學習方法則將深度學習方法與計算機視覺投影模型相結合進行預測。純學習方法:這類方法使用強大的CNNs模型從人臉圖像中直接預測關鍵點位置。
  • 原神口袋錨點放錯位置如何解決 口袋錨點放錯位置解決方法介紹
    在原神遊戲中,口袋錨點是即將上線的新版本中新推出的道具,相信很多小夥伴都很感興趣,那麼原神口袋錨點放錯位置怎麼辦呢?接下來就讓我們一起來看看原神口袋錨點放錯位置解決方法一覽吧。原神口袋錨點放錯位置解決方法一覽  口袋錨點在物品說明上,已經明確提及【只能設置一個】,當前世界已存在0/1個,就說明1個就是地圖的設置上限。只要你放了一個口袋錨點下去,就無法放下第二個口袋錨點,除非將原來設置的口袋錨點拆除。
  • 3D目標檢測深度學習方法數據預處理綜述
    使得全局的點都具有encoder的特徵信息。最後再通過每個點作為anchor提出候選框。最早的工作是CVPR18上的F-pointnet,該文章的作者也是pointnet/pointnet++的作者,具體做法如下可知,首先通過二維的檢測框架得到二維目標檢測結果,然後將二維檢測結果通過視錐投影到三維,再採用三維破pointnet++延伸結構檢測為三維目標框。
  • 兩年三刷Pascal VOC最佳紀錄,阿里圖靈實驗室怎樣解決目標檢測
    在接續的目標檢測網絡上,則採用了「二段式」的目標檢測方法。所謂的二段式目標檢測方法,就是先讓模型對需要檢測的目標提出候選(proposal)邊界框,然後再對選擇的邊界框中的目標進行圖像分類和精確定位。雖然二段式的目標檢測方法較一步到位的方法需要的計算量更大,且下遊任務容易被邊界框的劃定影響,但其目標檢測的準確性相對較高。