曹 燕,李 歡,王天寶
(成都信息工程大學(xué),四川 成都 610225)
目標(biāo)檢測[1]主要是對輸入圖像中的物體類別和位置進(jìn)行判斷,實(shí)質(zhì)上是圖像分類和目標(biāo)定位的結(jié)合,是計(jì)算機(jī)視覺領(lǐng)域中的一個(gè)重要研究方向。目標(biāo)檢測在人臉識別、無人駕駛等領(lǐng)域取得了廣泛的應(yīng)用。在深度學(xué)習(xí)[2]興起之前,傳統(tǒng)的目標(biāo)檢測算法大多采用人工特征來進(jìn)行檢測,人工特征主要針對目標(biāo)的某個(gè)具體特征進(jìn)行檢測。其中,Sobel、Prewitt、Roberts、Canny和LoG[3-6]等描述子主要用來做邊緣檢測;Harris、FAST、CSS和DOG[7-9]主要用于角點(diǎn)檢測等。人工設(shè)計(jì)特征的好壞對目標(biāo)檢測的精度起到了決定性作用。深度學(xué)習(xí)使用非線性模型將原始輸入數(shù)據(jù)逐層轉(zhuǎn)化為更高層次、更抽象的特征,具有強(qiáng)大的學(xué)習(xí)和表征能力,能夠自動(dòng)發(fā)現(xiàn)分類或檢測任務(wù)所需要的特征。深度學(xué)習(xí)的發(fā)展極大地推動(dòng)了目標(biāo)檢測,基于深度學(xué)習(xí)的目標(biāo)檢測獲得了廣泛的關(guān)注,成為了當(dāng)今計(jì)算機(jī)視覺領(lǐng)域的研究熱點(diǎn)之一。
卷積神經(jīng)網(wǎng)絡(luò)AlexNet[10]、GoogleNet[11]、ResNet[12]等在圖像分類任務(wù)中取得了較好的成果。研究人員將這些卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用到目標(biāo)檢測中,相對于傳統(tǒng)的目標(biāo)檢測算法,在速度和準(zhǔn)確度上都有了極大提升?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法主要分為2類:1)以R-CNN[13]系列為代表的基于分類的目標(biāo)檢測框架(two stage);2)以YOLO[14]、SSD[15]算法為代表的基于回歸的目標(biāo)檢測框架(one stage)。
基于分類的目標(biāo)檢測算法首先利用Selective Search[16]、Edge Boxes[17]等算法生成可能包含待檢測目標(biāo)的候選區(qū)域(Region proposal)[18],再對這些候選區(qū)域進(jìn)一步進(jìn)行分類以及位置校準(zhǔn)得到最終的檢測結(jié)果。
Sermanet等人[19]在AlexNet的基礎(chǔ)上做了改進(jìn),提出了OverFeat算法。OverFeat是最先將深度學(xué)習(xí)應(yīng)用到目標(biāo)檢測中的算法之一。OverFeat利用卷積神經(jīng)網(wǎng)絡(luò)提取特征,可同時(shí)實(shí)現(xiàn)圖像分類、定位以及目標(biāo)檢測任務(wù),不同任務(wù)之間共享特征提取層,在ILSVRC 2013[20]數(shù)據(jù)集上的mAP達(dá)到了24.3%。雖然OverFeat相對傳統(tǒng)算法有顯著改進(jìn),但共享特征層的表達(dá)能力不強(qiáng),對小目標(biāo)的檢測效果不好,整體效果仍然差強(qiáng)人意。
Girshick等人提出的R-CNN算法首先采用Selective Search方法,將輸入圖像分割成多個(gè)模塊,再基于顏色、紋理等相似度對這些模塊進(jìn)行合并,最終得到大約2000個(gè)不同大小的候選區(qū)域,并將這些區(qū)域歸一化到固定大??;然后使用卷積神經(jīng)網(wǎng)絡(luò)對這些候選區(qū)域分別進(jìn)行特征提取,采用多個(gè)SVM對這些提取到的特征進(jìn)行分類;最后對這些區(qū)域進(jìn)行位置校準(zhǔn)。R-CNN在VOC[21]數(shù)據(jù)集上獲得了58.5%的準(zhǔn)確率,但是R-CNN存在以下2個(gè)問題:1)對每個(gè)候選區(qū)域進(jìn)行特征提取會產(chǎn)生大量重復(fù)運(yùn)算,無法做到實(shí)時(shí)更新;2)由于卷積神經(jīng)網(wǎng)絡(luò)的全連接層要求所有輸入大小相同,R-CNN將圖片縮放到相同大小,破壞了物體的長寬比,導(dǎo)致部分有用信息丟失,影響檢測效果。
為了解決R-CNN只能檢測固定大小圖像的問題,He等人[22]提出了SPP-Net。SPP-Net只需要對輸入圖像進(jìn)行一次卷積得到整張圖片的特征圖(feature map),然后將不同大小的候選區(qū)域映射到特征圖上。為了滿足全連接層對輸入大小一致的要求,SPP-Net采用空間金字塔池化層(Spatial Pyramid Pooling, SPP),利用不同大小的池化窗口將這些映射到特征圖上的候選區(qū)域統(tǒng)一到相同維度,最后利用SVM進(jìn)行分類,同時(shí)利用邊框回歸來微調(diào)候選框的位置。空間金字塔池化層使得SPP-Net能夠處理不同大小的圖片,并且完整保存了輸入圖片的信息。同時(shí)由于SPP-Net只需要對圖像進(jìn)行一次卷積,減少了運(yùn)算時(shí)間,其檢測速度比R-CNN快38~102倍,在VOC2007和Caltech 101數(shù)據(jù)集上取得了較好的成績。但同R-CNN一樣,在SPP-Net中,確定候選框、特征提取、訓(xùn)練SVM、訓(xùn)練邊框回歸模型這些步驟依然是單獨(dú)進(jìn)行的,導(dǎo)致訓(xùn)練時(shí)間較長;在訓(xùn)練時(shí)將所有的樣本存儲到磁盤上會占用大量空間;SPP-Net只能對空間金字塔池化層后的全連接層進(jìn)行微調(diào),無法同時(shí)更新前面的卷積層。
Fast R-CNN[23]繼承了SPP-Net能夠處理不同輸入大小圖片的優(yōu)點(diǎn),但是將SPP-Net多尺度空間金字塔池化層簡化為池化窗口大小,可以任意設(shè)定單尺度的ROl Pooling;同時(shí)引入了多任務(wù)學(xué)習(xí)模式,將多個(gè)步驟簡化到一個(gè)卷積神經(jīng)網(wǎng)絡(luò)中;對卷積神經(jīng)網(wǎng)絡(luò)的全連接層輸出做SVD分解得到2個(gè)向量,分別用于softmax分類以及邊框回歸。Fast R-CNN檢測時(shí)所有的特征都存放在顯存中,釋放了大量磁盤空間。Fast R-CNN主要分為以下4個(gè)步驟:
1)利用卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征。
2)利用區(qū)域生成算法提取候選區(qū)域,并將這些區(qū)域映射到特征圖上。
3)利用ROl Pooling將候選區(qū)域池化到固定大小的特征表示。
4)分別應(yīng)用softmax做多分類目標(biāo)識別,應(yīng)用邊框回歸對邊框位置進(jìn)行微調(diào)。
Fast R-CNN極大提升了檢測速度,在精度上也有了一定提高,但是對候選區(qū)域的提取依然采用Selective Search方法,消耗了大量時(shí)間,仍然無法達(dá)到實(shí)時(shí)性的要求。
Faster R-CNN[24]利用RPN網(wǎng)絡(luò)提取候選區(qū)域,并將RPN和Fast R-CNN融合到一個(gè)網(wǎng)絡(luò)中共享卷積特征,實(shí)現(xiàn)了真正意義上的端到端訓(xùn)練。RPN是一個(gè)全卷積網(wǎng)絡(luò),其思想是通過在特征圖上做窗口滑動(dòng),將錨點(diǎn)框(anchor)映射到原圖,得到不同大小和比例的候選區(qū)域。RPN主要有2個(gè)輸出:1)分類支路采用softmax得到anchor屬于物體或背景的概率;2)邊界框回歸支路對anchor的位置進(jìn)行校準(zhǔn)得到4個(gè)坐標(biāo)值。Faster R-CNN的主要步驟為:
1)利用卷積神經(jīng)網(wǎng)絡(luò)對輸入圖片提取特征。
2)利用RPN生成k個(gè)不同大小和比例的候選區(qū)域。
3)ROI Pooling利用RPN生成的候選區(qū)域和卷積神經(jīng)網(wǎng)絡(luò)提取到的共享特征圖得到固定大小的候選區(qū)域特征圖(proposal feature map)。
4)利用softmax對proposals進(jìn)行具體類別的分類,利用邊框回歸獲得物體的精確位置。
Faster R-CNN利用RPN進(jìn)一步提升了檢測速度,同時(shí)提高了檢測精度。由于Faster R-CNN經(jīng)過多次下采樣丟失了物體細(xì)節(jié)信息,對小物體的檢測效果仍然不好。
為了獲得較高的召回率,一些目標(biāo)檢測算法通常需要生成上千個(gè)候選區(qū)域,這極大影響了檢測效率,雖然Faster R-CNN在最后的檢測階段只采用300個(gè)候選區(qū)域,在一定程度上提升了效率,但對小物體的定位準(zhǔn)確度不高。Kong等人[25]提出的HyperNet將候選區(qū)域的生成與檢測任務(wù)結(jié)合,在產(chǎn)生較少候選區(qū)域的同時(shí)保證較高的召回率。HyperNet的主要思想是將不同卷積層的特征聯(lián)合起來得到超特征(Hyper feature)。雖然低層特征圖的分辨率低,對于小目標(biāo)的定位精度不高,但低層特征有助于提高召回率。HyperNet通過聯(lián)合低層特征,提高了對小目標(biāo)的檢測效果。在隨后的目標(biāo)檢測算法中對于小目標(biāo)的檢測也沿用了HyperNet的思想。
為了提高基于分類方法的效率,Shrivastava等人[26]提出了在線困難樣本挖掘(OHEM)用于訓(xùn)練基于分類的檢測器。其主要思想是利用Bootstrapping[27]技術(shù),對隨機(jī)梯度下降算法(SGD)進(jìn)行修改,移除原有的一些多參數(shù)和啟發(fā)式學(xué)習(xí)。檢測數(shù)據(jù)集中包含有大量容易樣本(easy examples)以及少量困難樣本(hard examples),OHEM利用自動(dòng)搜索困難樣本策略進(jìn)一步提高了檢測器的效率。當(dāng)數(shù)據(jù)集越復(fù)雜,規(guī)模越大時(shí),OHEM的優(yōu)越性越明顯,在VOC2007和VOC2012數(shù)據(jù)集上分別獲得了78.9%和76.3%的平均檢測精度。
隨著網(wǎng)絡(luò)深度加深,高層特征圖會提取到大量語義信息,但分辨率比較低;低層特征圖分辨率比較高,但是含有較少語義信息,只利用高層特征對于小目標(biāo)檢測無法達(dá)到較好的效果。Lin等人[28]提出的FPN通過側(cè)向連接(lateral connections)將分辨率較低但語義信息豐富的高層特征與語義信息較少但分辨率較高的低層特征融合在一起。FPN主要分為3個(gè)部分:
1)自底向上的通道(Bottom-up pathway)。這是卷積神經(jīng)網(wǎng)絡(luò)的前向計(jì)算通道,采用多個(gè)池化通道對圖片提取特征從而得到不同大小的特征圖。
2)自上而下的通道(Top-down pathway)。經(jīng)過不同網(wǎng)絡(luò)深度池化后的特征圖大小不一樣無法直接進(jìn)行特征融合,這個(gè)通道主要對高層的特征圖進(jìn)行上采樣使得其特征圖大小與需要融合的低層特征圖大小一致。
另外,轉(zhuǎn)子偏心也會引起磁路不平衡進(jìn)而產(chǎn)生軸電壓,在2極電機(jī)中比較明顯。主要是因?yàn)檗D(zhuǎn)子偏心后,兩個(gè)極下的磁通經(jīng)過的氣隙長度不相等,即氣隙磁阻不同。磁通路徑根據(jù)磁阻大小進(jìn)行分配,導(dǎo)致形成了匝鏈轉(zhuǎn)軸的磁通,同樣會在軸兩端感應(yīng)出軸電壓。
3)側(cè)向連接。主要用于融合高層與低層特征,使得低層特征也能獲得較多的語義信息。
最后對這些融合后的特征圖進(jìn)行檢測。采用多尺度特征融合使得FPN對小物體的檢測提升效果比較明顯,在COCO[29]數(shù)據(jù)集上得到了較好的檢測效果。
Faster R-CNN雖然采用了ROI Pooling來獲取統(tǒng)一維度的候選區(qū)域,但ROI Pooling在池化過程中對特征圖采取的取整去零操作帶來的像素偏差會對邊界框的定位造成一定的影響。He等人[30]提出的Mask R-CNN利用RoIAlign,采取雙線性插值法來獲得特征圖的像素值,從而獲得更準(zhǔn)確的像素信息。Mask R-CNN除了輸出邊界框的位置信息和目標(biāo)種類置信度,還增加了目標(biāo)掩模(object mask)輸出支路,利用全卷積網(wǎng)絡(luò)對每個(gè)候選區(qū)域預(yù)測分割掩模(segmentation mask),使得對于物體的輸出可精確到像素級。Mask R-CNN在人體關(guān)鍵點(diǎn)檢測、實(shí)例分割任務(wù)上有較好的效果。
在目標(biāo)檢測算法后處理階段一般通過非極大值抑制(Non-Maximum Suppression,NMS)移除重復(fù)并且分類置信度較低的預(yù)測框,保留分類置信度較高的預(yù)測框。但是分類置信度的高低不能很好地表示預(yù)測框位置的準(zhǔn)確性,NMS在重復(fù)移除預(yù)測框的過程中可能忽略了那些分類置信度較低但定位置信度較高的預(yù)測框,導(dǎo)致最終對物體的檢測精度不理想。Jiang等人[31]提出的IOU-Net首先預(yù)測檢測框與真實(shí)框之間的IOU,在NMS階段保留IOU較高的預(yù)測框,同時(shí)更新預(yù)測框的分?jǐn)?shù),使得預(yù)測框同時(shí)有最高的分類置信度與位置置信度;為了獲得更準(zhǔn)確的預(yù)測框,一些目標(biāo)檢測框架[32-35]會利用邊框回歸器重復(fù)對邊框進(jìn)行位置校準(zhǔn),然而多次回歸使得輸入的分布容易發(fā)生變化[36]并且導(dǎo)致最后檢測精度下降,為了解決這一問題,利用IOU-Net作為穩(wěn)健的定位精度估計(jì)器,Jiang等人[31]同時(shí)提出了基于優(yōu)化的邊框校準(zhǔn)(optimization-based bounding box refinement),使得網(wǎng)絡(luò)可以自適應(yīng)迭代合適的步數(shù)以實(shí)現(xiàn)邊框位置校準(zhǔn);Mask R-CNN提出的RoIAlign解決了ROI Pooling由于取整去零帶來的像素偏差問題,但是沒有充分考慮到不同大小候選區(qū)域帶來的差異,為此,IOU-Net提出了PrROI Pooling,采用積分方式來獲取特征值。IOU-Net在COCO數(shù)據(jù)集上獲得了較好的檢測效果。
目標(biāo)檢測算法不僅要求有較高的準(zhǔn)確度,同時(shí)也要求能夠滿足實(shí)時(shí)性。R-CNN、SPP-Net、Fast R-CNN采用Selective Search的方法相對于傳統(tǒng)目標(biāo)檢測算法在精度和速度上都有所提升。但由于Selective Search聚類方法會消耗大量的時(shí)間,現(xiàn)在基于分類的方法比如Faster R-CNN、FPN、Mask R-CNN等大多使用RPN來產(chǎn)生候選區(qū)域,在速度和精度上又有了進(jìn)一步提升,但實(shí)時(shí)性仍不理想,Mask R-CNN的檢測速度僅為5 f/s。為此,研究人員提出了基于回歸的目標(biāo)檢測方法,這種方法不需要產(chǎn)生候選區(qū)域,直接在原圖上得到最終的檢測結(jié)果。
Szegedy等人[37]首次提出了利用深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network, DNN)將目標(biāo)檢測當(dāng)做回歸問題處理。Szegedy將AlexNet最后的多分類層改為回歸層,對每個(gè)目標(biāo)輸出二進(jìn)制掩模(binary mask),如果某個(gè)像素在給定物體的邊界框內(nèi)則置為1,否則為0。為了檢測多個(gè)距離相近的目標(biāo),神經(jīng)網(wǎng)絡(luò)需要輸出多個(gè)二進(jìn)制掩模。為了精確定位,將二進(jìn)制掩模的像素放大到與輸入圖像一致,同時(shí)使用定位器進(jìn)一步提高定位準(zhǔn)確度。
Erhan等人[38]提出的神經(jīng)網(wǎng)絡(luò)模型對每個(gè)盒子預(yù)測一組邊界框以及一個(gè)分?jǐn)?shù),表示這個(gè)盒子包含物體的可能性。在訓(xùn)練過程中采用聚類方法來得到物體的典型位置以便于與真實(shí)框進(jìn)行匹配,隨后的YOLOv2也采用了類似的思想來得到用于訓(xùn)練的anchor。
Li等人[39]通過模擬大腦的記憶和預(yù)測機(jī)制設(shè)計(jì)了一種檢測模型,首先在靜態(tài)圖上滑動(dòng)固定大小的窗口以生成序列,接著利用卷積神經(jīng)網(wǎng)絡(luò)來提取這些序列的特征,最后長短期記憶以適當(dāng)?shù)捻樞蚪邮者@些序列特征。Li等人提出的模型集成了特征學(xué)習(xí)和序列學(xué)習(xí),可應(yīng)用于預(yù)測監(jiān)督場景中對象潛在的位置。
YOLO的網(wǎng)絡(luò)結(jié)構(gòu)延續(xù)了GoogleNet的核心思想,利用卷積層來提取圖片特征,利用全連接層來得到最后的檢測結(jié)果。YOLO將輸入圖像分成S×S個(gè)網(wǎng)格,每個(gè)網(wǎng)格負(fù)責(zé)檢測中心落在該網(wǎng)格的物體。YOLO的端到端訓(xùn)練和預(yù)測使得其具有較快的檢測速度,可以達(dá)到45 f/s,然而YOLO的檢測精度卻只有63.4%;在YOLO算法中雖然每個(gè)網(wǎng)格預(yù)測B個(gè)邊框,但是只預(yù)測一組類別概率值,并且最后只選擇IOU最高的邊框作為輸出結(jié)果。如果一個(gè)網(wǎng)格中包含多個(gè)物體,YOLO只能檢測出其中一個(gè)物體。
SSD借鑒了Faster R-CNN中anchor的機(jī)制,在特征圖上生成一系列不同大小和長寬比的默認(rèn)框,同時(shí)采用困難樣本挖掘方法對負(fù)樣本進(jìn)行采樣使得訓(xùn)練過程中正負(fù)樣本的比例維持在1:3。SSD對每一個(gè)默認(rèn)框輸出相應(yīng)的位置偏移以及類別置信度。值得注意的是,SSD將背景類別也當(dāng)做了一個(gè)特殊的類別,也就是如果檢測的類別為C類,那么每一個(gè)默認(rèn)框需要預(yù)測C+1個(gè)類別置信度值,最后選擇置信度最高的類別作為默認(rèn)框所屬的類別。SSD同時(shí)采用了特征金字塔的方式來做多尺度融合預(yù)測。SSD的檢測速度達(dá)到了59 f/s,mAP為73.9%,相對YOLO來說有了較大提升,但是對小物體的檢測效果仍然不理想。
為了得到更快、更準(zhǔn)確的檢測效果,YOLOv2[40]在YOLO的基礎(chǔ)上做了許多方面的改進(jìn):1)在每一層卷積層后加入了BN[41]層加快整個(gè)網(wǎng)絡(luò)的收斂速度;2)使用高分辨率圖像來訓(xùn)練網(wǎng)絡(luò)模型。目前許多目標(biāo)檢測算法采用在ImageNet數(shù)據(jù)集上得到的預(yù)訓(xùn)練模型作為基礎(chǔ)特征提取網(wǎng)絡(luò),但許多預(yù)訓(xùn)練模型的輸入圖像大小低于256×256。比如YOLO采用224×224的圖像來訓(xùn)練分類網(wǎng)絡(luò),但檢測時(shí)采用448×448的圖像,導(dǎo)致模型需要適應(yīng)分辨率的變化。YOLOv2首先利用224×224的圖像來預(yù)訓(xùn)練分類網(wǎng)絡(luò),再用448×448的圖像來微調(diào)網(wǎng)絡(luò)模型,最后檢測時(shí)采用448×448的圖像,這樣網(wǎng)絡(luò)就不需要花時(shí)間適應(yīng)不同的分辨率。除此之外,YOLOv2還用了K-means[42]聚類方法來確定anchor的大小、利用Darknet-19作為基礎(chǔ)的特征提取網(wǎng)絡(luò)等。與YOLOv2在同一時(shí)期提出的YOLO9000結(jié)合檢測和分類數(shù)據(jù)集,在2類數(shù)據(jù)集上進(jìn)行訓(xùn)練,可實(shí)現(xiàn)9000多類物體的檢測。
受到語義分割[43]和姿態(tài)估計(jì)[44]算法的影響,Fu等人[45]提出的DSSD算法采用編碼-譯碼的網(wǎng)絡(luò)結(jié)構(gòu)來傳遞語義信息,但為了減少參數(shù)計(jì)算量,編碼-譯碼網(wǎng)絡(luò)結(jié)構(gòu)不是采用對稱的形式而是采用了沙漏結(jié)構(gòu)。為了融合不同大小的特征圖,DSSD采用反卷積來增大高層特征圖的像素。Fu等人發(fā)現(xiàn)元素點(diǎn)積(Eltw Product)的方式比元素相加的方式能夠獲得更好的效果,因此DSSD采用元素點(diǎn)積的方式來融合語義信息。同時(shí),DSSD在預(yù)測層加入了殘差結(jié)構(gòu)來更進(jìn)一步提升檢測精度。DSSD對小物體的檢測效果較好,在輸入圖片大小為513×513的情況下,DSSD的mAP達(dá)到了81.5%。
大部分目標(biāo)檢測框架采取像ImageNet這樣的大規(guī)模分類數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練之后的網(wǎng)絡(luò)作為主干網(wǎng)絡(luò),但由于分類和檢測任務(wù)的損失函數(shù)以及種類分布不同導(dǎo)致網(wǎng)絡(luò)學(xué)習(xí)效果有一定的偏差。雖然微調(diào)預(yù)訓(xùn)練網(wǎng)絡(luò)可在一定程度上緩解偏差,但無法從根源上解決問題。Shen等人[46]提出的DSOD可針對檢測任務(wù)重新開始訓(xùn)練神經(jīng)網(wǎng)絡(luò)。同時(shí),DSOD還引入了DenseNet的思想,使得其參數(shù)量大大減少。DSOD雖然在mAP上相對SSD有了提升,但檢測速度卻有所下降。
YOLOv3[47]在YOLO9000的基礎(chǔ)上主要做了如下改進(jìn):
1)借鑒Faster R-CNN的思想。對每個(gè)候選框增加了“物體性”的預(yù)測,判斷其屬于前景或者背景的概率,不同的是,YOLOv3對每個(gè)真實(shí)框只分配一個(gè)先驗(yàn)邊界框。
2)采用多尺度融合預(yù)測。YOLOv3借鑒FPN的思想,利用多尺度特征圖,提取細(xì)粒度的特征,增加對小物體的檢測效果。
3)采用Darknet-53作為主干網(wǎng)絡(luò)。Darknet-53綜合了YOLOv2的主干網(wǎng)絡(luò)Darknet-19和ResNet的優(yōu)點(diǎn),在ImageNet上的Top-5準(zhǔn)確率可媲美ResNet-152,同時(shí)減少了計(jì)算量,進(jìn)一步提高了速度。
YOLOv3雖然相對YOLO9000提升了對小物體的檢測效果,但對大物體的檢測效果卻略有下降。
由于受到有限的計(jì)算能力和存儲空間的限制,隨著在移動(dòng)設(shè)備上運(yùn)行神經(jīng)網(wǎng)絡(luò)的需求增加,近年來出現(xiàn)了越來越多的輕量化神經(jīng)網(wǎng)絡(luò)模型[48-51],然而這些網(wǎng)絡(luò)結(jié)構(gòu)主要依賴于深度可分離卷積(depthwise separable convolution)。因此,Wang等人[52]提出了PeleeNet網(wǎng)絡(luò)用于目標(biāo)檢測。PeleeNet是DenseNet[53]的變體,既遵循了DenseNet密集連接的結(jié)構(gòu)又極大程度上減少了對計(jì)算能力和內(nèi)存的要求。為了獲取不同大小的感受野,Pelee采用了2種并列的密集連接層,最后通過拼接的方式將獲取到不同大小感受野的特征進(jìn)行融合。Pelee同時(shí)采用了類似DSOD的stem block,在不增加計(jì)算量的情況下可以增強(qiáng)特征表達(dá)能力。Pelee在iPhone 6s上的運(yùn)行速度為17.1 f/s,在iPhone 8s上的運(yùn)行速度為23.6 f/s。
基于回歸的目標(biāo)檢測算法在速度上相對于基于分類的算法有大幅提升,基于分類的目標(biāo)檢測算法主要優(yōu)勢在于較高的精確度。隨著算法的改進(jìn),一些基于回歸的目標(biāo)檢測算法既有較高的精度又有較快的檢測速度,其精確度甚至超過大部分基于分類的目標(biāo)檢測算法。
本章總結(jié)了基于深度學(xué)習(xí)目標(biāo)檢測算法的一些常見問題以及相應(yīng)解決方案。
1)對于小目標(biāo)的檢測。目前的通用解決辦法是采用Top-Down的網(wǎng)絡(luò)結(jié)構(gòu),即將高層的語義信息與低層特征融合從而達(dá)到更好的檢測效果。特征融合的方式有FPN的元素相加(Eltw Sum)方法、DSSD的元素點(diǎn)積方法,以及TDM[54]的調(diào)制模塊通過卷積的方式將高低層信息融合到一起。
2)缺乏專門適用于檢測任務(wù)的網(wǎng)絡(luò)。當(dāng)前卷積神經(jīng)網(wǎng)絡(luò)在目標(biāo)檢測任務(wù)上的主要弊端在于常用的卷積神經(jīng)網(wǎng)絡(luò)都是為分類任務(wù)而設(shè)計(jì),為了獲取圖片的有用特征,網(wǎng)絡(luò)中設(shè)計(jì)有大量的池化層,導(dǎo)致最后的特征圖會被壓縮得非常小,雖然采用Top-Down的結(jié)構(gòu)融合語義信息能夠改善對小目標(biāo)的檢測效果,但是由于經(jīng)過多次池化,高層特征中小目標(biāo)的語義信息丟失嚴(yán)重,而分辨率較低的高層特征圖也不利于對大目標(biāo)的檢測。一種解決辦法是減少網(wǎng)絡(luò)中的池化層,使得最后的特征圖具有較高的分辨率,但是同時(shí)也會導(dǎo)致感受野變小,不利于大目標(biāo)的檢測。Li等人[55]提出了一種專門用于目標(biāo)檢測任務(wù)的網(wǎng)絡(luò)結(jié)構(gòu)DetNet,并且在網(wǎng)絡(luò)中引入帶孔卷積(dilated convolution)[56-57]使得網(wǎng)絡(luò)提取到的特征圖能同時(shí)保持較大的感受野和分辨率。
3)正負(fù)樣本不平衡。有研究人員認(rèn)為,基于回歸的檢測算法精度低于基于分類算法的主要原因是為了在訓(xùn)練階段產(chǎn)生足夠的與真實(shí)框相匹配的正樣本,大部分基于回歸的算法會在特征圖上產(chǎn)生密集的anchors,但只有少數(shù)的anchor包含目標(biāo),由此會產(chǎn)生大量負(fù)樣本使得正負(fù)樣本不平衡,而基于分類的回歸算法在RPN生成候選區(qū)域階段濾除了一部分負(fù)樣本,并且對用來訓(xùn)練的樣本進(jìn)行了一次粗略的位置調(diào)整。RON[58]提出的對象優(yōu)先(objectness prior)對每個(gè)錨框做二分類,判斷其是否包含目標(biāo),在做檢測時(shí)將正負(fù)樣本的比例控制在1:3左右,從而減少對負(fù)樣本的搜索空間;RefineDet[59]也采用了類似的方法,利用錨框校準(zhǔn)模塊(Anchor Refinement Module,ARM)來濾除一部分負(fù)樣本并且調(diào)整錨框的位置,在目標(biāo)檢測模塊(Object Detection Module,ODM)采用困難負(fù)樣本挖掘方法進(jìn)一步濾除負(fù)樣本并且精確回歸錨框的位置;除了改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu),Lin等人[60]從損失函數(shù)方面來改善樣本不平衡問題。Lin等人提出的焦點(diǎn)損失函數(shù)(Focal Loss)通過給樣本分配不同的權(quán)重來濾除大部分容易負(fù)樣本??偟膩碚f,采用困難負(fù)樣本來訓(xùn)練網(wǎng)絡(luò)可增強(qiáng)網(wǎng)絡(luò)的魯棒性,因此,解決樣本不平衡的主要思想是濾除容易負(fù)樣本,保留困難負(fù)樣本。
4)對于遮擋物體的檢測。傳統(tǒng)的非極大值抑制方法雖然能夠去掉重復(fù)的檢測框,但當(dāng)2個(gè)目標(biāo)重合時(shí)容易發(fā)生漏檢的情況,Bodla等人[61]提出的平滑非極大值抑制(Soft-NMS)對與分類置信度最高檢測框重疊度較大的檢測框分配一個(gè)較低的分?jǐn)?shù),而不是像非極大值抑制算法直接濾除重疊度較高的檢測框,從而改善對被遮擋目標(biāo)的檢測效果。
各種算法基于深度學(xué)習(xí)的目標(biāo)檢測模型性能對比如表1所示。
表1 基于深度學(xué)習(xí)的目標(biāo)檢測模型性能對比
算法VOC2007(mAP@IOU=0.5)VOC2012(mAP@IOU=0.5)COCO(mAP@IOU=0.5:0.95)檢測速度/(f/s)FastR-CNN70.068.419.73FasterR-CNN73.270.421.97HyperNet76.371.4-0.88OHEM78.976.322.47YOLO66.457.9-45SSD300?77.275.825.146SSD50076.874.931.219RON38477.675.427.415DSOD30077.776.3-17.4DSSD32181.580.033.29.5YOLOv278.673.421.640RefineDet32080.078.132.040.3RefineDet512+83.883.541.8-YOLOv3--33.0-
近年來,目標(biāo)檢測算法蓬勃發(fā)展,基于深度學(xué)習(xí)的目標(biāo)檢測框架仍是目標(biāo)檢測任務(wù)的主流方向。目前大部分目標(biāo)檢測算法采用anchor機(jī)制,在特征圖上產(chǎn)生大量密集的anchor,再對這些anchor進(jìn)行進(jìn)一步的分類和位置校準(zhǔn)。但大量anchor容易產(chǎn)生正負(fù)樣本不平衡的問題,同時(shí)針對不同數(shù)據(jù)集需要設(shè)置不同尺度與長寬比的anchor。如何設(shè)計(jì)合適的anchor還需要進(jìn)一步研究。一些研究人員嘗試使用anchor-free的方法[62-63]來檢測目標(biāo),但這一類方法對主干網(wǎng)絡(luò)的要求相對較高。除此之外,如何優(yōu)化目標(biāo)檢測框架,設(shè)計(jì)更好的損失函數(shù)、更適合目標(biāo)檢測任務(wù)的網(wǎng)絡(luò)來更好地提取特征仍舊是未來目標(biāo)檢測算法的重點(diǎn)研究方向。