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


導言

  目標檢測的任務是找出圖像中所有感興趣的目標(物體),確定它們的位置和大小,是機器視覺領域的核心問題之一。由於各類物體有不同的外觀,形狀,姿態,加上成像時光照,遮擋等因素的干擾,目標檢測一直是機器視覺領域最具挑戰性的問題。本文將針對目標檢測(Object Detection)這個機器視覺中的經典任務進行解析。

一,什么是目標檢測?

  計算機視覺中關於圖像識別有四大類任務:

  • 分類——Classification:解決“是什么”的問題,即給定一張圖片或一段視頻判斷里面包含什么類別的目標。
  • 定位——Location:解決“在哪里”的問題,即定位出這個目標的位置。
  • 檢測——Detection:解決“是什么,在哪里”的問題,即定位出這個目標的位置並且知道目標物是什么
  • 分割——Segmentation:分為實例的分割(Instance-level)和場景分割(Scene-level),解決“每一個像素屬於哪個目標物或場景”的問題。

 

二,目標檢測要解決的核心問題

  除了圖像分類之外,目標檢測要解決的核心問題是:

  1. 目標可能出現在圖像的任何位置
  2. 目標有各種不同的大小
  3. 目標可能有各種不同的形狀

  如果用矩形框來定義目標,則矩形有不同的寬高比。由於目標的寬高比不同,因此采用經典的滑動窗口+圖像縮放的方案解決通用目標檢測問題的成本太高

三,目標檢測的應用

  目標檢測在很多領域都有應用需求。其中倍廣為研究的是人臉檢測,行人檢測,車輛檢測等重要目標的檢測。

  行人檢測:行人檢測在視頻監控,人流量統計,自動駕駛中都有重要的地位:智能輔助駕駛,智能監控,暴恐檢測(根據面相識別暴恐傾向),移動偵測、區域入侵檢測、安全帽/安全帶檢測

 

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

 

  其他應用:交通標志如交通燈、行駛規則標志的識別對於自動駕駛也非常重要,我們需要根據紅綠燈狀態,是否允許左右轉、掉頭等標志確定車輛的行為。

交通標志檢測

  除了這些常見的檢測之外,很多領域里也需要檢測自己感興趣的目標。比如工業中材質表面的缺陷檢測,硬刷電路板表面的缺陷檢測等。

表面缺陷檢測

 

  農業中農作物表面的病蟲害識別也需要用到目標檢測技術:

  人工智能在醫學中的應用目前是一個熱門話題,醫學影像圖像如MRI的腫瘤等病變部位檢測和識別對於診斷的自動化,提供優質的治療具有重要的意義。

四,目標檢測相關算法

  目標檢測問題意味着我們不僅要用算法判斷圖片中是不是一輛汽車,還要再途中標記出它的位置,用邊框或紅色方框把汽車圈起來,這就是目標檢測問題。其中“定位”的意思是判斷汽車在圖片中的具體位置。

 

  近幾年來,目標檢測算法取得了很大的突破。比較流行的算法可以分為兩類:

  • 一類是基於Region Proposal的R-CNN系算法(R-CNN, Fast R-CNN, Faster R-CNN等),它們是two-stage的,需要:1)先算法產生目標候選框,也就是目標位置, 2)然后再對候選框做分類與回歸。先進行區域生成,該區域稱之為region proposal(簡稱RP,一個可能包含待檢物體的預選框),再通過卷積神經網絡進行樣本分類。任務流程:特征提取-->生成RP-->分類/定位回歸。常見two stage目標檢測算法有:R-CNN, SPP-Net, Fast R-CNN, Faster R-CNN和R-FCN等
  • 另一類是Yolo, SSD這類one-stage算法,其僅僅使用一個卷積神經網絡CNN直接預測不同目標的類別與位置。不用RP,直接在網絡中提取特征來預測物體分類和位置。任務流程:特征提取-->分類/定位回歸。常見的one stage目標檢測算法有:OverFeat, YOLOV1, YOLOV2, YOLOV3, SSD和RetinaNet等

  第一類方法是准確度高一些,但是速度慢,但是第二類算法是速度快,但是准確性要低一些。這些可以在下圖中看到:

 

 4.1 目標檢測原理

  目標檢測分為兩大系列——RCNN系列和YOLO系列,RCNN系列是基於區域檢測的代表性算法,YOLO是基於區域提取的代表性算法,另外還有著名的SSD是基於前兩個系列的改進。

4.1.1 候選區域產生

  很多目標檢測技術都會涉及候選框(bounding boxes)的生成,物理候選框獲取當前主要使用圖像分割區域生長技術。區域生長(合並)主要由於檢測圖像中存在的物體具有局部區域相似性(顏色、紋理等)。目標識別與圖像分割拘束的發展進一步推動有效提取圖像中信息。

1) 滑動窗口

  通過滑窗法流程圖可以很清晰理解其主要思路:首先對輸入圖像進行不同窗口大小的滑窗進行從左往右、從上到下的滑動。每次滑動時候對當前窗口執行分類器(分類器是事先訓練好的)。如果當前窗口得到較高的分類概率,則認為檢測到了物體。對每個不同窗口大小的滑窗都進行檢測后,會得到不同窗口檢測到的物體標記,這些窗口大小會存在重復較高的部分,最后采用非極大值抑制(Non-Maximum Suppression, NMS)的方法進行篩選。最終,經過NMS篩選后獲得檢測到的物體。

  滑窗法簡單易於理解,但是不同窗口大小進行圖像全局搜索導致效率低下,而且設計窗口大小時候還需要考慮物體的長寬比。所以,對於實時性要求較高的分類器,不推薦使用滑窗法

 

  2)選擇性搜索

    什么是選擇性搜索?

    滑窗法類似窮舉進行圖像子區域搜索,但是一般情況下圖像中大部分子區域是沒有物體的。學者們自然而然想到只對圖像中最有可能包含物體的區域進行搜索以此來提高計算效率。選擇搜索(selective search, 簡稱SS)方法是當下最為熟知的圖像bounding boxes提取算法,由Koen E. A於2011年提出

    選擇搜索算法的主要思想:圖像中物體可能存在的區域應該是有某些相似性或者連續性區域的。因此,選擇搜索基於上面這一想法采用子區域合並的方法進行提取bounding boxes。首先,對輸入圖像進行分割算法產生許多小的子區域。其次,根據這些子區域之間的相似性(相似性標准主要有顏色、紋理、大小等等)進行區域合並,不斷的進行區域迭代合並。每次迭代過程中對這些合並的子區域做bounding boxes(外切矩形),這些子區域外切矩形就是通常所說的候選框。

  

 

  選擇搜索流程:

  • step0:生成區域集R
  • step1:計算區域集R里每個相鄰區域的相似度S={s1, s2,...}
  • step2:找出相似度最高的兩個區域,將其合並為新集,添加進R
  • step3:從S中移除所有與step2中有關的子集
  • step4:計算新集與所有子集的相似度
  • step5:跳至step2,直至S為空

  選擇搜索優點:

  • 計算效率優於滑窗法
  • 由於采用子區域合並策略,所以可以包含各種大小的疑似物體框
  • 合並區域相似的指標多樣性,提高了檢測物體的概率

4.1.2  數據表示

  經過標記后的樣本數據如下所示:

 

  預測輸出可以表示為:

 

  其中,$p_c$為預測結果的置信概率,$b_x, b_y, b_w, b_h$為裱框坐標, $C_1, C_2, C_3$為屬於某個類別的概率。通過預測結果,實際結果,構建損失函數。損失函數包含了分類、回歸兩部分組成。

4.1.3 效果評估

  使用IoU(Intersection over Union, 交並比)來判斷模型的好壞。所謂交並比,是指預測邊框、實際邊框交績和並集的比率,一般約定0.5為一個可以接受的值。

 

4.1.4 非極大值抑制

  預測結果中,可能多個預測結果間存在重疊部分,需要保留交並比最大的、去掉非最大的預測結果,這就是非極大值抑制(Non-Maximum Suppression, 簡寫作NMS)。如下圖所示,對同一個物體預測結果包含三個概率0.8/0.9/0.95,經過非極大值抑制后,僅保留概率最大的預測結果。

 

 4.2 目標檢測模型

4.2.1 R-CNN系列

1) R-CNN

  定義:R-CNN(全稱Regions with CNN features),是R-CNN系列的第一代算法,其實沒有過多的使用“深度學習”思想,而是將“深度學習”和傳統的“計算機視覺”的知識相結合。比如R-CNN pipeline中的第二步和第四步其實就屬於傳統的“計算機視覺”技術。使用selective search提取region proposals,使用SVM實現分類。

  流程:

  • 預訓練模型:選擇一個預訓練(pre-trained)神經網絡(如AlexNet, VGG)。
  • 重新訓練全連接層:使用需要檢測的目標重新訓練(re-train)最后全連接層(connected layer)
  • 提取proposals並計算CNN特征。利用選擇性搜索(Selective Search)算法提取所有proposals(大約2000幅images),調整(resize/warp)它們成固定大小,以滿足CNN輸入要求(因為全連接層的限制),然后將feature map保存到本地磁盤
  • 訓練SVM。利用feature map訓練SVM來對目標和背景進行分類(每個類一個二進制(二分類?)SVM)
  • 邊界框回歸(Bounding boxes Regression)。訓練將輸出一些校正因子的線性回歸分類器

  效果:

  • R-CNN在VOC 2007測試集上mAP達到58.5%,打敗當時所有的目標檢測算法

  缺點:

  • 重復計算,每個region proposal,都需要經過一個AlexNet特征提取,為所有的RoI(region of interest)提取特征大約花費47秒,占用空間
  • selective search方法生成region proposal,對一幀圖像,需要花費2秒
  • 三個模塊(提取、分類、回歸)是分別訓練的,並且在訓練時候,對於存儲空間消耗較大

 4.2.2  YOLO系列

1)YOLOv1(2016)

  YOLO(You Only Look Once)是繼RCNN,fast-RCNN之后,Ross Girshick針對DL目標檢測速度問題提出的另一種框架,其核心思想是生成Rol+目標檢測兩階段(two-stage)算法用一套網絡的一階段(one-stage)算法替代,直接在輸出層回歸bounding box的位置和所屬類別。

  之前的物體檢測方法首先需要大量可能包含待檢測物體的先驗框,然后用分類器判斷每個先驗框對應的邊界框里是否包含待檢測物體,以及物體所屬類別的概率或者置信度,同時需要后處理修正邊界框,最后基於一些准則過濾掉之心度不高和重疊度較高的邊界框,進而得到檢測結果。這種基於先產生候選區再檢測的方法雖然有相對較高的檢測准確度,但運行速度較慢。

  YOLO創造性的將物體檢測任務直接當作回歸問題(regression problem)來處理,將候選區和檢測兩個階段合二為一。只需一眼就能知道每張圖像中有那些物體以及物體的位置。下圖展示了各物體檢測系統的流程圖

 

  實際上,YOLO並沒有真正去掉候選區,而是采用了預定義候選區的方法,也就是將圖片划分為7*7個網格,每個網格允許預測出兩個邊框,總共49*2個bounding box,可以理解為98個候選區,它們很粗略地覆蓋了圖片地整個區域。YOLO以降低mAP為代價,大幅提升了時間效率。

 

  每個網格單元預測這些框地2個邊界框和置信度分數。這些置信度分數反映了該模型對框是否包含目標地可靠程度,以及它預測框的准確程度。置信度定義為:$Pr(Object) * IOU_{pred}^{truth}$。如果該單元格中不存在目標,則置信度分數應為零。否則,我們虛妄置信度分數等於預測框與真實值之間聯合部分的交集(IOU)。

 

 

轉載:https://mp.weixin.qq.com/s?__biz=MzU4MjQ3MDkwNA==&mid=2247483731&idx=1&sn=237c52bc9ddfe65779b73ef8b5507f3c&chksm=fdb69cc4cac115d2ca505e0deb975960a792a0106a5314ffe3052f8e02a75c9fef458fd3aca2#rd

https://blog.csdn.net/electech6/article/details/95240278

https://blog.csdn.net/yegeli/article/details/109861867


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM