基于深度学习的目标检测算法综述(一)
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法綜述(一)
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法綜述(二)
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法綜述(三)
本文內(nèi)容原創(chuàng),作者:美圖云視覺(jué)技術(shù)部 檢測(cè)團(tuán)隊(duì),轉(zhuǎn)載請(qǐng)注明出處
目標(biāo)檢測(cè)(Object Detection)是計(jì)算機(jī)視覺(jué)領(lǐng)域的基本任務(wù)之一,學(xué)術(shù)界已有將近二十年的研究歷史。近些年隨著深度學(xué)習(xí)技術(shù)的火熱發(fā)展,目標(biāo)檢測(cè)算法也從基于手工特征的傳統(tǒng)算法轉(zhuǎn)向了基于深度神經(jīng)網(wǎng)絡(luò)的檢測(cè)技術(shù)。從最初2013年提出的R-CNN、OverFeat,到后面的Fast/Faster R-CNN,SSD,YOLO系列,再到2018年最近的Pelee。短短不到五年時(shí)間,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)技術(shù),在網(wǎng)絡(luò)結(jié)構(gòu)上,從two stage到one stage,從bottom-up only到Top-Down,從single scale network到feature pyramid network,從面向PC端到面向手機(jī)端,都涌現(xiàn)出許多好的算法技術(shù),這些算法在開(kāi)放目標(biāo)檢測(cè)數(shù)據(jù)集上的檢測(cè)效果和性能都很出色。
本篇綜述的出發(fā)點(diǎn)一方面是希望給檢測(cè)方向的入門(mén)研究人員提供一個(gè)技術(shù)概覽,幫助大家快速了解目標(biāo)檢測(cè)技術(shù)上下文;另一方面是給工業(yè)界應(yīng)用人員提供一些參考,通過(guò)本篇綜述,讀者可以根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景,找到合適的目標(biāo)檢測(cè)方法,在此基礎(chǔ)上改進(jìn)、優(yōu)化甚至是進(jìn)一步創(chuàng)新,解決實(shí)際業(yè)務(wù)問(wèn)題。本文對(duì)其中的27篇論文進(jìn)行介紹,這27篇論文涵蓋了2013以來(lái),除SSD,YOLO和R-CNN系列之外的,所有引用率相對(duì)較高或是筆者認(rèn)為具有實(shí)際應(yīng)用價(jià)值的論文。R-CNN系列,SSD和YOLO相關(guān)的論文詳解資源已經(jīng)非常多,所以本文不再贅述。下圖對(duì)這些方法進(jìn)行了分類(lèi)概括。
下文中,我們針對(duì)每篇文章,從論文目標(biāo),即要解決的問(wèn)題,算法核心思想以及算法效果三個(gè)層面進(jìn)行概括。同時(shí),我們也給出了每篇論文的出處,錄用信息以及相關(guān)的開(kāi)源代碼鏈接,其中代碼鏈接以作者實(shí)現(xiàn)和mxnet實(shí)現(xiàn)為主。
一、 背景
物體檢測(cè)的任務(wù)是找出圖像或視頻中的感興趣物體,同時(shí)檢測(cè)出它們的位置和大小,是機(jī)器視覺(jué)領(lǐng)域的核心問(wèn)題之一。
物體檢測(cè)過(guò)程中有很多不確定因素,如圖像中物體數(shù)量不確定,物體有不同的外觀、形狀、姿態(tài),加之物體成像時(shí)會(huì)有光照、遮擋等因素的干擾,導(dǎo)致檢測(cè)算法有一定的難度。進(jìn)入深度學(xué)習(xí)時(shí)代以來(lái),物體檢測(cè)發(fā)展主要集中在兩個(gè)方向:two stage算法如R-CNN系列和one
stage算法如YOLO、SSD等。兩者的主要區(qū)別在于two stage算法需要先生成proposal(一個(gè)有可能包含待檢物體的預(yù)選框),然后進(jìn)行細(xì)粒度的物體檢測(cè)。而one stage算法會(huì)直接在網(wǎng)絡(luò)中提取特征來(lái)預(yù)測(cè)物體分類(lèi)和位置。
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法綜述分為三部分:
1. Two/One stage算法改進(jìn)。這部分將主要總結(jié)在two/one stage經(jīng)典網(wǎng)絡(luò)上改進(jìn)的系列論文,包括Faster R-CNN、YOLO、SSD等經(jīng)典論文的升級(jí)版本。
2. 解決方案。這部分我們歸納總結(jié)了目標(biāo)檢測(cè)的常見(jiàn)問(wèn)題和近期論文提出的解決方案。
3. 擴(kuò)展應(yīng)用、綜述。這部分我們會(huì)介紹檢測(cè)算法的擴(kuò)展和其他綜述類(lèi)論文。
本綜述分三部分,本文介紹第一部分。
二、創(chuàng)新內(nèi)容、改進(jìn)方向
1.Two/One stage算法改進(jìn)
1.1 Two stage
Faster R-CNN網(wǎng)絡(luò)包括兩個(gè)步驟:1. 使用RPN(region proposal network)提取proposal信息,2. 使用R-CNN對(duì)候選框位置進(jìn)行預(yù)測(cè)和物體類(lèi)別識(shí)別。本文主要介紹在Faster R-CNN基礎(chǔ)上改進(jìn)的幾篇論文:R-FCN、R-FCN3000和Mask R-CNN。R-FCN系列提出了Position Sensitive(ps)的概念,提升了檢測(cè)效果。另外需要注明的是,雖然Mask R-CNN主要應(yīng)用在分割上,但該論文和Faster R-CNN一脈相承,而且論文提出了RoI Align的思想,對(duì)物體檢測(cè)回歸框的精度提升有一定效果,故本篇綜述也介紹了這篇論文。
1.1.1 R-FCN: Object Detection via Region-based Fully Convolutional Networks
論文鏈接:https://arxiv.org/abs/1605.06409
開(kāi)源代碼:https://github.com/daijifeng001/R-FCN
錄用信息:CVPR2017
論文目標(biāo):
對(duì)預(yù)測(cè)特征圖引入位置敏感分?jǐn)?shù)圖提增強(qiáng)征位置信息,提高檢測(cè)精度。
核心思想:
一. 背景
Faster R-CNN是首個(gè)利用CNN來(lái)完成proposals的預(yù)測(cè)的,之后的很多目標(biāo)檢測(cè)網(wǎng)絡(luò)都是借助了Faster R-CNN的思想。而Faster R-CNN系列的網(wǎng)絡(luò)都可以分成2個(gè)部分:
1.Fully Convolutional subnetwork before RoI Layer
2.RoI-wise subnetwork
第1部分就是直接用普通分類(lèi)網(wǎng)絡(luò)的卷積層來(lái)提取共享特征,后接一個(gè)RoI Pooling Layer在第1部分的最后一張?zhí)卣鲌D上進(jìn)行提取針對(duì)各個(gè)RoIs的特征圖,最后將所有RoIs的特征圖都交由第2部分來(lái)處理(分類(lèi)和回歸)。第二部分通常由全連接層組層,最后接2個(gè)并行的loss函數(shù):Softmax和smoothL1,分別用來(lái)對(duì)每一個(gè)RoI進(jìn)行分類(lèi)和回歸。由此得到每個(gè)RoI的類(lèi)別和歸回結(jié)果。其中第1部分的基礎(chǔ)分類(lèi)網(wǎng)絡(luò)計(jì)算是所有RoIs共享的,只需要進(jìn)行一次前向計(jì)算即可得到所有RoIs所對(duì)應(yīng)的特征圖。
第2部分的RoI-wise subnetwork不是所有RoIs共享的,這一部分的作用就是給每個(gè)RoI進(jìn)行分類(lèi)和回歸。在模型進(jìn)行預(yù)測(cè)時(shí)基礎(chǔ)網(wǎng)絡(luò)不能有效感知位置信息,因?yàn)槌R?jiàn)的CNN結(jié)構(gòu)是根據(jù)分類(lèi)任務(wù)進(jìn)行設(shè)計(jì)的,并沒(méi)有針對(duì)性的保留圖片中物體的位置信息。而第2部分的全連階層更是一種對(duì)于位置信息非常不友好的網(wǎng)絡(luò)結(jié)構(gòu)。由于檢測(cè)任務(wù)中物體的位置信息是一個(gè)很重要的特征,R-FCN通過(guò)提出的位置敏感分?jǐn)?shù)圖(position sensitive score maps)來(lái)增強(qiáng)網(wǎng)絡(luò)對(duì)于位置信息的表達(dá)能力,提高檢測(cè)效果。
二. 網(wǎng)絡(luò)設(shè)計(jì)
2.1position-sensitive score map
上圖展示的是R-FCN的網(wǎng)絡(luò)結(jié)構(gòu)圖,展示了位置敏感得分圖(position-sensitive score map)的主要設(shè)計(jì)思想。如果一個(gè)RoI含有一個(gè)類(lèi)別c的物體,則將該RoI劃分為k x k個(gè)區(qū)域,分別表示該物體的各個(gè)相應(yīng)部位。其每個(gè)相應(yīng)的部位都由特定的特征圖對(duì)其進(jìn)行特征提取。R-FCN在共享卷積層的最后再接上一層卷積層,而該卷積層就是位置敏感得分圖position-sensitive score map。其通道數(shù)channels=k x k x (C+1)。C表示物體類(lèi)別種數(shù)再加上1個(gè)背景類(lèi)別,每個(gè)類(lèi)別都有k x k 個(gè)score maps分別對(duì)應(yīng)每個(gè)類(lèi)別的不同位置。每個(gè)通道分別負(fù)責(zé)某一類(lèi)的特定位置的特征提取工作。
2.2 Position-sensitive RoI pooling
位置敏感RoI池化操作了(Position-sensitive RoI pooling)如下圖所示:
該操作將每個(gè)RoIs分為k x k 個(gè)小塊。之后提取其不同位置的小塊相應(yīng)特征圖上的特征執(zhí)行池化操作,下圖展示了池化操作的計(jì)算方式。
得到池化后的特征后,每個(gè)RoIs的特征都包含每個(gè)類(lèi)別各個(gè)位置上的特征信息。對(duì)于每個(gè)單獨(dú)類(lèi)別來(lái)講,將不同位置的特征信息相加即可得到特征圖對(duì)于該類(lèi)別的響應(yīng),后面即可對(duì)該特征進(jìn)行相應(yīng)的分類(lèi)。
2.3 position-sensitive regression
在位置框回歸階段仿照分類(lèi)的思路,將特征通道數(shù)組合為4 x k x k 的形式,其中每個(gè)小塊的位置都對(duì)應(yīng)了相應(yīng)的通道對(duì)其進(jìn)行位置回歸的特征提取。最后將不同小塊位置的四個(gè)回歸值融合之后即可得到位置回歸的響應(yīng),進(jìn)行后續(xù)的位置回歸工作。
三. 網(wǎng)絡(luò)訓(xùn)練
3.1 position-sensitive score map高響應(yīng)值區(qū)域
在訓(xùn)練的過(guò)程中,當(dāng)RoIs包涵物體屬于某類(lèi)別時(shí),損失函數(shù)即會(huì)使得該RoIs不同區(qū)域塊所對(duì)應(yīng)的響應(yīng)通道相應(yīng)位置的特征響應(yīng)盡可能的大,下圖展示了這一過(guò)程,可以明顯的看出不同位置的特征圖都只對(duì)目標(biāo)相應(yīng)位置的區(qū)域有明顯的響應(yīng),其特征提取能力是對(duì)位置敏感的。
3.2 訓(xùn)練和測(cè)試過(guò)程
使用如上的損失函數(shù),對(duì)于任意一個(gè)RoI,計(jì)算它的Softmax損失,和當(dāng)其不屬于背景時(shí)的回歸損失。因?yàn)槊總€(gè)RoI都被指定屬于某一個(gè)GT box或者屬于背景,即先讓GT box選擇與其IoU最大的那個(gè)RoI,再對(duì)剩余RoI選擇與GT box的IoU>0.5的進(jìn)行匹配,而剩下的RoI全部為背景類(lèi)別。當(dāng)RoI有了label后loss就可以計(jì)算出來(lái)。這里唯一不同的就是為了減少計(jì)算量,作者將所有RoIs的loss值都計(jì)算出來(lái)后,對(duì)其進(jìn)行排序,并只對(duì)最大的128個(gè)損失值對(duì)應(yīng)的RoIs進(jìn)行反向傳播操作,其它的則忽略。并且訓(xùn)練策略也是采用的Faster R-CNN中的4-step alternating training進(jìn)行訓(xùn)練。在測(cè)試的時(shí)候,為了減少RoIs的數(shù)量,作者在RPN提取階段就將RPN提取的大約2W個(gè)proposals進(jìn)行過(guò)濾:
1.去除超過(guò)圖像邊界的proposals
2.使用基于類(lèi)別概率且閾值IoU=0.3的NMS過(guò)濾
3.按照類(lèi)別概率選擇top-N個(gè)proposals
在測(cè)試的時(shí)候,一般只剩下300個(gè)RoIs。并且在R-FCN的輸出300個(gè)預(yù)測(cè)框之后,仍然要對(duì)其使用NMS去除冗余的預(yù)測(cè)框。
算法效果:
上圖比較了Faster-R-CNN 和R-FCN的mAP值和監(jiān)測(cè)速度,采用的基礎(chǔ)網(wǎng)絡(luò)為ResNet-101,測(cè)評(píng)顯卡為T(mén)esla K40。
1.1.2 R-FCN-3000 at 30fps: Decoupling Detection and Classification
論文鏈接:https://arxiv.org/pdf/1712.01802.pdf
開(kāi)源代碼:無(wú)
錄用信息:無(wú)
論文目標(biāo):
與YOLO9000(本論述后文會(huì)具體介紹YOLO9000)類(lèi)似,本文的目標(biāo)也是面向?qū)嶋H應(yīng)用場(chǎng)景的大規(guī)模類(lèi)別物體的實(shí)時(shí)檢測(cè)。YOLO9000將檢測(cè)數(shù)據(jù)集和分類(lèi)數(shù)據(jù)集合并訓(xùn)練檢測(cè)模型,但r-fcn-3000僅采用具有輔助候選框信息的ImageNet數(shù)據(jù)集訓(xùn)練檢測(cè)分類(lèi)器。
如果使用包含標(biāo)注輔助信息(候選框)的大規(guī)模分類(lèi)數(shù)據(jù)集,如ImageNet數(shù)據(jù)集,進(jìn)行物體檢測(cè)模型訓(xùn)練,然后將其應(yīng)用于實(shí)際場(chǎng)景時(shí),檢測(cè)效果會(huì)是怎樣呢?how would an object detector perform on "detection"datasets if it were trained on classification datasets with bounding-box supervision?
核心思想:
r-fcn-3000是對(duì)r-fcn的改進(jìn)。上文提到,r-fcn的ps卷積核是per class的,假設(shè)有C個(gè)物體類(lèi)別,有K*K個(gè)ps核,那么ps卷積層輸出K*K*C個(gè)通道,導(dǎo)致檢測(cè)的運(yùn)算復(fù)雜度很高,尤其當(dāng)要檢測(cè)的目標(biāo)物體類(lèi)別數(shù)較大時(shí),檢測(cè)速度會(huì)很慢,難以滿(mǎn)足實(shí)際應(yīng)用需求。
為解決以上速度問(wèn)題,r-fcn-3000提出,將ps卷積核作用在超類(lèi)上,每個(gè)超類(lèi)包含多個(gè)物體類(lèi)別,假設(shè)超類(lèi)個(gè)數(shù)為SC,那么ps卷積層輸出K*K*SC個(gè)通道。由于SC遠(yuǎn)遠(yuǎn)小于C,因此可大大降低運(yùn)算復(fù)雜度。特別地,論文提出,當(dāng)只使用一個(gè)超類(lèi)時(shí),檢測(cè)效果依然不錯(cuò)。算法網(wǎng)絡(luò)結(jié)構(gòu)如下:
上圖可以看出,與r-fcn類(lèi)似,r-fcn-3000也使用RPN網(wǎng)絡(luò)生成候選框(上圖中虛線(xiàn)回路);相比r-fcn, r-fcn-3000的網(wǎng)絡(luò)結(jié)構(gòu)做了如下改進(jìn):
1. r-fcn-3000包含超類(lèi)(上圖中上半部分)和具體類(lèi)(上圖中下半部分)兩個(gè)卷積分支。
2. 超類(lèi)卷積分支用于檢測(cè)超類(lèi)物體,包含分類(lèi)(超類(lèi)檢測(cè))和回歸(候選框位置改進(jìn))兩個(gè)子分支;注意上圖中沒(méi)有畫(huà)出用于候選框位置改進(jìn)的bounding-box回歸子分支;回歸分支是類(lèi)別無(wú)關(guān)的,即只確定是否是物體。
3. 具體類(lèi)卷積分支用于分類(lèi)物體的具體類(lèi)別概率,包含兩個(gè)普通CNN卷積層。
4. 最終的物體檢測(cè)輸出概率由超類(lèi)卷積分支得到的超類(lèi)類(lèi)概率分別乘以具體類(lèi)卷積分支輸出的具體類(lèi)別概率得到。引入超類(lèi)和具體類(lèi)兩個(gè)卷積分支實(shí)現(xiàn)了‘物體檢測(cè)’和‘物體分類(lèi)’的解耦合。超類(lèi)卷積分支使得網(wǎng)絡(luò)可以檢測(cè)出物體是否存在,由于使用了超類(lèi),而不是真實(shí)物體類(lèi)別,大大降低了運(yùn)算操作數(shù)。保證了檢測(cè)速度;具體類(lèi)分支不檢測(cè)物體位置,只分類(lèi)具體物體類(lèi)別。
超類(lèi)生成方式:對(duì)某個(gè)類(lèi)別j的所有樣本圖像,提取ResNet-101最后一層2018維特征向量,對(duì)所有特征項(xiàng)向量求均值,作為該類(lèi)別的特征表示。得到所有類(lèi)別的特征表示進(jìn)行K-means聚類(lèi),確定超類(lèi)。
算法效果:
在imagenet數(shù)據(jù)集上,檢測(cè)mAP值達(dá)到了34.9%。使用nvidia p6000 GPU,對(duì)于375x500圖像,檢測(cè)速度可以達(dá)到每秒30張。在這種速度下,r-fcn-3000號(hào)稱(chēng)它的檢測(cè)準(zhǔn)確率高于YOLO 18%。
此外,論文實(shí)驗(yàn)表明,r-fcn-3000進(jìn)行物體檢測(cè)時(shí)具有較強(qiáng)的通用性,當(dāng)使用足夠多的類(lèi)別進(jìn)行訓(xùn)練時(shí),對(duì)未知類(lèi)別的物體檢測(cè)時(shí),仍能檢測(cè)出該物體位置。如下圖:
在訓(xùn)練類(lèi)別將近3000時(shí),不使用目標(biāo)物體進(jìn)行訓(xùn)練達(dá)到的通用預(yù)測(cè)mAP為30.7%,只比使用目標(biāo)物體進(jìn)行訓(xùn)練達(dá)到的mAP值低0.3%。
1.1.3 Mask R-CNN
論文鏈接:https://arxiv.org/abs/1703.06870
開(kāi)源代碼:https://github.com/TuSimple/mx-maskrcnn
錄用信息:CVPR2017
論文目標(biāo)
1. 解決RoIPooling在Pooling過(guò)程中對(duì)RoI區(qū)域產(chǎn)生形變,且位置信息提取不精確的問(wèn)題。
2. 通過(guò)改進(jìn)Faster R-CNN結(jié)構(gòu)完成分割任務(wù)。
核心思想:
1. 使用RoIAlign代替RoIPooling,得到更好的定位效果。
2. 在Faster R-CNN基礎(chǔ)上加上mask分支,增加相應(yīng)loss,完成像素級(jí)分割任務(wù)。
一、概述
Mask R-CNN是基于Faster R-CNN的基礎(chǔ)上演進(jìn)改良而來(lái),不同于Faster R-CNN,Mask R-CNN可以精確到像素級(jí)輸出,完成分割任務(wù)。此外他們的輸出也有所不同。Faster R-CNN輸出為種類(lèi)標(biāo)簽和box坐標(biāo),而Mask R-CNN則會(huì)增加一個(gè)輸出,即物體掩膜(object mask)。
二、網(wǎng)絡(luò)結(jié)構(gòu)介紹
Mask R-CNN結(jié)構(gòu)如下圖:
Mask R-CNN采用和Faster R-CNN相同的兩個(gè)階段,具有相同的第一層(即RPN),第二階段,除了預(yù)測(cè)種類(lèi)和bbox回歸,并且并行的對(duì)每個(gè)RoI預(yù)測(cè)了對(duì)應(yīng)的二值掩膜(binary mask)。
三、Mask R-CNN詳細(xì)改進(jìn)
1. RoIAlign
Faster R-CNN采用的RoIPooling,這樣的操作可能導(dǎo)致feature map在原圖的對(duì)應(yīng)位置與真實(shí)位置有所偏差。如下圖:
而通過(guò)引入RoIAlign很大程度上解決了僅通過(guò) Pooling 直接采樣帶來(lái)的 Misalignment 對(duì)齊問(wèn)題。
RoIPooling
RoIAlign
RoIPooling會(huì)對(duì)區(qū)域進(jìn)行拉伸,導(dǎo)致區(qū)域形變。RoIAlign可以避免形變問(wèn)題。具體方式是先通過(guò)雙線(xiàn)性插值到14 x 14,其次進(jìn)行雙線(xiàn)性插值得到藍(lán)點(diǎn)的值,最后再通過(guò)max Pooling或average pool到7 x 7。
2.多任務(wù)損失函數(shù)
Mask R-CNN的損失函數(shù)可表示為:
其中?和??與Faster R-CNN中的相似,所以我們具體看??損失函數(shù)。
掩膜分支針對(duì)每個(gè)RoI產(chǎn)生一個(gè)K x M xM的輸出,即K個(gè)M x M的二值的掩膜輸出。其中K為分類(lèi)物體的類(lèi)別數(shù)目。依據(jù)預(yù)測(cè)類(lèi)別輸出,只輸出該類(lèi)對(duì)應(yīng)的二值掩膜,掩膜分支的損失計(jì)算如下示意圖:
1. mask branch 預(yù)測(cè)K個(gè)種類(lèi)的M x M二值掩膜輸出。
2. 依據(jù)種類(lèi)預(yù)測(cè)分支(Faster R-CNN部分)預(yù)測(cè)結(jié)果:當(dāng)前RoI的物體種類(lèi)為i。
3.RoI的平均二值交叉損失熵(對(duì)每個(gè)像素點(diǎn)應(yīng)用Sigmoid函數(shù))即為損失??。
此外作者發(fā)現(xiàn)使用Sigmoid優(yōu)于Softmax ,Sigmoid可以避免類(lèi)間競(jìng)爭(zhēng)。
算法效果:
體現(xiàn)了在COCO數(shù)據(jù)集上的表現(xiàn)效果。
1.2 One stage
提到one stage算法就必須提到OverFeat,OverFeat網(wǎng)絡(luò)將分類(lèi)、定位、檢測(cè)功能融合在一個(gè)網(wǎng)絡(luò)之中。隨后的YOLO和SSD網(wǎng)絡(luò),都是很經(jīng)典的one stage檢測(cè)算法。
YOLO論文作者對(duì)原始YOLO網(wǎng)絡(luò)進(jìn)行了改進(jìn),提出了YOLO9000和YOLOv3。YOLO9000號(hào)稱(chēng)可以做到更好,更快,更強(qiáng)。其創(chuàng)新點(diǎn)還包括用小規(guī)模(指類(lèi)別)檢測(cè)標(biāo)注數(shù)據(jù)集 + 大規(guī)模分類(lèi)標(biāo)注數(shù)據(jù)集訓(xùn)練通用物體檢測(cè)模型。YOLOv3是作者的一個(gè)technical report,主要的工作展示作者在YOLO9000上的改進(jìn)。另外本綜述還將介紹新論文Object detection at 200 Frames Per Second,這篇論文在YOLO的基礎(chǔ)上進(jìn)行創(chuàng)新,能在不犧牲太多準(zhǔn)確率的情況下達(dá)到200FPS(使用GTX1080)。
SSD算法是一種直接預(yù)測(cè)bounding box的坐標(biāo)和類(lèi)別的object detection算法,利用不同分辨率卷積層的feature map,可以針對(duì)不同scale的物體進(jìn)行檢測(cè)。本篇綜述中主要介紹DSSD(原始作者的改進(jìn)版本)和DSOD這兩篇論文。
1.2.1 YOLO9000: better, faster, stronger
論文鏈接:https://arxiv.org/pdf/1612.08242.pdf
開(kāi)源代碼:https://github.com/pjreddie/darknet
https://github.com/zhreshold/mxnet-YOLO?MXNet實(shí)現(xiàn)
錄用信息:CVPR2017
論文目標(biāo):
論文目標(biāo)是要解決包含大規(guī)模物體類(lèi)別的實(shí)際應(yīng)用場(chǎng)景中的實(shí)時(shí)目標(biāo)檢測(cè)。實(shí)際應(yīng)用場(chǎng)景中,目標(biāo)檢測(cè)應(yīng)滿(mǎn)足兩個(gè)條件:1. 檢測(cè)速度滿(mǎn)足實(shí)際場(chǎng)景需求 2. 覆蓋物體類(lèi)別滿(mǎn)足實(shí)際場(chǎng)景需求。實(shí)際場(chǎng)景包含很多類(lèi)別的物體,而這些類(lèi)別物體的標(biāo)注數(shù)據(jù)很難拿到,本論文提出使用小規(guī)模(指類(lèi)別)檢測(cè)標(biāo)注數(shù)據(jù)集 + 大規(guī)模分類(lèi)標(biāo)注數(shù)據(jù)集訓(xùn)練通用物體檢測(cè)模型。
核心思想:
YOLO9000是在YOLO基礎(chǔ)上的改進(jìn),相比YOLO,YOLO9000號(hào)稱(chēng)可以做到更好,更快,更強(qiáng)。下面從這三個(gè)方面介紹YOLO9000如何做到這三點(diǎn)。YOLO相關(guān)的論文解讀可以參考:YOLO詳解 - 知乎
一、更好
準(zhǔn)確率提升。相比R-CNN系列,YOLOv1的召回率和物體位置檢測(cè)率較低,YOLO9000做了如下七點(diǎn)改進(jìn)對(duì)其進(jìn)行提升。
1.加入BN層。在所有的卷積層后加入BN操作,去掉所有dropout層。
2.使用高分辨率訓(xùn)練得到的分類(lèi)模型pretrain檢測(cè)網(wǎng)絡(luò)。YOLOv1使用224x224訓(xùn)練得到的分類(lèi)模型pretrain,而YOLO9000直接使用448x448訓(xùn)練得到的分類(lèi)模型pretrain檢測(cè)網(wǎng)絡(luò)。
3.使用卷積層預(yù)測(cè)anchor box位置。YOLOv1基于輸入圖像的物理空間劃分成7x7的網(wǎng)格空間,每個(gè)網(wǎng)格最多對(duì)應(yīng)兩個(gè)候選預(yù)測(cè)框,因此每張圖像最多有98個(gè)bounding box,最后接入全連接層預(yù)測(cè)物體框位置。而YOLO9000移除全連接層,使用anchor box預(yù)測(cè)候選框位置,大大增加了每張圖片的候選框個(gè)數(shù)。這個(gè)改進(jìn)將召回率由81%提高到88%,mAP由69.5%稍微降低到69.2%。同時(shí),由于去掉了全連接層,YOLO9000可以支持檢測(cè)時(shí)不同分辨率的圖像輸入。
4.kmeans聚類(lèi)確定候選框形狀。使用k-means對(duì)訓(xùn)練數(shù)據(jù)集中的物體框的分辨率和比例進(jìn)行聚類(lèi),確定anchor box的形狀。為避免物體大小引起的統(tǒng)計(jì)誤差,YOLO9000使用IoU而不是歐氏距離來(lái)作為距離度量方式。
5.預(yù)測(cè)‘候選框相對(duì)于圖像的內(nèi)部偏移’。以往RPN網(wǎng)絡(luò),通過(guò)回歸候選框相對(duì)于當(dāng)前anchor box的偏移來(lái)定位候選框的位置,由于偏移相對(duì)于anchor box外部,所以取值范圍是不受限的,導(dǎo)致訓(xùn)練的時(shí)候難以收斂。因此YOLO9000采用與YOLO類(lèi)似的方式,預(yù)測(cè)候選框相對(duì)于圖像左上角的位置偏移,并將偏移量歸一化到0-1區(qū)間,解決了訓(xùn)練難收斂問(wèn)題。
6.使用更精細(xì)的特征。YOLOv1提取13x13的特征層進(jìn)行后續(xù)物體檢測(cè),對(duì)于小物體的檢測(cè)效果并不友好。為解決這個(gè)問(wèn)題,YOLO9000將前一層26x26的特征與13x13層的特征進(jìn)行通道concatenation。如26x26x512的feature map被拆分成13x13x2048,然后同后面的13x13特征層進(jìn)行concatenation。mAP提升1%。
7.多尺度圖像訓(xùn)練。YOLO9000采用不同分辨率的圖像進(jìn)行模型迭代訓(xùn)練,增強(qiáng)模型對(duì)多尺度圖像的預(yù)測(cè)魯棒性。
二、更快
YOLOv1的basenet基于GoogleNet改進(jìn)得到,計(jì)算復(fù)雜度大概是VGG16的1/4,但在imagenet上224x224圖像的top-5分類(lèi)準(zhǔn)確率比vgg16低2%。YOLO9000提出一個(gè)全新的basenet,號(hào)稱(chēng)darknet-19,包含19個(gè)卷積層和5個(gè)max pooling層,詳細(xì)網(wǎng)絡(luò)結(jié)構(gòu)見(jiàn)論文,計(jì)算復(fù)雜度比YOLOv1進(jìn)一步減少了34%,imagenet上top-5準(zhǔn)確率提升了3.2%。
三、更強(qiáng)
更強(qiáng)是指,在滿(mǎn)足實(shí)時(shí)性需求的前提下,能檢測(cè)出的物體類(lèi)別數(shù)更多,范圍更大。YOLO9000提出使用詞樹(shù)’wordtree’,將分類(lèi)數(shù)據(jù)集和檢測(cè)數(shù)據(jù)集合并,進(jìn)行模型訓(xùn)練。反向傳播時(shí),檢測(cè)樣本的訓(xùn)練loss用于計(jì)算和更新整個(gè)網(wǎng)絡(luò)的模型參數(shù);而分類(lèi)樣本的訓(xùn)練loss僅用于更新與分類(lèi)相關(guān)的網(wǎng)絡(luò)層模型參數(shù)。這樣以來(lái),檢測(cè)數(shù)據(jù)集訓(xùn)練網(wǎng)絡(luò)學(xué)到如何檢測(cè)出物體(是否是物體,位置),而分類(lèi)數(shù)據(jù)集使得網(wǎng)絡(luò)識(shí)別出物體類(lèi)別。
算法效果:
下圖給出了YOLOv2和對(duì)比算法的準(zhǔn)確率和運(yùn)行時(shí)間的綜合性能結(jié)果??梢钥闯鯵OLOv2在保證準(zhǔn)確率的同時(shí),可以達(dá)到超過(guò)30fps的圖像檢測(cè)速度。相比SSD512和Faster R-CNN(使用ResNet),YOLOv2在準(zhǔn)確率和運(yùn)行性能上都更勝一籌(圖中左邊第一個(gè)藍(lán)圈)。
1.2.2 YOLOv3: an incremental improvement
論文鏈接:https://arxiv.org/abs/1804.02767
開(kāi)源代碼:https://github.com/pjreddie/darknet
錄用信息:無(wú)。原文是4頁(yè)technical report,2018年4月在arxiv放出。
論文目標(biāo):
保證準(zhǔn)確率同時(shí),更快。
核心思想:
YOLOv3對(duì)YOLO9000進(jìn)行了改進(jìn),v3采用的模型比YOLO9000更大,進(jìn)一步提高檢測(cè)準(zhǔn)確率,但速度比YOLO9000稍慢。相比其他檢測(cè)算法,RetinaNet,SSD,DSSD等算法,YOLOv3的綜合性能(準(zhǔn)確率&速度)仍然很是最好的。但總的來(lái)說(shuō),文章的改進(jìn)主要還是修修補(bǔ)補(bǔ),換換網(wǎng)絡(luò),沒(méi)有特別的突出創(chuàng)新點(diǎn)。具體改進(jìn)如下:
1. 候選框預(yù)測(cè)時(shí)增加‘物體性’的預(yù)測(cè),即增加對(duì)候選框 是否包含物體 的判斷。這條改進(jìn)借鑒Faster R-CNN的做法。區(qū)別在于,Faster R-CNN一個(gè)ground truth框可能對(duì)應(yīng)多個(gè)檢測(cè)候選框,而YOLO9000每個(gè)ground truth object最多對(duì)應(yīng)到一個(gè)檢測(cè)候選框。那么這會(huì)使得很多候選框?qū)?yīng)不到ground truth box,這種候選框在訓(xùn)練時(shí)不會(huì)計(jì)算坐標(biāo)或分類(lèi)誤差,而只會(huì)加入對(duì)‘物體性’的檢測(cè)誤差。
2. 多標(biāo)簽分類(lèi)。每個(gè)候選框可以預(yù)測(cè)多個(gè)分類(lèi),使用邏輯歸二分類(lèi)器進(jìn)行分類(lèi)。
3. 多尺度預(yù)測(cè)。借鑒FPN思想,在3個(gè)尺度上進(jìn)行預(yù)測(cè),每個(gè)尺度對(duì)應(yīng)3個(gè)候選框,每個(gè)候選框輸出’位置偏移‘,是否包含物體以及分類(lèi)結(jié)果。YOLOv3對(duì)小物體的檢測(cè)效果比YOLO9000有提升,但是對(duì)中大物體的檢測(cè)準(zhǔn)確率卻有降低。文章沒(méi)給出具體原因。
4. 提出新的basenet。YOLOv3采用一個(gè)53層卷積的網(wǎng)絡(luò)結(jié)構(gòu),號(hào)稱(chēng)darknet-53,網(wǎng)絡(luò)設(shè)計(jì)只采用3x3,1x1的卷積層,借鑒了ResNet的殘差網(wǎng)絡(luò)思想。該basenet在ImageNet上對(duì)256x256的Top-5分類(lèi)準(zhǔn)確率為93.5,與ResNet-152相同,Top-1準(zhǔn)確率為77.2%,只比ResNet-152低0.4%。與此同時(shí),darknet-53的計(jì)算復(fù)雜度僅為ResNet-152的75%, 實(shí)際檢測(cè)速度(FPS)是ResNet-152的2倍。
5. 除以上改進(jìn)外,YOLOv3還做了一些其他嘗試,但效果都不理想。具體見(jiàn)論文,此處不列出。
算法效果:
對(duì)320x320的輸入圖像,YOLOv3在保證檢測(cè)準(zhǔn)確率與SSD一致(mAP=28.2)的前提下,處理每張圖像的時(shí)間為22ms,比SSD快3倍。
值得注意的是,論文提出的darknet-53,是一個(gè)比ResNet152綜合性能更好的分類(lèi)網(wǎng)絡(luò)。
1.2.3 Object detection at 200 Frames Per Second
論文鏈接:https://arxiv.org/abs/1805.06361
開(kāi)源代碼:無(wú)
錄用信息:無(wú)
論文目標(biāo):
為了解決檢測(cè)算法計(jì)算復(fù)雜度過(guò)高、內(nèi)存占用過(guò)大的問(wèn)題,本文提出了一種快而有效的方法,能夠在保持高檢測(cè)率的同時(shí),達(dá)到每秒200幀的檢測(cè)速度。
核心思想:
為了實(shí)現(xiàn)又快又強(qiáng)的檢測(cè)目標(biāo),本文從三個(gè)方面提出了創(chuàng)新:網(wǎng)絡(luò)結(jié)構(gòu)、損失函數(shù)以及訓(xùn)練數(shù)據(jù)。在網(wǎng)絡(luò)結(jié)構(gòu)中,作者選擇了一種深而窄的網(wǎng)絡(luò)結(jié)構(gòu),并探討了不同特征融合方式帶來(lái)的影響。在損失函數(shù)設(shè)計(jì)中,作者提出了蒸餾損失函數(shù)以及FM-NMS方法以適應(yīng)one-stage算法的改進(jìn)。最后,作者在訓(xùn)練時(shí)同時(shí)使用了已標(biāo)注數(shù)據(jù)和未標(biāo)注數(shù)據(jù)。下面具體介紹下本文在這三方面的創(chuàng)新工作。
一、網(wǎng)絡(luò)結(jié)構(gòu)
一般來(lái)說(shuō),網(wǎng)絡(luò)越深越寬,效果也會(huì)越好,但同時(shí)計(jì)算量和參數(shù)量也會(huì)隨之增加。為了平衡算法的效果與速度,作者采用了一個(gè)深而窄的網(wǎng)絡(luò)結(jié)構(gòu)。示意圖如下:
說(shuō)明一下,本文的baseline算法是Tiny-Yolo(Yolo 9000的加速版)。
為了實(shí)現(xiàn)更窄,作者將卷積的通道數(shù)做了縮減,從Yolo算法的1024縮減為了512;為了實(shí)現(xiàn)更寬,作者在最后添加了3個(gè)1*1的卷積層。為了加深理解,建議讀者結(jié)合Yolo的網(wǎng)絡(luò)結(jié)構(gòu)圖,對(duì)比查看。
從上圖中,我們還可以看出,作者采用了特征融合的方式,將前幾層提取的特征融合到了后面層的特征圖中。在融合的過(guò)程中,作者并沒(méi)有采取對(duì)大尺寸特征圖做max pooling然后與小尺寸特征圖做融合的方式,而是采用了stacking方法,即先將大尺寸特征圖進(jìn)行resize然后再和小尺寸特征圖做融合。具體到上圖中,對(duì)104*104*64的特征圖用卷積核數(shù)量為4,大小為1*1的卷積層進(jìn)行壓縮,得到104*104*4的特征圖,然后做resize得到13*13*256的輸出。
二、損失函數(shù)
蒸餾算法是模型壓縮領(lǐng)域的一個(gè)分支。簡(jiǎn)單來(lái)說(shuō),蒸餾算法是用一個(gè)復(fù)雜網(wǎng)絡(luò)(teacher network)學(xué)到的東西去輔助訓(xùn)練一個(gè)簡(jiǎn)單網(wǎng)絡(luò)(student network)。但直接將蒸餾算法應(yīng)用于one stage的Yolo算法還存在著一些困難。
困難1:對(duì)于two stage算法,在第一階段就會(huì)去除很多背景RoI,送入檢測(cè)網(wǎng)絡(luò)的RoI相對(duì)較少,并且大部分包含object;而one stage 算法,輸出中包含大量背景RoI。如果直接對(duì)輸出進(jìn)行學(xué)習(xí),會(huì)導(dǎo)致網(wǎng)絡(luò)過(guò)于關(guān)注背景,而忽視了前景。
鑒于此,本文作者提出objectness scaled distillation,主要考慮了teacher network中輸出的objectness對(duì)損失函數(shù)的影響。作者認(rèn)為只有objectness比較大的才應(yīng)該對(duì)損失函數(shù)有貢獻(xiàn)。
為了更好地理解作者的思路,我們先回顧一下Yolo算法的損失函數(shù),如下所示:
其中??,??,??分別代表student network預(yù)測(cè)的objectness、class probability以及bbox坐標(biāo),??,??,??則代表了真實(shí)值。
作者提出的蒸餾損失函數(shù)如下:
困難2:對(duì)于檢測(cè)算法來(lái)說(shuō),如果不做NMS,直接將teacher network的預(yù)測(cè)RoI輸出給student network,會(huì)因?yàn)槟承゜ox有很多的相關(guān)預(yù)測(cè)RoI而導(dǎo)致這些box容易過(guò)擬合。
鑒于此,本文作者提出FM-NMS。取3*3區(qū)域內(nèi)的相鄰grid cell,對(duì)這9個(gè)grid cell中預(yù)測(cè)相同類(lèi)別的bbox按照objectness 進(jìn)行排序,只選擇得分最高的那個(gè)bbox傳給student network。2個(gè)grid cell做FM-NMS的示意圖如下:
三、訓(xùn)練數(shù)據(jù)
鑒于作者使用了蒸餾算法,在訓(xùn)練時(shí),可以非常方便地使用已標(biāo)注數(shù)據(jù)和未標(biāo)注數(shù)據(jù)。如果有標(biāo)注數(shù)據(jù),就使用完整的蒸餾損失函數(shù)。如果沒(méi)有標(biāo)注數(shù)據(jù),就只使用蒸餾損失函數(shù)的distillation loss部分。
算法效果:
1.2.4 DSSD: Deconvolutional Single Shot Detector
論文鏈接:https://arxiv.org/pdf/1701.06659.pdf
開(kāi)源代碼:https://github.com/MTCloudVision/mxnet-DSSD?綜述筆者實(shí)現(xiàn)版本
錄用信息:未被會(huì)議收錄
論文目標(biāo):
大小物體通吃。使用Top-Down網(wǎng)絡(luò)結(jié)構(gòu),解決小物體檢測(cè)的問(wèn)題。
DSSD論文的詳細(xì)解讀可以參見(jiàn)DSSD:Deconvolutional Single Shot Detector 解析與實(shí)踐 - 知乎。
DSSD與FPN類(lèi)似,都是基于Top-Down結(jié)構(gòu)解決小物體檢測(cè),不同的是,如FPN的網(wǎng)絡(luò)結(jié)構(gòu)只是針對(duì)ResNet做了優(yōu)化,文章中也沒(méi)有提及過(guò)更換其他的基礎(chǔ)網(wǎng)絡(luò)的實(shí)驗(yàn)結(jié)果,普適度不夠。DSSD作者提出一種通用的Top-Down的融合方法,使用vgg和ResNet網(wǎng)絡(luò)將高層的語(yǔ)義信息融入到低層網(wǎng)絡(luò)的特征信息中,豐富預(yù)測(cè)回歸位置框和分類(lèi)任務(wù)輸入的多尺度特征圖,以此來(lái)提高檢測(cè)精度。
筆者認(rèn)為,雖然Top-Down結(jié)構(gòu)也許有效,但畢竟DSSD比FPN放出時(shí)間更晚一些,且在網(wǎng)絡(luò)結(jié)構(gòu)上這并沒(méi)有太大創(chuàng)新,也許這就是本文未被會(huì)議收錄的原因之一。
核心思想:
DSSD是基于SSD的改進(jìn),引入了Top-Down結(jié)構(gòu)。下文分別從這兩方面出發(fā),介紹DSSD思想。
一、DSSD之于SSD
DSSD相對(duì)于 SSD算法的改進(jìn)點(diǎn),總結(jié)如下:
1.提出基于Top-Down的網(wǎng)絡(luò)結(jié)構(gòu),用反卷積代替?zhèn)鹘y(tǒng)的雙線(xiàn)性插值上采樣。
2.在預(yù)測(cè)階段引入殘差單元,優(yōu)化候選框回歸和分類(lèi)任務(wù)輸入的特征圖。
3. 采用兩階段訓(xùn)練方法。
DSSD的網(wǎng)絡(luò)結(jié)構(gòu)與SSD對(duì)比如下圖所示,以輸入圖像尺寸為為例,圖中的上半部分為SSD-ResNet101的網(wǎng)絡(luò)結(jié)構(gòu),conv3_x層和conv5_x層為原來(lái)的ResNet101中的卷積層,后面的五層是SSD擴(kuò)展卷積層,原來(lái)的SSD算法是將這七層的特征圖直接輸入到預(yù)測(cè)階段做框的回歸任務(wù)和分類(lèi)任務(wù)。DSSD是將這七層特征圖拿出六層(去掉尺寸為的特征圖)輸入到反卷積模型里,輸出修正的特征圖金字塔,形成一個(gè)由特征圖組成的沙漏結(jié)構(gòu)。最后經(jīng)預(yù)測(cè)模塊輸入給框回歸任務(wù)和分類(lèi)任務(wù)做預(yù)測(cè)。
DSSD中的D,即反卷積模型,指的是DSSD中高層特征和低層特征的融合模塊,其基本結(jié)構(gòu)如下圖所示:
二、DSSD之于FPN和TDM
同樣是采用Top-Down方式,DSSD與FPN 和TDM(這兩篇論文將在本論述后文中詳細(xì)介紹)的網(wǎng)絡(luò)結(jié)構(gòu)區(qū)別如下圖。可以看出,TDM使用的是concat操作,讓淺層和深層的特征圖疊在一起。DSSD使用的是Eltw Product(也叫broadcast mul)操作,將淺層和深層的特征圖在對(duì)應(yīng)的信道上做乘法運(yùn)算。FPN使用的是Eltw Sum(也叫broadcast add)操作,將淺層和深層的特征圖在對(duì)應(yīng)的信道上做加法運(yùn)算。
算法效果:
DSSD 當(dāng)輸入為513x513的時(shí)候在VOC2007數(shù)據(jù)集賞達(dá)到了80.0%mAP。
更詳細(xì)的實(shí)驗(yàn)復(fù)現(xiàn)和結(jié)果對(duì)比見(jiàn)DSSD:Deconvolutional Single Shot Detector 解析與實(shí)踐 - 知乎
1.2.5 DSOD : learning deeply supervised object detectors from scratch
論文鏈接:https://arxiv.org/pdf/1708.01241.pdf
開(kāi)源代碼:https://github.com/szq0214/DSOD
錄用信息:ICCV2017
論文目標(biāo):
從零開(kāi)始訓(xùn)練檢測(cè)網(wǎng)絡(luò)。DSOD旨在解決以下兩個(gè)問(wèn)題:
1. 是否可以從零開(kāi)始訓(xùn)練檢測(cè)模型?
2. 如果可以從零訓(xùn)練,什么樣的設(shè)計(jì)會(huì)讓網(wǎng)絡(luò)結(jié)果更好?
DSOD是第一個(gè)不使用圖像分類(lèi)預(yù)訓(xùn)練模型進(jìn)行物體檢測(cè)訓(xùn)練初始化的檢測(cè)算法。此外,DSOD網(wǎng)絡(luò)參數(shù)只有SSD的1/2,Faster R-CNN的1/10。
核心思想:
一、從零開(kāi)始訓(xùn)練檢測(cè)任務(wù)
現(xiàn)有的物體檢測(cè)算法如Faster R-CNN、YOLO、SSD需要使用在大規(guī)模分類(lèi)數(shù)據(jù)集上訓(xùn)練得到的分類(lèi)模型進(jìn)行backbone網(wǎng)絡(luò)初始化。比如使用ImageNet分類(lèi)模型。這樣做的優(yōu)勢(shì)在于:1.可以使用現(xiàn)有的模型,訓(xùn)練較快;2. 由于分類(lèi)任務(wù)已經(jīng)在百萬(wàn)級(jí)的圖像上進(jìn)行過(guò)訓(xùn)練,所以再用做檢測(cè)需要的圖片數(shù)量會(huì)相對(duì)較少。但其缺點(diǎn)也很明顯:1.很多檢測(cè)網(wǎng)絡(luò)都是分類(lèi)網(wǎng)絡(luò)改的。圖像分類(lèi)網(wǎng)絡(luò)一般都較大,檢測(cè)任務(wù)可能不需要這樣的網(wǎng)絡(luò)。2.分類(lèi)和檢測(cè)的策略不同,可能其最佳收斂區(qū)域也不一樣。3. 分類(lèi)任務(wù)一般都是RGB圖像訓(xùn)練的,但檢測(cè)有可能會(huì)使用深度圖像、醫(yī)療圖像等其他類(lèi)型的圖像。導(dǎo)致圖像空間不匹配。
為解決以上問(wèn)題,DSOD提出從零開(kāi)始訓(xùn)練檢測(cè)模型。
二、網(wǎng)絡(luò)結(jié)構(gòu)
DSOD網(wǎng)絡(luò)由backbone sub-network和front-end sub-network構(gòu)成,Backbone的作用在于提取特征信息,Front-end網(wǎng)絡(luò)是檢測(cè)模塊,通過(guò)對(duì)多層信息的融合用于物體檢測(cè)。
基礎(chǔ)網(wǎng)絡(luò)Backbone sub-network部分,是一個(gè)DenseNets的變種,由一個(gè)stem block, 四個(gè)dense blocks, 兩個(gè) transition layers ,兩個(gè)transition w/o pooling layers構(gòu)成,用來(lái)提取特征。如下圖所示:
Stem block中作者沒(méi)有使用DenseNet的7*7卷積,而是使用了兩個(gè)3*3的卷積(這點(diǎn)和Inception-V3的改進(jìn)很像)。作者指出這種設(shè)計(jì)可以減少?gòu)脑紙D像的信息損失,對(duì)檢測(cè)任務(wù)更有利。其他的模塊和Densenet很類(lèi)似。作者使用了詳細(xì)的實(shí)驗(yàn)證明了基礎(chǔ)網(wǎng)絡(luò)的設(shè)計(jì)部分的規(guī)則,如Densenet的過(guò)渡層transition layer通道數(shù)不減少、Bottleneck結(jié)構(gòu)的通道更多、使用stem block而非7*7卷積對(duì)最終的識(shí)別率都是有提升的。
經(jīng)過(guò)基礎(chǔ)特征提取后,檢測(cè)的網(wǎng)絡(luò)Front-end sub-network有兩種實(shí)現(xiàn)方式:Plain Connection和Dense Connection。其中Plain Connection 就是SSD的特征融合方法。注意虛框中的是Bottlenet結(jié)構(gòu),即使用1*1的卷積先降維然后再接3*3的卷積。
筆者認(rèn)為Dense Connection結(jié)構(gòu)就是DSOD的主要?jiǎng)?chuàng)新點(diǎn),這部分也很巧妙的采用了densenet的思想,一半的Feature map由前一個(gè)scale學(xué)到,剩下的一半是直接down-sampling的高層特征。
以第一個(gè)鏈接結(jié)構(gòu)為例,該結(jié)構(gòu)的輸入一半為上一層的降采樣的Feature Map,其中通道的改變由1*1的卷積完成。另一半為這個(gè)尺度學(xué)習(xí)到的feature。經(jīng)過(guò)Concat后的輸出是三個(gè)部分,1. 經(jīng)過(guò)1*1卷積和3*3卷積作為下一層的輸入。2. 直接降采樣并修改通道作為下一層的輸入。3.輸入這一層的feature到最后的檢測(cè)任務(wù)。
算法效果:
DSOD的檢測(cè)速度(17.4fps)比SSD、YOLO2略差,但在模型準(zhǔn)確率和模型大小方面卻更勝一籌,最小的網(wǎng)絡(luò)只有5.9M,同時(shí)mAP也能達(dá)73.6%。作者在實(shí)驗(yàn)部分還使用了pre-trained model 初始化DSOD,結(jié)果反而沒(méi)有從零開(kāi)始訓(xùn)練效果好,未來(lái)可能去探究一下。
附:
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法綜述(二)
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法綜述(三)
總結(jié)
以上是生活随笔為你收集整理的基于深度学习的目标检测算法综述(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 房价下跌是什么原因
- 下一篇: 关于windows10用c++部署lib