編者按:Towards Data Science博主Eddie Forson直觀(guān)地解釋了SSD多盒目標(biāo)檢測(cè)技術(shù)。
端到端目標(biāo)檢測(cè)(來(lái)源:Microsoft)
本文的目的是構(gòu)建一個(gè)SSD多盒目標(biāo)檢測(cè)技術(shù)的直觀(guān)解釋。我嘗試盡可能少地使用數(shù)學(xué),相反,緩慢地引導(dǎo)你了解整個(gè)架構(gòu)的原則,包括解釋多盒算法的作用。閱讀本文之后,我希望你更好地理解了SSD,并可以自行嘗試使用這一模型。
自從AlexNet在2012年ILSVRC上暴風(fēng)般地占領(lǐng)學(xué)術(shù)界之后,深度學(xué)習(xí)便成為圖像識(shí)別任務(wù)的首選方法,遠(yuǎn)超文獻(xiàn)中更傳統(tǒng)的計(jì)算機(jī)視覺(jué)技術(shù)。在計(jì)算機(jī)視覺(jué)領(lǐng)域中,卷積神經(jīng)網(wǎng)絡(luò)在圖像分類(lèi)(classification)方面表現(xiàn)出色。圖像分類(lèi)任務(wù)中,給定待分類(lèi)的圖片和一個(gè)分類(lèi)(class)的集合(例如,貓、狗),然后讓網(wǎng)絡(luò)決定圖像的最強(qiáng)(strongest)分類(lèi)。
貓狗圖(來(lái)源:kaggle)
當(dāng)前,深度學(xué)習(xí)網(wǎng)絡(luò)在圖像分類(lèi)方面的表現(xiàn)已經(jīng)超過(guò)人類(lèi),這表明這一技術(shù)是多么強(qiáng)大。然而,我們?nèi)祟?lèi)觀(guān)察世界和與世界交互時(shí)所做的遠(yuǎn)不止分類(lèi)圖片。我們同時(shí)定位(localize)和分類(lèi)(classify)視野內(nèi)的每個(gè)元素。這些復(fù)雜得多的任務(wù),機(jī)器仍在艱辛地努力達(dá)到和人類(lèi)相當(dāng)?shù)谋憩F(xiàn)。事實(shí)上,我主張,表現(xiàn)良好的目標(biāo)檢測(cè)將使機(jī)器更接近真實(shí)場(chǎng)景理解。
圖像顯示了貓、狗,還是兩者皆有?(來(lái)源:kaggle)
基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)(R-CNN)
幾年前,研究人員提出了R-CNN,以應(yīng)對(duì)目標(biāo)檢測(cè)、定位、分類(lèi)任務(wù)。大體上說(shuō),R-CNN是一種特殊的CNN,可以定位和檢測(cè)圖像中的目標(biāo):輸出基本上是一組匹配檢測(cè)到的目標(biāo)的包圍盒,以及對(duì)應(yīng)的分類(lèi)。下圖顯示了一個(gè)典型的R-CNN輸出的結(jié)果:
這一領(lǐng)域的論文很多,對(duì)有興趣深入的讀者,我推薦從下面的“三部曲”開(kāi)始:
R-CNN
Fast-R-CNN
Faster-R-CNN
正如你可能猜到的那樣,F(xiàn)ast-R-CNN是對(duì)R-CNN的改進(jìn),而Faster-R-CNN又是對(duì)Fast-R-CNN的改進(jìn),以研發(fā)針對(duì)實(shí)時(shí)目標(biāo)檢測(cè)的更快的網(wǎng)絡(luò)。上面的“三部曲”達(dá)到的成就真的很驚人,不過(guò)沒(méi)有一個(gè)架構(gòu)成功構(gòu)建了一個(gè)實(shí)時(shí)目標(biāo)檢測(cè)器。這些網(wǎng)絡(luò)存在以下問(wèn)題(省略細(xì)節(jié)部分):
難以訓(xùn)練,并且訓(xùn)練時(shí)間過(guò)長(zhǎng)
需要進(jìn)行多階段訓(xùn)練(例如,訓(xùn)練候選區(qū)域和分類(lèi)器)
網(wǎng)絡(luò)在推理階段太慢(即處理非訓(xùn)練數(shù)據(jù))
幸運(yùn)的是,最近提出了新的架構(gòu),以解決R-CNN的瓶頸。其繼任者足以進(jìn)行實(shí)時(shí)目標(biāo)檢測(cè)。其中最有名的是YOLO(You Only Look Once,你只看一次)和SSD多盒(SSD是Single Shot Detector單次檢測(cè)器的縮寫(xiě))。本文將討論SSD,因?yàn)橄啾萗OLO,目前網(wǎng)上介紹SSD架構(gòu)的文章不多。另外,一旦你理解了SSD,你會(huì)更容易理解YOLO.
單次多盒檢測(cè)器
C. Szegedy等人在2016年11月底發(fā)表的論文SSD: Single Shot MultiBox Detector在目標(biāo)檢測(cè)任務(wù)中創(chuàng)造了新紀(jì)錄,在PascalVOC和COCO這樣的標(biāo)準(zhǔn)數(shù)據(jù)集上取得了74% mAP(mean Average Precision),59幀每秒的成績(jī)。為了更好地理解SSD,讓我們先從解釋這一架構(gòu)命名的由來(lái)開(kāi)始:
Single Shot(單次)這意味著目標(biāo)定位和分類(lèi)任務(wù)通過(guò)網(wǎng)絡(luò)的單次前向傳播完成。
MultiBox(多盒)這是由Szegedy等開(kāi)發(fā)的包圍盒回歸技術(shù)。
Detector(偵測(cè)器)該網(wǎng)絡(luò)是一個(gè)目標(biāo)偵測(cè)器,分類(lèi)檢測(cè)到的目標(biāo)。
架構(gòu)
單次多盒偵測(cè)器架構(gòu)(輸入 300x300x3)
如上圖所示,SSD的架構(gòu)基于可敬的VGG-16架構(gòu),但拋棄了全連接層。使用VGG-16作為基礎(chǔ)網(wǎng)絡(luò)(base network)的原因是其在高畫(huà)質(zhì)圖像分類(lèi)任務(wù)上的強(qiáng)力表現(xiàn)和在遷移學(xué)習(xí)有助于改善結(jié)果的任務(wù)上的流行性。架構(gòu)沒(méi)有使用原VGG的全連接層,轉(zhuǎn)而加入了一組輔助卷積層(自conv6開(kāi)始),從而在不同尺度上提取特征,并逐層遞減輸入的尺寸。
VGG架構(gòu)(輸入 224x224x3)
多盒
SSD的包圍盒回歸技術(shù)受到了Szegedy在多盒方面的工作的啟發(fā)。多盒是一種快速分類(lèi)不可知(class-agnostic)包圍盒坐標(biāo)提議的方法。有趣的是,多盒使用的是Inception風(fēng)格的卷積神經(jīng)網(wǎng)絡(luò)。下圖中的1x1卷積有助于降維,因?yàn)榫S度將下降(但“寬度”和“高度”將保持不變)。
多盒架構(gòu)
多盒的損失函數(shù)同樣組合了兩個(gè)關(guān)鍵的組件,這也為SSD所吸收:
置信度損失(Confidence Loss)衡量網(wǎng)絡(luò)對(duì)計(jì)算出的包圍盒的objectness的置信度。使用類(lèi)別交叉熵計(jì)算這一損失。
定位損失(Location Loss)衡量網(wǎng)絡(luò)預(yù)測(cè)的包圍盒和訓(xùn)練集的標(biāo)準(zhǔn)答案相差多遠(yuǎn)。這里使用了L2正則化。
不過(guò)多深究數(shù)學(xué)的話(huà),(如果你很好奇并想了解更嚴(yán)謹(jǐn)?shù)母拍?,?qǐng)閱讀論文)損失的表達(dá)式如下:
multibox_loss = confidence_loss + alpha * location_loss
其中,alpha項(xiàng)幫助我們平衡定位損失的貢獻(xiàn)。
多盒先驗(yàn)和IoU
涉及包圍盒生成的邏輯實(shí)際上比我之前陳述的要復(fù)雜。不過(guò)別怕:它仍在能力范圍之內(nèi)。
多盒中的先驗(yàn)(prior)(Faster-R-CNN術(shù)語(yǔ)中的錨(anchor))是提前計(jì)算的固定尺寸包圍盒,匹配原標(biāo)準(zhǔn)答案包圍盒的分布。事實(shí)上,這些先驗(yàn)的選取方式使得它們和標(biāo)準(zhǔn)答案包圍盒的交并比(IoU,有時(shí)稱(chēng)為Jaccard指數(shù))大于0.5. 從下圖可以推測(cè),0.5的交并比仍然不夠好,但是它確實(shí)為包圍盒回歸算法提供了一個(gè)強(qiáng)力的開(kāi)始——這是一個(gè)比隨機(jī)坐標(biāo)要好得多的策略!因此,多盒從將先驗(yàn)作為預(yù)測(cè)開(kāi)始,試圖回歸逼近標(biāo)準(zhǔn)答案包圍盒。
IoU示意部分取自維基百科
最終所得的架構(gòu)(參考前文提及的多盒架構(gòu)示意圖),每個(gè)特征映射細(xì)胞(8x8、6x6、4x4、3x3、2x2)包含11個(gè)先驗(yàn),而1x1特征映射僅包含一個(gè)先驗(yàn),即每張圖像共有1420個(gè)先驗(yàn),從而在輸入圖像上達(dá)到不同比例的穩(wěn)健覆蓋,以檢測(cè)不同尺寸的目標(biāo)。
最后,多盒僅僅保留最好的K個(gè)預(yù)測(cè),這些預(yù)測(cè)同時(shí)最小化定位(LOC)損失和置信度(CONF)損失。
SSD的改進(jìn)
回到SSD,SSD加入了一些調(diào)整,提升了該網(wǎng)絡(luò)定位和分類(lèi)目標(biāo)的能力。
固定先驗(yàn)和多盒不同,每個(gè)特征映射細(xì)胞關(guān)聯(lián)一組尺寸和長(zhǎng)寬比不同的默認(rèn)包圍盒。這些先驗(yàn)是手工(精心)選擇的,而在多盒中,先驗(yàn)是基于與相應(yīng)的標(biāo)準(zhǔn)答案包圍盒的交并比超過(guò)0.5選擇的。在理論上這使得SSD可以概括任何種類(lèi)的輸入,無(wú)需生成先驗(yàn)的預(yù)訓(xùn)練階段。例如,假定我們?yōu)槊總€(gè)特征映射細(xì)胞的每個(gè)默認(rèn)包圍盒b配置了兩個(gè)對(duì)角點(diǎn)(x1, y1)和(x2, y2),然后需要基于c個(gè)分類(lèi)進(jìn)行分類(lèi),而給定的特征映射尺寸為f = m * n,那么,SSD將為該特征映射計(jì)算f * b * (4 + c)值。
定位損失SSD使用平滑L1正則化(smooth L1-Norm)計(jì)算定位損失。盡管不如L2正則化那樣精確,這仍然非常有效,也給了SSD更多取巧的空間,因?yàn)镾SD的包圍盒預(yù)測(cè)并不追求“像素完美”(對(duì)許多人而言,一些像素的差異很難察覺(jué))。
分類(lèi)多盒并不執(zhí)行目標(biāo)分類(lèi),而SSD進(jìn)行分類(lèi)。因此,SSD為每個(gè)預(yù)測(cè)的包圍盒、數(shù)據(jù)集中的每個(gè)可能的分類(lèi)計(jì)算c分類(lèi)預(yù)測(cè)的集合。
訓(xùn)練并運(yùn)行SSD
數(shù)據(jù)集
我們將訓(xùn)練和測(cè)試帶有標(biāo)準(zhǔn)答案包圍盒及相應(yīng)的分類(lèi)標(biāo)簽(每個(gè)包圍盒有一個(gè)分類(lèi)標(biāo)簽)的數(shù)據(jù)集。Pascal VOC和COCO數(shù)據(jù)集是一個(gè)很好的開(kāi)始。
Pascal VOC數(shù)據(jù)集圖像
默認(rèn)包圍盒
建議配置一組多樣化的包圍盒,包括不同的比例和長(zhǎng)寬比,確??梢圆蹲降酱蠖鄶?shù)目標(biāo)。在SSD論文中,每個(gè)特征映射單元有6個(gè)包圍盒。
特征映射
特征映射(即卷積塊的結(jié)果)是不同尺度上圖像的主導(dǎo)特征的表示,因此在不同特征映射上運(yùn)行多盒增加了逐漸檢測(cè)、定位、分類(lèi)任何目標(biāo)(大目標(biāo)和小目標(biāo))的概率。下圖顯示了網(wǎng)絡(luò)是如何在特征映射上“看到”給定圖像的:
VGG特征映射可視化(圖片來(lái)源 Brown Uni)
Hard Negative Mining
在訓(xùn)練中,由于大多數(shù)包圍盒的IoU較低,會(huì)被視作負(fù)面訓(xùn)練樣本,我們最終的訓(xùn)練集可能會(huì)有不成比例的負(fù)面樣本。因此,建議不要使用所有的負(fù)面預(yù)測(cè),將負(fù)面樣本和正面樣本的比例保持在3:1. 我們需要保留負(fù)面樣本的原因是網(wǎng)絡(luò)同樣需要學(xué)習(xí)什么構(gòu)成了錯(cuò)誤檢測(cè)。
圖片來(lái)源 Jamie Kang
數(shù)據(jù)增強(qiáng)
SSD的作者說(shuō),和許多深度學(xué)習(xí)應(yīng)用一樣,數(shù)據(jù)增強(qiáng)是非常重要的部分,使網(wǎng)絡(luò)能夠?qū)W習(xí)更穩(wěn)健地應(yīng)對(duì)輸入中的不同目標(biāo)尺寸。為了達(dá)到這一目標(biāo),他們生成了額外的訓(xùn)練樣本,包括不同IoU的補(bǔ)丁(例如,0.1、0.3、0.5等),以及隨機(jī)補(bǔ)丁。此外,每張圖像基于0.5的概率隨機(jī)水平翻轉(zhuǎn),從而確保潛在目標(biāo)出現(xiàn)在左側(cè)和右側(cè)的概率相同。
水平翻轉(zhuǎn)的圖像,來(lái)源:Behavioural Cloning
非極大值抑制(NMS)
在推理階段,SSD的前向傳播中生成了數(shù)量巨大的包圍盒,因此應(yīng)用非極大值抑制(non-maximum suppression)技術(shù)修剪大多數(shù)包圍盒很有必要:置信度損失低于閾值ct(例如,0.01),IoU低于閾值lt(例如,0.45)的包圍盒被拋棄了,僅保留最高的N個(gè)預(yù)測(cè)。這確保只有最可能的預(yù)測(cè)被網(wǎng)絡(luò)保留,而移除了大多數(shù)噪聲。
NMS的例子(來(lái)源:DeepHub)
SSD的補(bǔ)充說(shuō)明
SSD提出了以下觀(guān)察:
更多的默認(rèn)包圍盒導(dǎo)致更精確的檢測(cè),不過(guò)這會(huì)影響速度。
在多層上使用多盒同樣能帶來(lái)更好的檢測(cè)效果,這是因?yàn)闄z測(cè)器在不同尺度的特征上運(yùn)行。
80%的時(shí)間花在基礎(chǔ)VGG-16網(wǎng)絡(luò)上:這意味著使用一個(gè)速度更快的同樣精確的網(wǎng)絡(luò),SSD的性能會(huì)更好。
相似類(lèi)別的目標(biāo)會(huì)迷惑SSD(例如,動(dòng)物)。這大概是因?yàn)椴煌诸?lèi)的位置相同。
SSD-500(使用512x512輸入圖像的SSD最高分辨率變體)在Pascal VOC2007上達(dá)到了最佳mAP(76.8%),不過(guò)相應(yīng)的代價(jià)是速度,幀率降至22 fps. 因此,SSD-300是一個(gè)更好的折衷(74.3% mAP、59 fps)。
SSD在較小的目標(biāo)上表現(xiàn)較差,因?yàn)檩^小的目標(biāo)可能不在所有特征映射上出現(xiàn)。增加輸入圖像分辨率緩解了這一問(wèn)題,但并沒(méi)有完全解決它。
嘗試SSD
網(wǎng)上有一些SSD實(shí)現(xiàn),包括論文作者的Caffe代碼。我選用的是Paul Balan?a的TensorFlow實(shí)現(xiàn)。代碼和論文都值得一讀,以便更好地理解所有東西是如何結(jié)合在一起的。
我最近決定基于SSD重新實(shí)現(xiàn)一個(gè)基于傳統(tǒng)計(jì)算機(jī)視覺(jué)技術(shù)的車(chē)輛檢測(cè)項(xiàng)目。下面的gif表明SSD的效果非常好:
-
SSD
+關(guān)注
關(guān)注
21文章
2984瀏覽量
119604 -
計(jì)算機(jī)視覺(jué)
+關(guān)注
關(guān)注
9文章
1709瀏覽量
46781
原文標(biāo)題:SSD多盒實(shí)時(shí)目標(biāo)檢測(cè)教程
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
未檢測(cè)到目標(biāo)
迅為3399開(kāi)發(fā)板新增目標(biāo)檢測(cè)技術(shù)-RKSSD-編譯程序
基于EMD和盒維數(shù)的固定微弱目標(biāo)檢測(cè)
基于通道注意力機(jī)制的SSD目標(biāo)檢測(cè)算法
基于多尺度融合SSD的小目標(biāo)檢測(cè)算法綜述
基于SSD和深層神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)方法
多尺度卷積特征融合的SSD目標(biāo)檢測(cè)
基于Grad-CAM與KL損失的SSD目標(biāo)檢測(cè)算法
基于改進(jìn)SSD的車(chē)輛小目標(biāo)檢測(cè)方法

基于并行附加特征提取網(wǎng)絡(luò)的SSD地面小目標(biāo)檢測(cè)模型
基于SSD算法的小目標(biāo)檢測(cè)方法研究
目標(biāo)檢測(cè)與識(shí)別技術(shù)的關(guān)系是什么
目標(biāo)檢測(cè)與識(shí)別技術(shù)有哪些
ICY DOCK M.2轉(zhuǎn)U.2 SSD轉(zhuǎn)接盒如何重新定義M.2 NVMe SSD

評(píng)論