[譯]理解SSD MultiBox -- 基于深度學習的實時目標檢測

最近接觸SSD须眷,這篇入門文章不錯栅螟,故翻譯之憨栽。
原文鏈接:https://towardsdatascience.com/understanding-ssd-multibox-real-time-object-detection-in-deep-learning-495ef744fab

這篇文章的目的是給出SSD MultiBox目標檢測技術(shù)的直觀解釋。本文試圖用最少的數(shù)學理論玉凯,引導你理解這個框架奋蔚,其中包括解釋MultiBox算法她混。讀完本博文,希望您對SSD有更好的理解,并能夠自己嘗試應用它产上。
自從AlexNet在2012年的ImageNet大規(guī)模視覺識別挑戰(zhàn)賽(ILSVRC)大顯身手而風靡全球棵磷,深度學習已成為圖像識別任務的前沿方法,效果遠超傳統(tǒng)的計算機視覺方法晋涣。在計算機視覺領(lǐng)域,卷積神經(jīng)網(wǎng)絡在圖像分類方面表現(xiàn)出色沉桌。給定一組標簽化的數(shù)據(jù)集(比如狗谢鹊,貓),訓練好的網(wǎng)絡能預測給定圖片最有可能的類別留凭。


Images of cats and dogs (from kaggle)

如今佃扼,深度學習網(wǎng)絡在圖像分類領(lǐng)域已經(jīng)超越人類,顯示了這項技術(shù)的強大蔼夜。然而兼耀,人類做的更多,我們在觀察并與世界交互時求冷,不僅僅時對圖像分類瘤运,還定位并分類視野中的每一個元素。這是一項很復雜的任務匠题,機器在這方面目前還無法與人類匹敵拯坟。事實上,我認為當目標檢測技術(shù)實際效果很好時韭山,機器則更好地認知真實的場景郁季。


Does the image show cat, a dog, or do we have both? (from kaggle)

The Region-Convolutional Neural Network (R-CNN)

幾年前,研究人員探索CNNs帶給計算機視覺領(lǐng)域的飛躍钱磅,研究出R-CNN來處理目標檢測的任務梦裂,即定位和分類。一般而言盖淡,R-CNN是一種特殊類型的CNN年柠,它能夠定位并檢測圖像中的對象:網(wǎng)絡輸出通常是一組邊界框,他們與每個檢測到的對象邊緣很接近禁舷,以及每個檢測到對象的類別信息彪杉。下圖顯示了典型的R-CNN輸出結(jié)果:


Example output of R-CNN

R-CNN領(lǐng)域有一份詳盡的論文清單,希望深入理解的讀者可以從以下三部曲的論文開始:

正如你想的那樣牵咙,后續(xù)的每一篇的論文都提出了改進R-CNN的開創(chuàng)性工作派近,致力于開發(fā)更快的網(wǎng)絡,目的是實現(xiàn)實時目標檢測洁桌。上面顯示的一系列工作取得的成就是令人驚嘆的渴丸,但沒有一個能創(chuàng)建一個實時目標檢測器。略過細節(jié),上述網(wǎng)絡的以下問題被確定:

  • 數(shù)據(jù)訓練很笨重并過于耗時
  • 訓練分為多個階段(比如:訓練候選區(qū)域(region proposal) vs 分類器)
  • 網(wǎng)絡在推斷階段很慢

幸運的是谱轨,過去幾年中戒幔,出現(xiàn)了新的架構(gòu)可以解決R-CNN及其后續(xù)結(jié)構(gòu)的瓶頸,從而實現(xiàn)實時目標檢測土童。最著名是YOLO(You Only Look Once)和SSD MultiBox(Single Shot Detector)诗茎。本文討論SSD,一旦了解SSD的原理献汗,就更容易理解YOLO敢订。

Single Shot MultiBox Detector

關(guān)于SSD:論文《Single Shot MultiBox Detector》(由C. Szegedy等人撰寫)于2016年11月底發(fā)布,其在物體檢測任務的性能和精度方面達到了新記錄罢吃,在標準數(shù)據(jù)集(如PascalVOC和COCO)上每秒處理59幀楚午,得分超過74%(均值平均精度 )。為了更好地理解SSD尿招,我們首先解釋這個架構(gòu)的命名含義:

  • Single Shot:這表示定位目標和分類的任務是在網(wǎng)絡的一次前向傳遞中完成的
  • MultiBox:這是Szegedy等人開發(fā)的邊界框回歸技術(shù)的名稱矾柜。 (我們會簡要介紹一下)
  • Detector:網(wǎng)絡是一個對象探測器,它也對這些探測到的對象進行分類

架構(gòu)

Architecture of Single Shot MultiBox detector (input is 300x300x3)

如上圖所示就谜,SSD的架構(gòu)是建立在傳統(tǒng)的VGG-16結(jié)構(gòu)上怪蔑,但丟掉原來的全連接層。選用VGG-16結(jié)構(gòu)作為基礎(chǔ)網(wǎng)絡的原因是它的優(yōu)秀的圖像分類性能和適合用于遷移學習以提高精度的特性吁伺。 取代原來的VGG全連接層的是一組輔助卷積層(從conv6起)饮睬,這能夠以多個比例提取特征,并逐漸減小每個后續(xù)層的輸入大小篮奄。


VGG architecture (input is 224x224x3)

MultiBox

SSD的邊界框回歸技術(shù)是受Szegedy在MultiBox上的工作的啟發(fā)捆愁,是一種用于未知類別的邊框坐標建議方法。有趣地是窟却,在MultiBox的工作上昼丑,Inception-style的卷積網(wǎng)絡被使用。接下來看到的1x1卷積有助于降低維度(“channel“)夸赫,“高度”和“寬度”保持不變菩帝。


Architecture of multi-scale convolutional prediction of the location and confidences of multibox.png

SSD中MultiBox的損失函數(shù)也包括兩個關(guān)鍵的部分:

  • Confidence Loss:這部分衡量網(wǎng)絡對計算出的邊框為目標的信心程度。使用的分類交叉熵計算Loss
  • Location Loss:這個指標衡量網(wǎng)絡預測的邊界與訓練數(shù)據(jù)中真實的邊界的誤差茬腿,使用L2-Norm計算呼奢。
    如果數(shù)學上不深入研究的話(如果您對此有興趣并希望得到更嚴謹?shù)恼撟C方法,請閱讀論文)切平,最終握础,目標檢測的Loss的表達式為:
    multibox_loss = confidence_loss + alpha * location_loss
    變量alpha用于平衡定位部分的loss。如傳統(tǒng)的深度學習過程悴品,目標是找到使得損失函數(shù)盡可能低的參數(shù)值禀综,從而使我們的預測更接近實際情況简烘。

MultiBox Priors 和 Iou

圍繞邊框生成的邏輯實際上比我之前所說的復雜多了。但不用害怕:它仍屬于可以解決的范疇定枷。
在MultiBox中孤澎,研究人員引入了所謂的priors(或者叫anchors,在Faster R-CNN術(shù)語中)欠窒。priors是預先計算好的覆旭,固定大小的邊框,它們與真實的邊框分布很接近岖妄。
事實上姐扮,這些priors的挑選原則是兩者的交叉比例(又名IoU,有時也稱為Jaccard指數(shù))大于0.5衣吠。 正如你可以從下面的圖片中推斷出的,0.5的IoU仍然不夠好壤靶,但是它為邊界框回歸算法提供了一個強有力的起點 - 與采用隨機坐標的策略預測相比缚俏,這是一個好得多的方式! 因此贮乳,MultiBox從priors開始預測忧换,試圖接近真實邊界框。


Diagram explaining IoU (from Wikipedia).png

最終的架構(gòu)(回顧圖Architecture of multi-scale convolutional prediction of the location and confidences of multibox向拆,以供參考)包含每個feature map cell(8x8,6x6,4x4,3x3,2x2)的11個priors亚茬,并且在1x1特征映射上僅包含一個,從而每個圖像總共有1420個priors浓恳, 從而實現(xiàn)多尺度輸入圖像的穩(wěn)健覆蓋刹缝,以檢測各種尺寸的物體。
最后颈将,MultiBox只保留最小化定位(LOC)和置信度(CONF)損失的前K個預測梢夯。

SSD Improvements

回到SSD上,做了一些改動晴圾,使這個網(wǎng)絡更有能力對目標進行定位和分類颂砸。
Fixed Priors:與MultiBox不同,每個feature map cell都對應著一組不同尺寸和高寬比的默認邊界框死姚。 這些priors是基于人工規(guī)則精心選擇(計算)的人乓,而在MultiBox中,priors的選中規(guī)則是IoU對于ground true超過了0.5都毒。 理論上色罚,應該允許SSD適應任意的輸入,而不需要前面的預訓練的階段温鸽。 例如保屯,假設(shè)我們?yōu)槊總€feature map cell配置b個默認邊界框手负,包括2個對角相對點(x1,y1)和(x2姑尺,y2)竟终,并且要對c個類進行分類,則在給定的大小為f = m * n的feature map切蟋,SSD將計算f * b *(4 + c)個值统捶。


SSD default boxes at 8x8 and 4x4 feature maps

Location Loss: SSD使用平滑的L1-Norm來計算location loss。盡管不如L2-Norm那么精確柄粹,但仍然非常有效喘鸟,并為SSD提供了更多的操作空間,因為它不會嘗試在邊界框預測中實現(xiàn)“像素完美”(即幾個像素的差異幾乎不會被注意到 我們中許多人)驻右。
Classification: MultiBox不執(zhí)行對象分類什黑,而SSD則執(zhí)行對象分類。 因此堪夭,對于每個預測的邊界框愕把,針對數(shù)據(jù)集中的每個可能的類來計算一組c類預測。

Training & Running SSD

Datasets

您需要具有真實邊界框和分配的類標簽(每個邊界框指定一個類別)的訓練和測試數(shù)據(jù)集森爽。 Pascal VOC和COCO數(shù)據(jù)集是一個很好的起點恨豁。


Images from Pascal VOC dataset

Default Bounding Boxes

建議配置一組不同尺度和高寬比的默認邊界框,以確迸莱伲可以捕獲大部分物體橘蜜。 SSD論文中,每個feature map cell有大約6個邊界框付呕。

Feature Maps

feature map(即卷積層的結(jié)果)是圖像在不同尺度上的主要特征的表示计福,因此在多個特征圖上運行MultiBox能增加了任何目標(大和小)最終被檢測凡涩,定位與分類的概率棒搜。 下面的圖片展示了網(wǎng)絡如何“看到”feature map上的給定圖像:


VGG Feature Map Visualisation (from Brown Uni)

Hard Negative Mining

訓練過程中,大多數(shù)邊界框的IoU都較低活箕,會被認為是負樣本力麸,因此訓練集可能會出現(xiàn)樣本不均衡。因此育韩,建議不要使用所有負樣本克蚂,而要保持約3:1的負正樣本比例。 你需要保持負樣本的原因是因為網(wǎng)絡也需要學習和被明確告知什么是不正確的檢測筋讨。


Hard Negative Mining

Data Augmentation

SSD的作者指出埃叭,像許多其他深度學習程序一樣,數(shù)據(jù)增強對于網(wǎng)絡的泛化性能悉罕,即對于各種目標的輸入變得魯邦至關(guān)重要赤屋。 為此立镶,他們以不同的IoU比率(例如0.1,0.3,0.5等)和random patches生成具有原始圖像patches的額外訓練樣本。 此外类早,每個圖像也以0.5的概率隨機地水平翻轉(zhuǎn)媚媒,從而確保潛在目標以相似的可能性出現(xiàn)在左側(cè)和右側(cè)。


Data Augmentation

Non-Maximum Suppression (NMS)

考慮到inference階段SSD前向過程中生成大量boxes涩僻,通過非最大抑制技術(shù)修剪大部分邊界框是必要的:小于confidence loss 閾值ct(例如0.01 )和IoU小于lt(例如0.45)的boxes被丟棄缭召,并且只保留前N個預測。 這確保最可能的預測被保留逆日,而更多噪音的預測被刪除嵌巷。


NMS

Additional Notes On SSD

SSD的論文還作了以下的觀察:

  • 更多的default boxes會帶來更精確的檢測,但耗時增加
  • 由于detector以多種分辨率運行于特征上室抽,因此在多個圖層上使用MultiBox也會導致更好的檢測
  • 80%的時間花在基礎(chǔ)VGG-16網(wǎng)絡上:這意味著搪哪,使用更快,同樣精確的網(wǎng)絡坪圾,SSD的性能可能會更好
  • SSD將具有相似類別的對象(例如動物)混淆噩死。這可能是因為定位是基于多個類的
  • SSD-500(使用512x512輸入圖像的最高分辨率版本)在Pascal VOC2007上實現(xiàn)了最佳的mAP,達到了76.8%神年,但是速度降低到22 fps。因此SSD-300在59 fps下具有74.3 mAP更好的折衷行嗤。
  • SSD在較小的對象上產(chǎn)生較差的性能已日,因為它們可能不會出現(xiàn)在所有功能地圖中。增加輸入圖像分辨率緩解了這個問題栅屏,但并未完全解決這個問題

Playing With SSD

網(wǎng)上有一些現(xiàn)成的SSD實現(xiàn)飘千,包括輪文作者的原始Caffe代碼。 就我而言栈雳,我選擇了PaulBalan?a的TensorFlow實現(xiàn)护奈,可在github上獲得。為了更好地理解一切如何結(jié)合在一起哥纫,閱讀代碼以及論文是值得的霉旗。
我最近還決定通過使用SSD來重構(gòu)一個使用傳統(tǒng)計算機視覺技術(shù)的項目Vehicle Detection。我用SSD輸出的一個小Gif顯示它非常好用:

GIF of vehicle detection Using SSD

Beyond SSD

在這個領(lǐng)域蛀骇,最近更多的工作已經(jīng)產(chǎn)生散怖,我建議在下面的兩篇論文中對任何有興趣在這個領(lǐng)域進一步推動他們的知識的人進行跟進:
YOLO9000:更好吼驶,更快,更強(這是論文的標題;不是開玩笑)
Mask R-CNN:在像素級非常準確的instance segmentation
瞧! 我們完成了我們的Single Shot MultiBox Detector巡視翅雏。 我試圖用簡單的術(shù)語來解釋這一技術(shù)背后的概念,盡我所知县恕,用很多圖片來進一步說明這些概念并便于理解。 我真的推薦閱讀這篇論文(如果你像我一樣慢辟灰,可能會多次),包括在這項技術(shù)的一些數(shù)學背后形成良好的直覺篡石,以鞏固你的理解力芥喇。 如果其中的某些章節(jié)能夠幫助您理解論文,您可以隨時查看該博客夏志。一帆風順乃坤!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沟蔑,隨后出現(xiàn)的幾起案子湿诊,更是在濱河造成了極大的恐慌,老刑警劉巖瘦材,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厅须,死亡現(xiàn)場離奇詭異,居然都是意外死亡食棕,警方通過查閱死者的電腦和手機朗和,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來簿晓,“玉大人眶拉,你說我怎么就攤上這事°径” “怎么了忆植?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谒臼。 經(jīng)常有香客問我朝刊,道長,這世上最難降的妖魔是什么蜈缤? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任拾氓,我火速辦了婚禮,結(jié)果婚禮上底哥,老公的妹妹穿的比我還像新娘咙鞍。我一直安慰自己,他們只是感情好趾徽,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布奶陈。 她就那樣靜靜地躺著,像睡著了一般附较。 火紅的嫁衣襯著肌膚如雪吃粒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天拒课,我揣著相機與錄音徐勃,去河邊找鬼事示。 笑死,一個胖子當著我的面吹牛僻肖,可吹牛的內(nèi)容都是我干的肖爵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼臀脏,長吁一口氣:“原來是場噩夢啊……” “哼劝堪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起揉稚,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秒啦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后搀玖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體余境,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年灌诅,在試婚紗的時候發(fā)現(xiàn)自己被綠了芳来。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡猜拾,死狀恐怖即舌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挎袜,我是刑警寧澤侥涵,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宋雏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏务豺。R本人自食惡果不足惜磨总,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笼沥。 院中可真熱鬧蚪燕,春花似錦、人聲如沸奔浅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汹桦。三九已至鲁驶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舞骆,已是汗流浹背钥弯。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工径荔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脆霎。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓总处,卻偏偏與公主長得像,于是被迫代替她去往敵國和親睛蛛。 傳聞我的和親對象是個殘疾皇子鹦马,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容