基於深度學習的目標檢測綜述

導言

隨着深度學習和計算機視覺的快讀發展,相關技術已經在諸多領域普遍應用。目標檢測(Object Detection)做爲圖像理解中的重要一環,其任務是找出圖像中全部感興趣的目標(物體),肯定它們的位置和大小,是機器視覺領域的核心問題之一。html

1 什麼是目標檢測

目標檢測的任務是找出圖像中全部感興趣的目標(物體),肯定它們的位置和大小。因爲各種物體有不一樣的外觀,形狀,姿態,加上成像時光照,遮擋等因素的干擾,目標檢測一直是機器視覺領域最具備挑戰性的問題。算法

首先,咱們考慮下如何理解一張圖片?根據任務須要,能夠主要分爲三個層次:
一是分類(Classification),便是將圖像結構化爲某一類別的信息,用事先肯定好的類別(string)或實例ID來描述圖片。
二是檢測(Detection),分類任務關心總體,給出的是整張圖片的內容描述,而檢測則關注特定的物體目標,要求同時得到這一目標的類別信息和位置信息,檢測給出的是對圖片前景和背景的理解。
三是分割(Segmentation),分割包括語義分割(semantic segmentation)和實例分割(instance segmentation),解決「每個像素屬於哪一個目標物或場景」的問題。網絡

p1

本文關注的是目標檢測,即圖像理解的中層次。目標檢測要解決的核心問題主要有: 
1)目標可能出如今圖像的任何位置。 
2)目標有各類不一樣的大小。 
3)目標可能有各類不一樣的形狀。 
若是用矩形框來定義目標,則矩形有不一樣的寬高比。因爲目標的寬高比不一樣,所以採用經典的滑動窗口+圖像縮放的方案解決通用目標檢測問題的成本過高。框架

2 目標檢測的應用

目標檢測在不少領域都有應用需求,包括人臉檢測,行人檢測,車輛檢測以及遙感影像中的重要地物檢測等。函數

2.1 人臉檢測

人臉檢測是人臉識別應用中重要的一個環節,主要用於肯定人臉在圖像中的大小和位置,即解決「人臉在哪裏」的問題,把真正的人臉區域從圖像中裁剪出來,便於後續的人臉特徵分析和識別。性能

p2

2.2 行人檢測

行人檢測具備極其普遍的應用:智能輔助駕駛,智能監控,行人分析以及智能機器人等領域。此外,其在視頻監控,人流量統計,自動駕駛中都有重要的地位。特徵提取、形變處理、遮擋處理、分類是四個行人檢測中的重要部分。學習

p3

2.3 車輛檢測

車輛檢測在智能交通,視頻監控,自動駕駛中有重要的地位。車流量統計,車輛違章的自動分析等都離不開它,在自動駕駛中,首先要解決的問題就是肯定道路在哪裏,周圍有哪些車、人或障礙物。大數據

p4

此外,交通標誌如交通燈、行駛規則標誌的識別對於自動駕駛也很是重要,咱們須要根據紅綠燈狀態,是否容許左右轉、掉頭等標誌肯定車輛的行爲。同時,醫學影像圖像如MRI的腫瘤等病變部位檢測和識別對於診斷的自動化,提供優質的治療具備重要的意義。還有工業中材質表面的缺陷檢測,硬刷電路板表面的缺陷檢測等。ui

2.4 遙感圖像中的目標檢測

目前,基於大數據的高分影像目標檢測是遙感圖像處理領域的重要研究方向。傳統的目標檢測識別方法難以適應海量數據,其所依賴的特徵表達是經過人工設計的,這樣很是耗時,而且強烈依賴於專業知識和數據自己的特徵,並且很難從海量的數據中學習出一個有效的分類器以充分挖掘數據之間的關聯。而深度學習強大的高級(更具抽象和語義意義)特徵表示和學習的能力能夠爲影像中的目標提取提供有效的框架。spa

p5

相關研究包括車輛檢測,船舶檢測,農做物檢測,建築物等地物檢測。檢測模型除了傳統CNN以外,還有基於混合CNN模型,基於超像素分割和弱監督學習等方式。

高分影像中深度學習的目標檢測模型,主要包括兩個部分: 
1 ) 經過深度學習創建目標表徵。從圖像像素開始,創建圖像的深度學習網絡,經過逐層學習獲得圖像的表達。爲了更加有效表達目標,對深度網絡的每層賦予必定意義。 
2) 利用上下文信息調整深度網絡。獲得圖像表達後,利用目標標記、目標上下文、場景上下文信息對深度網絡權值進行調整,經過上下文交互加強深度網絡的判別能力,提升目標檢測性能。 

3 基於深度學習的目標檢測算法

深度學習用於目標檢測的算法從思路上來看,能夠分爲兩大類,一類是two stage的方法,也就是把整個分爲兩部分,生成候選框和識別框內物體;另外一類是one stage的方法,把整個流程統一在一塊兒,直接給出檢測結果,主要包含SSD, YOLO系列。如下將對各種型經典算法的實現流程和算法主要貢獻進行總結和簡述。

p6

3.1 兩階段(2-stage)檢測模型

兩階段模型因其對圖片的兩階段處理得名,也成爲基於區域(Region-based)的方法。

R-CNN

流程:一是基於圖片提出若干可能包含物體的區域(即圖片的局部裁剪,被稱爲Region Proposal),文中使用的是Selective Search算法;二是在提出的這些區域上運行當時表現最好的分類網絡(AlexNet),獲得每一個區域內物體的類別。 
貢獻: 1)CNN可用於基於區域的定位和分割物體; 2)監督訓練樣本數緊缺時,在額外的數據上預訓練的模型通過fine-tuning能夠取得很好的效果。 
缺點:需訓練三個不一樣模型,性能問題 
論文鏈接https://arxiv.org/abs/1311.2524

Fast R-CNN:共享卷積運算

流程:先獲得feature map,同時尋找ROI並映射到特徵圖上;再對每一個RoI進行RoI Pooling操做便獲得等長的feature vector,正負樣本處理同時分類和迴歸,並將損失統一塊兒來。 
貢獻: 文章將Proposal, Feature Extractor, Object Classification&Localization統一在一個總體的結構中,並經過共享卷積計算提升特徵利用效率 
討論:multi-loss training相比單獨訓練classification確有提高; multi-scale相比single-scale精度略有提高,但帶來的時間開銷更大。必定程度上說明CNN結構能夠內在地學習尺度不變性; 在更多的數據(VOC)上訓練後,精度是有進一步提高的; Softmax分類器比"one vs rest"型的SVM表現略好,引入了類間的競爭; 更多的Proposal並不必定帶來精度的提高; 
論文連接https://arxiv.org/abs/1504.08083

Faster R-CNN: 兩階段模型的深度化

流程:在滑動窗口上生成不一樣大小的anchor box,取定IoU的閾值,按Ground Truth標定這些anchor box的正負。因而,傳入RPN網絡的樣本數據被整理爲anchor box(座標)和每一個anchor box是否有物體(二分類標籤)。RPN網絡將每一個樣本映射爲一個機率值和四個座標值,最後將二分類和座標迴歸的損失統一塊兒來,做爲RPN網絡的目標訓練,一樣用多任務損失將兩者的損失聯合。 
貢獻:RPN(Regional Proposal Networks)網絡取代Selective Search算法使得檢測任務能夠由神經網絡端到端地完成 
論文連接https://arxiv.org/abs/1506.01497

Mask-RCNN

此文得到ICCV最佳論文獎。何愷明大神將網絡中涉及特徵圖尺寸變化的環節都不使用取整操做,而是經過雙線性差值填補非整數位置的像素。這使得下游特徵圖向上遊映射時沒有位置偏差,不只提高了目標檢測效果,還使得算法能知足語義分割任務的精度要求。 
論文連接https://arxiv.org/pdf/1703.06870.pdf

3.2 單階段(1-stage)檢測模型

單階段模型沒有中間的區域檢出過程,直接從圖片得到預測結果,也被成爲Region-free方法。

YOLO

流程:劃分等分網格,和GT的IoU結合獲得要預測樣本,輸入CNN。在基礎上生成B個box並獲得五個迴歸值(四個位置,和含有物體的機率)(不是某一類物體)。最後用NMS過濾獲得最後的預測框。 損失函數被分爲三部分:座標偏差、物體偏差、類別偏差。 
YOLO的主要優勢是快,全局處理使得背景錯誤相對少,泛化性能好; 
貢獻:它將檢測任務表述成一個統一的、端到端的迴歸問題,而且以只處理一次圖片同時獲得位置和分類。 
問題:網格粗糙,限制小物體檢測。但後續YOLOv2和YOLOv3在原有基礎上進行了網絡改進,並取得了更好的檢測效果。 
論文連接https://arxiv.org/abs/1506.02640

SSD: Single Shot Multibox Detector

SSD和YOLO相比有如下突出特色: 
· 多尺度的feature map:基於VGG的不一樣卷積段,輸出feature map到迴歸器中。這一點試圖提高小物體的檢測精度。 
· 更多的anchor box,每一個網格點生成不一樣大小和長寬比例的box,並將類別預測機率基於box預測(YOLO是在網格上)。 
論文連接https://arxiv.org/abs/1512.02325

總結

一階段檢測模型總體上由基礎網絡(Backbone Network)和檢測頭部(Detection Head)構成。前者做爲特徵提取器,給出圖像不一樣大小、不一樣抽象層次的表示;後者則依據這些表示和監督信息學習類別和位置關聯。檢測頭部負責的類別預測和位置迴歸兩個任務經常是並行進行的,構成多任務的損失進行聯合訓練。

兩階段一般含有一個串行的頭部結構,即完成前背景分類和迴歸後,把中間結果做爲RCNN頭部的輸入再進行一次多分類和位置迴歸。有優勢可是帶來更大的算力開銷,重複計算等。而單階段模型只有一次類別預測和位置迴歸,卷積運算的共享程度更高。

4 目標檢測數據集

最後咱們整理了相關領域的開源數據集,供你們學習和研究 
Pascal VOC(Pascal Visual Object Classes)- benchmark目標檢測數據集 
http://host.robots.ox.ac.uk/pascal/VOC/ 
MS COCO(Common Objects in COntext)- benchmark目標檢測數據集 
http://cocodataset.org 
Cityscapes - 現代城市道路場景的理解 
https://www.cityscapes-dataset.com 
NWPU VHR-10 dataset - 高分遙感影像地物檢測 
http://www.escience.cn/people/gongcheng/NWPU-VHR-10.html

參考文獻

[1] 目標檢測入門 李家丞 https://blog.csdn.net/p23onzq/article/details/79598947
[2] Zhu X X, Tuia D, Mou L, et al. Deep learning in remote sensing: a review[J]. 2017. [3] 基於深度學習的目標檢測算法綜述 SIGAI 2018.4.24

相關文章
相關標籤/搜索