目標檢測是屬于計算機視覺范疇的重要研究方向,傳統(tǒng)目標檢測主要是基于統(tǒng)計或知識的方法,近年來,隨著深度學習的發(fā)展,對目標檢測的研究逐漸由傳統(tǒng)機器視覺算法轉(zhuǎn)移到深度神經(jīng)網(wǎng)絡方向。
計算機理解圖像的任務表述可以分為分類、檢測、語義分割、實例分割4個層次,目標檢測是其中一個層次。
圖1:圖像理解的4個層次 圖片來源:[1]
a是分類(Classification),是將圖像分成不同的類別,只需輸出圖像對應的類別,是最基礎的圖像理解任務,在應用領域,人臉識別、手勢識別等都可以歸為分類任務。
b是檢測(Detection), 檢測是要根據(jù)大量預定義的類別同時獲得同一幀圖像中各種目標的類別信息和位置信息,需要從圖像分離出目標并輸出這一目標的類別和位置,檢測模型的輸出通常是包含類別和位置的數(shù)據(jù)列表。
c是語義分割(Semantic segmentation),語義分割是是對前背景分類的拓展,要分離開具有不同語義的圖像部分,也可對圖像像素級描述。
d是實例分割(Instance segmentation),實例分割是檢測任務的拓展,要分離背景并描述出目標的輪廓,對圖像像素級描述,適用于理解要求精細的場景。
一)傳統(tǒng)目標檢測
1、基于知識的方法
核心思想是模塊化。以人臉檢測為例,它將人臉劃分成眼、鼻、嘴等各個模塊的組合,利用先驗知識來識別各個模塊,同時基于各個模塊之間的距離來進行人臉的識別。
2、基于統(tǒng)計的方法
主要基于統(tǒng)計學習,將整個待檢測圖片看作一個像素矩陣,利用其統(tǒng)計特性結合一些機器學習的算法進行識別,例如Fisher線性判別。
二)深度學習目標檢測
1.單階段(one-stage)檢測模型
單階段模型沒有中間的區(qū)域檢出過程,直接從圖片獲得預測結果,也被稱為Region-free方法,單階段模型只進行一次類別預測和位置回歸,卷積運算的共享程度更高,擁有更快的速度和更小的內(nèi)存占用。代表算法有YOLO、SSD算法等。
圖2:YOLO網(wǎng)絡架構 圖片來源:[2]
YOLO論文鏈接:https://arxiv.org/abs/1506.02640
圖3:SSD網(wǎng)絡架構 圖片來源:[3]
SSD論文鏈接:https://arxiv.org/abs/1512.02325
2. 兩階段(two-stage)檢測模型
兩階段模型對圖片分兩階段處理,也稱為基于區(qū)域(Region-based)的方法。例如RCNN是先提出若干可能包含物體的候選區(qū)域(即圖片的局部區(qū)域,稱為Region Proposal),RCNN使用的是Selective Search算法;再在提出的這些區(qū)域上運行分類網(wǎng)絡檢測出每個區(qū)域的物體。代表算法有RCNN、Fast-RCNN、Faster-RCNN 等。
圖4:RCNN網(wǎng)絡架構 圖片來源:百度
RCNN論文鏈接:https://arxiv.org/abs/1311.2524
圖5:Fast-RCNN網(wǎng)絡架構 圖片來源:百度
Fast-RCNN論文鏈接:https://arxiv.org/abs/1504.08083
進入深度學習時代以來,目標檢測發(fā)展主要集中在兩個方向:第一種是one stage算法,如YOLO系列,這類算法會直接在網(wǎng)絡中提取特征來預測物體分類和位置,這類算法速度快,但是準確性要低一些。第二種是two stage算法,如RCNN系列,這類算法需要先生成region proposal(目標候選框),然后再對候選框進行篩選、分類和回歸,這類算法準確度較高,但是速度相對較慢。
隨著科技的發(fā)展,相信計算機視覺技術可以幫助我們提取、分析和理解更多更有用的信息,使我們的生活越來越智能化。
圖6:Faster-RCNN網(wǎng)絡架構 圖片來源:
Faster-RCNN論文鏈接:https://arxiv.org/abs/1506.01497
[1]從R-CNN到RFBNet,目標檢測架構5年演進全盤點
[2] You Only Look Once:Real-Time Object Detection
[3] SSD: Single Shot Multibox Detector