1. 程式人生 > >目標檢測最新進展總結與展望

目標檢測最新進展總結與展望

導言

目標檢測是計算機視覺和數字影象處理的一個熱門方向,廣泛應用於機器人導航、智慧視訊監控、工業檢測、航空航天等諸多領域,通過計算機視覺減少對人力資本的消耗,具有重要的現實意義。因此,目標檢測也就成為了近年來理論和應用的研究熱點,它是影象處理和計算機視覺學科的重要分支,也是智慧監控系統的核心部分,同時目標檢測也是泛身份識別領域的一個基礎性的演算法,對後續的人臉識別、步態識別、人群計數、例項分割等任務起著至關重要的作用。由於深度學習的廣泛運用,目標檢測演算法得到了較為快速的發展,本文廣泛調研國內外目標檢測方法,主要介紹基於深度學習的兩種目標檢測演算法思路,分別為One-Stage目標檢測演算法和Two-Stage目標檢測演算法。

 

1.      相關介紹

1.1    背景介紹

從 2006 年以來,在 Hinton、Bengio、Lecun 等人的引領下,大量深度神經網路的論文被髮表,尤其是 2012 年,Hinton課題組首次參加 ImageNet影象識別比賽,其通過構建的 CNN 網路AlexNet[1]一舉奪得冠軍,從此神經網路開始受到廣泛的關注。深度學習利用多層計算模型來學習抽象的資料表示,能夠發現大資料中的複雜結構,目前,這項技術已成功地應用在包括計算機視覺領域在內的多種模式分類問題上。計算機視覺對於目標運動的分析可以大致分為三個層次:運動分割,目標檢測;目標跟蹤;動作識別,行為描述[2]。其中,目標檢測既是計算機視覺領域要解決的基礎任務之一,同時它也是視訊監控技術的基本任務。由於視訊中的目標具有不同姿態且經常出現遮擋、其運動具有不規則性,同時考慮到監控視訊的景深、解析度、天氣、光照等條件和場景的多樣性,而且目標檢測演算法的結果將直接影響後續的跟蹤、動作識別和行為描述的效果。故即使在技術發展的今天,目標檢測這一基本任務仍然是非常具有挑戰性的課題,存在很大的提升潛力和空間。

1.2    什麼是目標檢測

圖1: 任務對比圖

 

目標檢測即找出影象中所有感興趣的物體,包含物體定位和物體分類兩個子任務,同時確定物體的類別和位置。

 

1.3    傳統演算法概述

傳統目標檢測的方法一般分為三個階段:首先在給定的影象上選擇一些候選的區域,然 後對這些區域提取特徵,最後使用訓練的分類器進行分類。下面我們對這三個階段分別進行介紹。

(1)區域選擇:這一步是為了對目標的位置進行定位。由於目標可能出現在影象的任何位置,而且目標的大小、長寬比例也不確定,所以最初採用滑動視窗的策略對整幅影象進行遍歷,而且需要設定不同的尺度,不同的長寬比。這種窮舉的策略雖然包含了目標所有可能出現的位置,但是缺點也是顯而易見的:時間複雜度太高,產生冗餘視窗太多,這也嚴重影響後續特徵提取和分類的速度和效能。

(2)特徵提取:由於目標的形態多樣性,光照變化多樣性,背景多樣性等因素使得設計一個魯棒的特徵並不是那麼容易。然而提取特徵的好壞直接影響到分類的準確性。其中,這個階段常用的特徵有 SIFT[3]、HOG[4]等。

(3)分類:根據第二步提取到的特徵對目標進行分類,分類器主要有 SVM,AdaBoost 等。

 

2.      基於深度學習的目標檢測演算法

2.1    演算法概述

目標檢測任務可分為兩個關鍵的子任務:目標分類和目標定位。目標分類任務負責判斷輸入影象或影象區域中是否有感興趣類別的物體出現,輸出一系列帶分數的標籤表明感興趣類別的物體出現在輸入影象或影象區域中的可能性。目標定位任務負責確定輸入影象或影象區域中感興趣類別的物體的位置和範圍,輸出物體的包圍盒、或物體中心、或物體的閉合邊界等,通常方形包圍盒是最常用的選擇。

目前主流的目標檢測演算法主要是基於深度學習模型,其可以分成兩大類:

(1)One-Stage檢測演算法,其不需要Region Proposal階段,直接產生物體的類別概率和位置座標值,比較典型的演算法如YOLO、SSD和CornerNet;

(2)Two-Stage目標檢測演算法,其將檢測問題劃分為兩個階段,首先產生候選區域(region proposals),然後對候選區域進行分類和位置精修,這類演算法的典型代表是基於region proposal的R-CNN系列演算法,如R-CNN,Fast R-CNN,Faster R-CNN等。

目標檢測模型的主要效能指標是檢測準確度和速度,對於準確度,目標檢測要考慮物體的定位以及分類準確度。一般情況下,Two-Stage演算法在準確度上有優勢,而One-Stage演算法在速度上有優勢。不過,隨著研究的發展,兩類演算法都在兩個方面做改進,均能在準確度以及速度上取得較好的結果。

 

2.2    One-Stage目標檢測演算法

One-Stage目標檢測演算法可以在一個stage直接產生物體的類別概率和位置座標值,相比於Two-Stage的目標檢測演算法不需要Region Proposal階段,整體流程較為簡單。如下圖所示,在Testing的時候輸入圖片產生輸出,解碼生成對應檢測框即可;在Training的時候需要將Ground Truth編碼成CNN輸出對應的格式以便計算對應損失loss。

圖2:One-Stage檢測演算法示意圖

 

目前對於One-Stage演算法的主要創新主要集中在如何設計CNN結構、如何構建網路目標以及如何設計損失函式上,接下來我將從這幾個方面進行闡述。

 

2.2.1 如何設計CNN結構

設計CNN網路結構主要有兩個方向,分別為追求精度和追求速度。最簡單的一種實現方式就是替換Backbone網路結構,ResNet101的表徵能力要強於MobileNet,然而MobileNet的計算量要遠遠低於ResNet101,如果將ResNet101替換為MobileNet,那麼檢測網路在精度應該會有一定的損失,但是在速度上會有一定提升;如果將MobileNet替換為ResNet101,那麼檢測網路在速度上會有一定的損失,但是在精度上會有一定的提升。當然這只是一種相對簡單的改進CNN網路結構的方式,實際上在改進CNN結構的時候需要很多的學術積累和經驗,我將通過幾篇SSD相關論文做一下簡要分析。

SSD[5]:SSD檢測演算法的網路結構如下圖所示,其中Backbone為VGG網路,使用不同階段不同解析度的feature map進行預測。

圖3:SSD網路結構示意圖

​DSSD[6]:DSSD檢測演算法的網路結構如下圖所示,DSSD也是使用不同階段不同解析度的feature map進行預測,在不考慮Backbone網路結構差別的情況下,可以發現DSSD相比於SSD多了一系列的反捲積層,SSD是使用下采樣過程中的feature map進行預測,而DSSD是使用上取樣過程中的feature map進行預測。SSD用於檢測的feature map位於網路的較低層,表徵能力較弱,而DSSD用於檢測的feature map位於網路的較高層,表徵能力較強,同時DSSD在反捲積的過程中通過Skip-Connection引入了較低層的feature map,實現了一定程度的特徵融合。所以DSSD的效果要優於SSD檢測演算法。

圖4:DSSD網路結構示意圖

FSSD[7]:FSSD檢測演算法的網路結構如下圖所示,同樣,FSSD也是使用不同階段不同解析度的feature map進行預測,相比於SSD,FSSD多了一個特徵融合處理,將網路較低層的特徵引入到網路的較高層,在檢測的時候能夠考慮不同尺度的資訊,使得檢測更加準確。

圖5:FSSD網路結構示意圖

  

2.2.2 如何構建迴歸目標

如何構建網路迴歸目標即如何區分正負樣本使其與網路輸出相對應,最簡單直接的方法是直接回歸物體的相關資訊,除此之外,在迴歸座標時可以迴歸物體座標相對於anchor的偏移量等等。對於One-Stage檢測方法主要有如下三種典型的迴歸目標構建方式,代表方法分別為YOLO系列演算法、SSD系列演算法以及CornerNet目標檢測演算法。

YOLO系列演算法:如下圖所示,其中左圖取自YOLOv1[8],右圖取自YOLOv2[9],需要說明的是YOLOv1相比於YOLOv2在座標迴歸的時候沒有anchor的概念。YOLO系列演算法在構建迴歸目標時一個主要的區別就是如果將影象劃分成SxS的格子,每個格子只負責目標中心點落入該格子的物體的檢測。

圖6:YOLO系列演算法正負樣本區分圖

​SSD系列演算法:如下圖所示,SSD系列檢測演算法在確定正負樣本的時候通過交併比大小進行區分,當某一個Ground Truth的目標框與anchor的交併比最大且對應的交併比大於某一個閾值的時候,對應anchor即負責檢測該Ground Truth。

圖7:IOU(交併比)示意圖

CornerNet[10]:如下圖所示,CornerNet檢測演算法巧妙的將檢測框轉換成了關鍵點,即一個目標框可以由兩個點來表示,那麼在預測的時候就可以直接預測兩個類別的關鍵點,然後對關鍵點進行組合即可。

圖8:CornerNet目標示意圖

 

 

2.2.3 如何設計損失函式

目標檢測演算法主要分為兩個子任務,分別為物體分類和物體定位。損失主要包括分類損失和定位損失,常見的損失組合主要有如下兩種Cls Loss + Loc Loss(SSD系列演算法)、Cls Loss + Obj Loss + Loc Loss (YOLO系列演算法),即YOLO系列演算法相比於SSD系列演算法多了Object Loss,即判斷對應區域是否為物體的損失。除此之外,One-Stage目標檢測演算法的正負樣本不均衡的問題比較嚴重,對於設計損失函式還有一些針對創新。

Hard Negative Mining:即對於大量的負樣本只挑取其中適當比例的損失較大的負樣本計算損失,其餘損失較小的負樣本忽略不計;

Focal Loss:由於大多數都是簡單易分的負樣本(屬於背景的樣本),使得訓練過程不能充分學習到屬於那些有類別樣本的資訊;其次簡單易分的負樣本太多,可能掩蓋了其他有類別樣本的作用。Focal Loss希望那些hard examples對損失的貢獻變大,使網路更傾向於從這些樣本上學習。

需要說明的是,個人任務One-Stage檢測演算法和Two-Stage檢測演算法的第一個Stage並沒有太大區別,在某種程度上Two-Stage檢測演算法的第一個Stage可以看成是One-Stage檢測演算法,而第二個Stage只是對前一個Stage的結果做進一步精化,上述所有思路本人覺得都適用於Two-Stage檢測演算法的第一個Stage。除此之外針對於Two-Stage檢測框架設計的相關損失函式同樣適用於One-Stage檢測演算法,如針對遮擋問題設計的相關loss,具體不再闡述。

 

2.3    Two-Stage目標檢測演算法

Two-Stage目標檢測演算法可以看作是進行兩次One-Stage檢測,整體流程如下圖所示,在Testing的時候輸入圖片產生ROIs,然後對ROIs進一步精化產生最終輸出,解碼生成對應檢測框即可;在Training的時候需要將Ground Truth編碼成CNN輸出對應的格式以便計算對應損失loss。

圖9:Two-Stage檢測演算法示意圖

如上圖所示,Two-Stage的兩個階段拆開來看均與One-Stage檢測演算法相似,所以我覺得Two-Stage可以看成是兩個One-Stage檢測演算法的組合,第一個Stage做初步檢測,剔除負樣本,生成初步位置資訊(Region of Interest),第一個Stage再做進一步精化並生成最終檢測結果。目前對於Two-Stage演算法的主要創新主要集中在如何高效準確地生成Proposals、如何獲取更好的ROI features、如何加速Two-Stage檢測演算法以及如何改進後處理方法,接下來我將從這幾個方面進行闡述。

2.3.1 如何高效準確地生成Proposals

如何高效準確地生成Proposals考慮的是Two-Stage檢測演算法的第一個Stage,獲取初步的檢測結果,供下一個Stage做進一步精化。接下來我將通過對比R-CNN、Faster R-CNN和FPN來做簡要說明。

R-CNN[11]:R-CNN生成Proposals的方法是傳統方法Selective Search,主要思路是通過影象中的紋理、邊緣、顏色等資訊對影象進行自底向上的分割,然後對分割區域進行不同尺度的合併,每個生成的區域即一個候選Proposal,如下圖所示。這種方法速度較慢。

圖10:Selective Search示意圖

Faster R-CNN[12]:Faster R-CNN使用RPN網路代替了Selective Search方法,大大提高了生成Proposals的速度,具體實現策略同One-Stage檢測演算法,這裡不再做過多贅述。網路示意圖如下圖所示。

圖11:Faster R-CNN網路示意圖

​FPN[13]:Faster R-CNN只採用頂層特徵做預測,但我們知道低層的特徵語義資訊比較少,但是目標位置準確;高層的特徵語義資訊比較豐富,但是目標位置比較粗略。FPN演算法把低解析度、高語義資訊的高層特徵和高解析度、低語義資訊的低層特徵進行自上而下的側邊連線,使得所有尺度下的特徵都有豐富的語義資訊,然後在不同尺度的特徵層上進行預測,使得生成Proposals的效果優於只在頂層進行預測的Faster R-CNN演算法。如下圖所示。

圖12:FPN Proposal網路示意圖

Cascade R-CNN[14]:類似於Faster R-CNN、FPN等,其Proposal網路對於正樣本只設置了一個閾值,只做了一次較為寬鬆的約束,得到的Proposals結果較為粗糙,當對檢測框的定位結果要求更為精確的時候就稍顯不足。而Cascade R-CNN在獲取Proposals的時候也採用逐步求精的策略,前一步生成的Proposals作為後一步的輸入,通過控制正樣本的交併比閾值不斷提高Proposals的質量,如下圖所示。準確來說,Cascade R-CNN應該不能算Two-Stage檢測演算法,應該是多Stage檢測演算法,多步求精。

 

圖13:Cascade R-CNN Proposal網路示意圖

 

2.3.2 如何獲取更好的ROI features

在獲取Proposals之後,如何獲取更好的ROI features是Two-Stage檢測演算法第二個Stage的關鍵,只有輸入比較魯棒的情況下才能得到較好的輸出。對於這個問題主要考慮的有兩個方向,其一是如何獲取Proposals的features,其二是得到Proposals的features之後如何align到同一個尺度。首先對於第一個問題主要有如下幾種策略:

R-CNN:在原圖裁剪Proposals對應區域,然後align到同一個尺度,分別通過神經網路提取特徵;

Fast/Faster R-CNN:對原圖提取一次特徵,將對應Proposals的座標對映到提取的feature map上提取對應特徵;

FPN:對原圖提取不同尺度的特徵,將不同尺度的Proposals對映到不同尺度的feature map上提取對應特徵;

R-FCN[15]:同樣對原圖提取一次特徵,主要區別是特徵是Position-Sensitive的,即不同區域的特徵維護在不同channels上,對於一個Proposal,其不同區域區域的特徵需要對映到不同的channels上,在提取目標特徵的同時加上了位置資訊。如下圖所示。

圖14:R-FCN網路示意圖

其次對於第二個問題主要有如下幾種策略,分別為ROI Pool、ROI Align、PSROI Pool、PrROI Pool,接下來做簡要說明。

ROI Pool:即對Proposal區域分割固定大小的格子,每個格子做Adaptive的Pooling操作,獲取一個值,從而所有Proposal生成同樣大小的輸出。

ROI Align:主要解決了ROI Pool的量化誤差問題,即浮點數座標轉換成整數座標產生的誤差,主要解決方式即不採用量化方式獲取具體座標,每個位置的值採用雙線性插值的方式獲得。

PSROI Pool:即R-FCN採用的Pooling方式,與ROI Pool的唯一區別在於PSROI Pool需要每一個Proposal的不同區域對應到feature map的不同channels進行取值。

PrROI Pool:即Precise ROI Pooling,其考慮了Proposal對應格子區域的每個值,採用積分的方式進行求解,而ROI Align只Sample對應格子區域的幾個值。

圖15:ROI 策略對比圖

2.3.3 如何加速Two-Stage檢測演算法

Two-Stage檢測演算法在一般情況下要慢於One-Stage檢測演算法,然而隨著研究的發展,速度上的差別也在逐漸縮小,Two-Stage演算法的開銷主要有兩部分,一個是Proposal的開銷,一個是ROI Sub-Network的開銷,提高Proposal的效率和提高ROI Sub-Network的開銷均可以加速Two-Stage檢測演算法。

Fast R-CNN vs. Faster R-CNN:Faster R-CNN使用神經網路代替Selective Search,大大提高了Proposal的的速度,前面已有描述。

Faster R-CNN vs. Light-Head R-CNN[16]:Light-Head R-CNN使用更小的Sub-Network代替Faster R-CNN較為臃腫的Sub-Network,大大提高了Two-Stage檢測演算法的速度。

 

2.3.4 如何改進後處理方法

這裡所說的後處理方法僅指NMS相關演算法,NMS即非極大值抑制演算法,在目標檢測,定位等領域是一種被廣泛使用的方法,主要目的是為了消除多餘的框,找到最佳的物體檢測的位置,幾乎所有的目標檢測方法都用到了這種後處理演算法。接下來我將簡要介紹如下幾種NMS相關演算法,分別為NMS、Soft NMS、Softer NMS、IOU-Guided NMS。

圖16:NMS示例

 

Soft NMS[17]:Soft NMS相對於NMS的改進即每次並不是直接排除掉和已選框重疊大於一定閾值的框,而是以一定的策略降低對應框的score,知道低於某個閾值,從而不至於過多刪除擁擠情況下正確的框。

Softer NMS[18]:Softer NMS相對於NMS的改進即每次並不是直接以得分最大的框的座標作為當前選擇框的座標,而是和得分最大的框重疊大於一定閾值的框的座標進行一定策略的加權平均,所得的框作為當前選擇的得分最大的框的座標,從而儘可能地保留了最精確的檢測框。

IOU-Guided NMS[19]:即以IOU得分作為NMS的排序依據,因為IOU得分直接反應了對應框的定位精確程度,優先考慮定位精度較高的框,防止定位精度較低但是Object得分較高的框被誤排序。

 

小結

目標檢測至今仍然是計算機視覺領域較為活躍的一個研究方向,雖然One-Stage檢測演算法和Two-Stage檢測演算法都取得了很好的效果,但是對於真實場景下的應用還存在一定差距,目標檢測這一基本任務仍然是非常具有挑戰性的課題,存在很大的提升潛力和空間。

歡迎關注https://github.com/youansheng

 

參考文獻

[1] A. Krizhevsky, I. Sutskever, and G. E. Hinton, “Imagenet classification with deep convolutional neural networks,” in Advances in neural information processing systems, 2012, pp. 1097–1105.

[2] Vishwakarma S, Agrawal A. A survey on activity recognition and behavior understanding in video surveillance [J]. The Visual Computer, 2012: 1-27.

[3] D. Lowe. Distinctive image features from scale-invariant keypoints. IJCV, 2004.
[4] N. Dalal and B. Triggs. Histograms of oriented gradients for human detection. In CVPR, 2005.

[5] Liu, Wei, et al. "SSD: Single Shot MultiBox Detector." European Conference on Computer Vision Springer International Publishing, 2016:21-37.

[6] Fu C Y, Liu W, Ranga A, et al. DSSD : Deconvolutional Single Shot Detector[J]. 2017.

[7] Li Z, Zhou F. FSSD: Feature Fusion Single Shot Multibox Detector[J]. 2017.

[8] Redmon, Joseph, et al. "You Only Look Once: Unified, Real-Time Object Detection." (2015):779-788.

[9] Redmon, Joseph, and A. Farhadi. "YOLO9000: Better, Faster, Stronger." (2016):6517-6525.

[10] Law H, Deng J. CornerNet: Detecting Objects as Paired Keypoints[J]. 2018.

[11] Girshick, R., Donahue, J., Darrell, T., Malik, J.: Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR 2014.

[12] Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. In Neural Information Processing Systems (NIPS), 2015.

[13] Lin T Y, Dollár P, Girshick R, et al. Feature Pyramid Networks for Object Detection[J]. 2016.

[14] Cai Z, Vasconcelos N. Cascade R-CNN: Delving into High Quality Object Detection[J]. 2017.

[15] Dai J, Li Y, He K, et al. R-FCN: Object Detection via Region-based Fully Convolutional Networks[J]. 2016.

[16] Li Z, Peng C, Yu G, et al. Light-Head R-CNN: In Defense of Two-Stage Object Detector[J]. 2017.

[17] Bodla N, Singh B, Chellappa R, et al. Soft-NMS — Improving Object Detection with One Line of Code[J]. 2017.

[18] Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection. arxiv id:1809.08545

[19] Jiang B, Luo R, Mao J, et al. Acquisition of Localization Confidence for Accurate Object Detection[J]. 2018.