深度學習基礎 - 對象檢測(CNN+滑窗+YOLO)

本文以自動駕駛場景下的對象檢測(Object Detection)爲研究對象,學習理解滑窗卷積和YOLO等內容。

exp_1

1.對象檢測

對象檢測(Object Detection)的目的是”識別對象並給出其在圖中的確切位置”,其內容可解構爲三部分:

  1. 識別某個對象(Classification);
  2. 給出對象在圖中的位置(Localization);
  3. 識別圖中所有的目標及其位置(Detection)。

如下圖所示,從左到右分別展示了:某個對象的識別(P(目標)=1,class=car),對象在圖中的定位(給出邊框bounding box–

2.滑窗+CNN

滑動窗口(Sliding Windows,簡稱滑窗)法是進行目標檢測的主流方法。對於某輸入圖像,由於其對象尺度形狀等因素的不確定性,導致直接套用預訓練好的模型進行識別效率低下。通過設計滑窗來遍歷圖像,將每個窗口對應的局部圖像進行檢測,能有效克服尺度、位置、形變等帶來的輸入異構問題,提升檢測效果。下圖展示了某種大小的滑窗在待檢測圖像上滑動的過程:

concept_sliding_windows

下圖展示了採用滑窗(size=8×8, stride=2)對圖片(10×10)進行對象檢測的全過程示意。圖示的輸出爲2×2的網格,每個格子對應一個輸出標籤向量,給出了原圖對應的窗口區域圖像的檢測結果(置信度、邊框位置、各類別概率等)。

sliding_windows_detection

要實現對象檢測,需要有相應的目標識別模型(如上圖中的Classifier),卷積神經網絡(CNN)是其中的主流模型之一。但是,按照上圖所示,採用CNN對每個窗口圖像進行檢測,會產生大量的重複計算(如卷積操作),爲了提高檢測效率,通過合理設計CNN模型,可以僅需一次前向傳播而得出整個圖像的滑窗檢測結果。下圖展示了相關的模型設計實現過程:

sliding_windows_cnn

上圖的三步描述了採用14×14大小的窗口進行滑動卷積時的CNN設計實現過程。採用(2)所設計的CNN對(3)中的輸入圖像進行檢測,可以一次性得出最終的結果網格,其相應位置的網格映射了滑動窗口在原圖像上的相應區域(如圖中輸出2×2網格左上角向量即爲第一個窗口的CNN檢測結果,圖中的陰影標註了該窗口信息在CNN中的流動)。

3.YOLO

YOLO(You Only Look Once),是一種端到端(end-to-end)的對象檢測方法。雖然是端到端模型,其實也可以粗略地分解爲迴歸預測與邊框篩選兩部分。首先,採用迴歸模型(如滑窗CNN)一次得出全圖像的邊框標註,同時將圖像進行網格化分,每個格子負責中心點落於其上的對象的邊框(boxes);然後,採用非最大抑制基於每個格子得出經過篩選之後的邊框輸出。該過程示意如下:

yolo

上圖中,標註預測(Boxes Prediction)環節負責得出大量候選邊框,該部分可採用的模型多種多樣(如上文介紹的滑窗CNN);邊框篩選(Boxes Filtering)過程則採用非最大抑制來實現。這裏先給出YOLO邊框篩選的兩個重要基礎概念:交併比(IoU)與非最大抑制(NMS)。

  • 交併比(Intersection over Union,IoU)

    交併比用來描述兩個邊框(bounding boxes)的重合程度,其定義爲:IoU = (S1∩S2)/(S1∪S2),即兩框覆蓋區域的交集與並集的面積比。IoU 越大,說明兩個邊框重合度越高。

  • 非最大抑制(Non-Max Suppression,NMS)

    非最大抑制的基本思想是,對於表示同一個對象的多個邊框,僅保留其中置信度最大的框,而將其他篩除。該篩選過程可描述如下:

    設每個輸出形式爲: boxes = [pc,bx1,by1,bx2,by2,…]

    1. 去掉 pc ≤ 閾值boxes
    2. 若還有 boxes 剩餘:(1)選出其中pc->max的邊框作爲預測並輸出;(2)去掉與該 boxes 相交的滿足 IoU ≥ 閾值 的所有邊框;
    3. 重複 2. 直到沒有 boxes 剩餘,由此得出所有的預測輸出 boxes

YOLO的邊框篩選過程可舉例描述爲:如經過滑窗CNN檢測後,每個輸出網格(cell)負責檢測出中心點落在其中的多個邊框(boxes),然後採用非最大抑制對這些邊框中屬於同一類的進行篩選,從而得出最終的輸出結果。

另外在YOLO中,還可以通過設置anchor boxes來實現對多個重疊的不同類邊框的有效檢測。如下圖所示,設置 2 anchors 實現兩種對象重疊情況的檢測。

anchor

4.實驗

這裏我們直接採用YOLO官網所提供的預訓練好的模型來進行檢測實驗嘗試,下面展示了一些檢測結果(測試圖像取景自華小科校內):

exp_1
exp_1
exp_1
exp_1

可以看出,直接採用互聯網資源所提供的預訓練模型即可實現很不錯的檢測效果。在此基礎上,可通過採集更加豐富的目標場景圖像數據,在現有模型上進行遷移學習,以期實現更好的面向具體應用的檢測模型。

5.參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章