SSD用於實時物體檢測
雷鋒網 AI 研習社按:本文為雷鋒網字幕組編譯的技術博客,原標題 SSD(Single Shot Multi-Box Detection) for real time object detection,作者 Rabin Poudyal。
翻譯 | 陶玉龍 校對 | 佟金廣 整理 | 孔令雙
卷積神經網路在檢測圖像中的物體時優於其他神經網路結構。很快,研究人員改進了 CNN 來進行對象定位與檢測,並稱這種結構為 R-CNN(Region-CNN)。R-CNN 的輸出是具有矩形框和分類的圖像,矩形框圍繞著圖像中的對象。以下是 R-CNN 的工作步驟:
使用我們稱為選擇性搜索的演算法掃描輸入圖像,進而查找可能的對象,生成大約 2000 個候選區域,
在每個候選區域上運行 CNN,
獲取每個 CNN 的輸出並將其輸入:
SVM 來區域進行分類
線性回歸器來收緊對象的邊界框,如果對象存在
R-CNN 運用於目標檢測
雖然與傳統的 CNN 相比,R-CNN 在目標定位,檢測和分類方面都取得了很大進步,但在實現目標實時檢測方面依舊存在問題。以下是其中的一些問題:
1、訓練數據很難處理,而且耗時很長
2、訓練分為兩個階段進行(即:候選區域的選擇和分類)
3、網路在推理階段很慢(處理非訓練數據時)
為了改進 R-CNN,研究人員們相繼提出了其他演算法,如 Fast-RCNN,Faster-RCNN 等。 這些演算法為目標檢測提供了更準確的結果。 但它們對於實時檢測來說顯得有點慢。SSD 就在這個時候應運而生,它在準確性和計算速度方面具有良好的平衡。
SSD(單發多邊框檢測器)的含義
單發:目標定位和分類在網路的單個前向傳遞中完成 :
多框:邊界框回歸的技術
檢測器:對檢測到的對象進行分類
結構
SSD 結構
SSD 的結構建立在 VGG-16 的基礎上。但在這裡對 VGG-16 進行了一些微小調整,從 Conv6 層開始,我們用一系列輔助卷積層來代替原先全連接層。因為 VGG-16 可以提供高質量的圖像分類和遷移學習來改善結果, 我們將其作為 SSD 的基礎網路。通過使用輔助卷積層,我們可以提取圖像多個尺度的特徵,並逐步減小每個卷積層的尺寸。我已在下一節討論了它的工作原理。您可以看到 VGG-16 架構的以下圖像, 它包含全連接層。
VGG-16 結構
工作機制
為了訓練我們的演算法,我們需要一個包含帶有對象的圖像的訓練集,這些對象必須在它們上面有邊界框。 通過這種方式學習,演算法學習如何在對象上放置矩形框以及放置在何處。 我們通過調參使預測出的邊界框和實際的邊界框之間的誤差最小,從而優化我們的模型以正確地檢測對象。與 CNN 不同,我們不僅預測圖像中是否存在物體,還需要預測物體在圖像中的位置。在訓練期間,演算法也要學習調整對象邊界框中的高度和寬度。
上圖是我們用於目標檢測的訓練數據集的示例。 這些數據集必須包含在圖像中標記類別的對象。 更多默認框會有更準確的檢測,但會以速度犧牲作為代價。
Pascal VOC 和 COCO 數據集對初學者而言是一個很好的入門。
處理尺度問題
在左邊是一張有幾匹馬的圖像。我們將輸入圖像劃分為網格集。 然後我們圍繞這些網格製作幾個不同寬高比的矩形框。 我們在這些框中應用卷積來研究這些網格中是否存在對象。這裡的一匹黑馬在圖像中更靠近攝像頭。因此,我們繪製的邊界框無法識別是否是馬,因為邊界框沒有任何可以識別馬匹的特徵。
如果我們看上述 SSD 的架構,我們可以看到在 conv6 層之後的每個步驟中圖像的大小在顯著減小。 我們討論的關於劃分網格和在這些網格上查找對象的每個操作都適用於從網路的後面到前面的卷積的每個步驟。 分類器也應用在每個步驟中來檢測對象。 因此,由於物體在每個步驟中變得更小,它很容易識別。
SSD 演算法還知道如何從一個卷積操作返回到另一個卷積操作。 它不僅會前向運算而且會後向運算。 例如,如果它在 conv4 中看到馬,那麼它可以返回到 conv6 並且將在馬周圍繪製矩形框。
原文鏈接:
https://medium.com/@rabinpoudyal1995/ssd-single-shot-multi-box-detection-for-real-time-object-detection-5f2a06e33a4a
雷鋒網 AI 研習社編譯。
號外號外~
一個專註於
AI技術發展和AI工程師成長的求知求職社區
誕生啦!
歡迎大家訪問以下鏈接或者掃碼體驗
https://club.leiphone.com/page/home
※聯手麥格納,May Mobility將在底特律部署自動駕駛接駁車
※網速逆天,但5G面臨的安全壓力有多大你知道嗎?
TAG:雷鋒網 |