作為計算機視覺三大任務(圖像分類、目標檢測、圖像分割)之壹,目標檢測任務在於從圖像中定位並分類感興趣的物體。傳統視覺方案涉及霍夫變換、滑窗、特征提取、邊界檢測、模板匹配、哈爾特征、DPM、BoW、傳統機器學習(如隨機森林、AdaBoost)等技巧或方法。在卷積神經網絡的加持下,目標檢測任務在近些年裏有了長足的發展。其應用十分廣泛,比如在自動駕駛領域,目標檢測用於無人車檢測其他車輛、行人或者交通標誌牌等物體。
目標檢測的常用框架可以分為兩類,壹類是 two-stage/two-shot 的方法,其特點是將興趣區域檢測和分類分開進行,比較有代表性的是R-CNN,Fast R-CNN,Faster R-CNN;另壹類是 one-stage/one-shot 的方法,用壹個網絡同時進行興趣區域檢測和分類,以YOLO(v1,v2,v3)和SSD為代表。
Two-stage的方式面世比較早,由於需要將興趣區域檢測和分類分開進行,雖然精度比較高,但實時性比較差,不適合自動駕駛無人車輛感知等應用場景。因而此次我們主要介紹壹下SSD和YOLO系列框架。
SSD與2016年由W. Liu et al.在 SSD: Single Shot MultiBox Detector 壹文中提出。雖然比同年提出的YOLO(v1)稍晚,但是運行速度更快,同時更加精確。
SSD的框架在壹個基礎CNN網絡(作者使用VGG-16,但是也可以換成其他網絡)之上,添加了壹些額外的結構,從而使網絡具有以下特性:
用多尺度特征圖進行檢測
作者在VGG-16後面添加了壹些特征層,這些層的尺寸逐漸減小,允許我們在不同的尺度下進行預測。越是深層小的特征圖,用來預測越大的物體。
用卷積網絡進行預測
不同於YOLO的全連接層,對每個用於預測的 通道特征圖,SSD的分類器全都使用了 卷積進行預測,其中 是每個單元放置的先驗框的數量, 是預測的類別數。
設置先驗框
對於每壹個特征圖上的單元格,我們都放置壹系列先驗框。隨後對每壹個特征圖上的單元格對應的每壹個先驗框,我們預測先驗框的 維偏移量和每壹類的置信度。例如,對於壹個 的特征圖,若每壹個特征圖對應 個先驗框,同時需要預測的類別有 類,那輸出的大小為 。(具體體現在訓練過程中)
其中,若用 表示先驗框的中心位置和寬高, 表示預測框的中心位置和寬高,則實際預測的 維偏移量 是 分別是:
下圖是SSD的壹個框架,首先是壹個VGG-16卷積前5層,隨後級聯了壹系列卷積層,其中有6層分別通過了 卷積(或者最後壹層的平均池化)用於預測,得到了壹個 的輸出,隨後通過極大值抑制(NMS)獲得最終的結果。
圖中網絡用於檢測的特征圖有 個,大小依次為 , , , , , ;這些特征圖每個單元所對應的預置先驗框分別有 , , , , , 個,所以網絡***預測了 個邊界框,(進行極大值抑制前)輸出的維度為 。
未完待續
參考:
chenxp2311的CSDN博客:論文閱讀:SSD: Single Shot MultiBox Detector
小小將的知乎專欄:目標檢測|SSD原理與實現
littleYii的CSDN博客:目標檢測論文閱讀:YOLOv1-YOLOv3(壹)
作者的其他相關文章:
圖像分割:全卷積神經網絡(FCN)詳解
PointNet:基於深度學習的3D點雲分類和分割模型 詳解
基於視覺的機器人室內定位