王永生 姬嗣愚
(海軍航空大學(xué) 煙臺(tái) 264001)
目標(biāo)檢測是計(jì)算機(jī)視覺的重要分支,主要任務(wù)是在給定的圖片中精確找到物體所在位置,并標(biāo)注出物體的類別,即包含了目標(biāo)定位與目標(biāo)分類兩部分。在計(jì)算機(jī)視覺領(lǐng)域中的目標(biāo)跟蹤、圖像分割、事件檢測、場景理解等的任務(wù)都以目標(biāo)檢測作為基礎(chǔ)[1]。
早期的目標(biāo)檢測算法大多是基于人工設(shè)計(jì)濾波器特征構(gòu)建的?;舅悸罚?]如圖1 所示,通過滑動(dòng)窗口的方法對(duì)待檢測圖片提取候選框,接著進(jìn)行特征提取,然后利用分類器進(jìn)行分類判定。通過非極大值抑制(NMS)可以對(duì)候選框進(jìn)行合并,消去重疊或冗余的候選框,輸出最終結(jié)果。典型算法有2001年的V-J(Viola-Jones)檢測算法[3~4]、2006年誕生的HOG+SVM 檢測算法[5]和2008年誕生的DPM算法[6]等。然而,這種方法使得滑動(dòng)窗口的計(jì)算量隨著圖像像素的增加呈指數(shù)增長,且手工設(shè)計(jì)的特征對(duì)于目標(biāo)多樣性的變化并沒有很好的魯棒性,檢測效率和精度都不高。
圖1 傳統(tǒng)目標(biāo)檢測方法基本流程
近年來,由于深度學(xué)習(xí)不斷發(fā)展,通過卷積神經(jīng)網(wǎng)絡(luò)(CNN)自動(dòng)提取高層特征[7]的方法逐漸成為主流,不僅可以更好地表征復(fù)雜特征,而且準(zhǔn)確率和實(shí)時(shí)性有了大幅提升,目前廣泛應(yīng)用于車輛檢測與識(shí)別[8~9]、行人檢測[10~11]以及飛機(jī)、艦船等各類目標(biāo)的識(shí)別與檢測[12~14]領(lǐng)域。根據(jù)檢測過程中是否包含候選區(qū)域目標(biāo)推薦這一過程,主要分為基于候選區(qū)域思想的Two-stage算法和基于回歸思想的one-stage 算法。Two-stage 算法的檢測過程包括:1)提取候選框特征信息;2)利用CNN 對(duì)候選框進(jìn)行分類與位置回歸。典型算法有R-CNN系列[15~18]、R-FCN[19]、Mask-RCNN[20]等。One-stage 算法在檢測時(shí)直接產(chǎn)生目標(biāo)的類別概率及位置坐標(biāo),不產(chǎn)生候選區(qū)域。典型算法有YOLO 系列[21~24]及SSD[25]、DSSD[26]、Retina Net[27]等。
本文對(duì)目前基于深度學(xué)習(xí)的主流的Two-stage目標(biāo)檢測算法和One-stage目標(biāo)檢測算法進(jìn)行了綜述,分析了相關(guān)算法的優(yōu)劣,最后對(duì)目標(biāo)檢測算法做出了總結(jié)和展望。
基于候選區(qū)域的算法需要產(chǎn)生大量候選窗口再判斷類別,這類算法精度較高但速度相對(duì)較慢,R-CNN 系列算法是典型的基于候選區(qū)域的目標(biāo)檢測算法。
R-CNN 算法采用基于AlexNet 網(wǎng)絡(luò)層結(jié)構(gòu),采用選擇性搜索(selective search)的方法替代滑動(dòng)窗口生成候選區(qū)域,降低了信息的冗余度;然后統(tǒng)一將候選區(qū)域尺寸縮放(wrap)為227*227,利用CNN替代人工設(shè)計(jì)濾波器提取特征;最后用支持向量機(jī)(SVM)做分類和框回歸,用線性回歸模型修正候選框位置,完成目標(biāo)檢測,提高了檢測精度與速度,其框架流程如圖2 所示。但不足之處在于生成的所有候選區(qū)域都要逐個(gè)輸入網(wǎng)絡(luò)進(jìn)行特征提取,訓(xùn)練速度慢,且縮放操作會(huì)改變圖片形狀,破壞原有信息,在后續(xù)操作中對(duì)精度產(chǎn)生不良影響。
圖2 R-CNN框架流程圖
針對(duì)R-CNN 由于縮放導(dǎo)致破壞細(xì)節(jié)的問題,何凱明等人提出了SPP-Net,引入空間金字塔池化(SPP)層,使得在網(wǎng)絡(luò)中輸入任意尺寸的圖片都會(huì)輸出固定大小的特征圖[28~29]。Fast R-CNN 結(jié)合了SPP 的思想對(duì)R-CNN 進(jìn)行了改進(jìn),采用VGG 16 為主干網(wǎng)絡(luò)[30],引入多任務(wù)損失函數(shù),同時(shí)將邊框回歸加入CNN 網(wǎng)絡(luò)進(jìn)行訓(xùn)練[31~33]。Fast R-CNN 在得到卷積特征圖后將所有候選區(qū)域輸入ROI 池化層固定特征尺寸,送入全連接層后進(jìn)行分類和邊框回歸,其框架流程如圖3所示。但Fast R-CNN仍然采用選擇性搜索產(chǎn)生候選區(qū)域,生成速度慢,被認(rèn)為是整個(gè)檢測過程的瓶頸。
圖3 Fast R-CNN 框架流程圖
Faster R-CNN 引進(jìn)RPN 網(wǎng)絡(luò)代替選擇性搜索生成候選區(qū)域,提出anchor 的概念,用于檢測同一位置上的多目標(biāo)。輸入圖片經(jīng)RPN 處理后,候選區(qū)域壓縮到了大約300個(gè),候選框數(shù)量大大降低[34]。Faster R-CNN 在RPN 層和全連接層均做過分類及候選框回歸,提升了檢測精度,其網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。缺點(diǎn)在于ROI 池化層對(duì)網(wǎng)絡(luò)平移不變性造成了不良影響,定位精度有所下降,且細(xì)節(jié)信息容易丟失,對(duì)小目標(biāo)檢測效果不好。
圖4 Faster R-CNN網(wǎng)絡(luò)結(jié)構(gòu)圖
在R-CNN 系列目標(biāo)檢測算法的基礎(chǔ)上,研究人員提出了許多其他的優(yōu)化方案。文獻(xiàn)[19]提出了R-FCN 算法,在Faster R-CNN 的基礎(chǔ)上,采用ResNet 為主干網(wǎng)絡(luò),提出全卷積化概念,提高網(wǎng)絡(luò)共享能力;同時(shí)增加了位置敏感分?jǐn)?shù)網(wǎng)絡(luò)層,平衡平移可變性與平移不變性的矛盾。文獻(xiàn)[35]提出了Libra R-CNN算法,通過在IoU上均勻采樣,彌補(bǔ)了困難樣本在線挖掘(OHEM)算法[36]對(duì)噪聲數(shù)據(jù)十分敏感的缺陷,讓樣本更具有代表性;引入平衡特征金字塔,更有效地整合利用多尺度特征;改進(jìn)損失函數(shù),引導(dǎo)整體訓(xùn)練更好地收斂。文獻(xiàn)[37]提出了Hyper Net算法,集合了多層的特征圖得到超特征,提升了小目標(biāo)檢測能力。文獻(xiàn)[20]提出了Mask R-CNN 算法,將Faster R-CNN 中的ROI pooling 層換成了ROI align 層,使用雙線性插值方法保留精確的空間位置,同時(shí)增加了并行的mask 分支[38],對(duì)每個(gè)ROI生成一個(gè)像素級(jí)別的二進(jìn)制掩碼,提升了精確度。
基于回歸思想的目標(biāo)檢測直接產(chǎn)生目標(biāo)的類別概率及位置坐標(biāo),相比于Two-stage,網(wǎng)絡(luò)結(jié)構(gòu)更加簡潔,檢測速度快是其最大特點(diǎn)。
在YOLO 算法中,輸入圖片被劃分為S*S個(gè)網(wǎng)格,直接在每個(gè)網(wǎng)格中預(yù)測物體邊框和類別,每個(gè)物體邊框的預(yù)測都以整張圖的特征作為輸入,包含了充足的上下文信息,同時(shí)提升了檢測速度。YOLO V1 借鑒了Google Net 的網(wǎng)絡(luò)設(shè)計(jì),不同的是,YOLO 采用1*1 卷積層和3*3 卷積層替代了inception module[39],其網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示。其缺點(diǎn)在于設(shè)定一個(gè)網(wǎng)格只檢測兩個(gè)邊界框,對(duì)于同一網(wǎng)格存在多類目標(biāo)的問題無法很好地解決,且小目標(biāo)及密集群體目標(biāo)的定位效果不好。
圖5 YOLO V1網(wǎng)絡(luò)結(jié)構(gòu)圖
SSD 的基礎(chǔ)網(wǎng)絡(luò)為VGG16,采用多尺度特征圖檢測不同目標(biāo),靠前的卷積層生成大尺度特征圖,提取細(xì)節(jié)信息,用于檢測小目標(biāo),而靠后的卷積層用于檢測大目標(biāo);同時(shí)借鑒了anchor 思想,設(shè)置不同尺度與寬高比的先驗(yàn)框作為最后輸出預(yù)測框的基準(zhǔn),減少模型訓(xùn)練的難度。SSD 檢測精度和速度都有提高,但SSD用于檢測小目標(biāo)的淺層卷積數(shù)目少,低層特征丟失多,且多尺度特征金字塔[40]將圖像劃分為不同尺度后再處理,增加了計(jì)算量。其網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
圖6 SSD網(wǎng)絡(luò)結(jié)構(gòu)圖
針對(duì)YOLO V1 存在的不足,后續(xù)進(jìn)行了許多改進(jìn)。YOLO V2 采用DarkNet-19[41]網(wǎng)絡(luò),通過在卷積層后加入歸一化指數(shù)層、對(duì)分類網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練、引入錨框機(jī)制和細(xì)粒度特征等方法,在保證速度的基礎(chǔ)上,提高了檢測精度。YOLO V3 采用DarkNet-53 網(wǎng)絡(luò),借鑒了特征金字塔(FPN)思想,對(duì)不同尺度特征圖進(jìn)行融合,在分類時(shí)利用Logistic loss代替Softmax loss,有效地提升了小目標(biāo)的檢測精度[42]。
2020 年,YOLO V4 正式提出,其改進(jìn)方法包括輸入端使用Mosaic數(shù)據(jù)增強(qiáng)方法、SAT 自對(duì)抗訓(xùn)練法和交叉小批量標(biāo)準(zhǔn)化(CmBN)法,極大地豐富了圖像的上下文信息;同時(shí)采用更高效的CSPDarknet53 網(wǎng)絡(luò),引入Mish 激活函數(shù)和Dropblock,對(duì)主干網(wǎng)絡(luò)進(jìn)行改進(jìn);在頸部結(jié)構(gòu)上,主要采用了SPP模塊、FPN+PAN 的方式,提高特征提取能力;應(yīng)用遺傳算法時(shí),選擇最優(yōu)的超參數(shù),解決網(wǎng)格敏感性問題等。相比之前,YOLO V4 不再需要使用昂貴的GPU進(jìn)行訓(xùn)練,大大降低了訓(xùn)練門檻。
文獻(xiàn)[26]提出了DSSD 算法,采用ResNet 101作為主干網(wǎng)絡(luò),提取更深層次的特征,同時(shí)提出基于top down 的網(wǎng)絡(luò)結(jié)構(gòu),用反卷積代替?zhèn)鹘y(tǒng)的雙線性插值上采樣,在預(yù)測階段引入殘差單元,優(yōu)化候選框回歸和分類任務(wù)輸入的特征圖。文獻(xiàn)[27]提出了RetinaNet 網(wǎng)絡(luò)架構(gòu),提出了Focal loss 損失函數(shù),對(duì)樣本給予不同權(quán)重,改善了正負(fù)樣本不均衡的情況。文獻(xiàn)[43]提出了RefineNet,框架模擬了Faster R-CNN 與SSD 相互融合的思路,但特征圖不需要經(jīng)過池化,而是直接通過中間模塊TCB進(jìn)行傳遞,提高了檢測速度。文獻(xiàn)[44]提出了M2Det,引入了多層次特征金字塔的概念,將基礎(chǔ)網(wǎng)絡(luò)得到的多尺度特征疊加組合,得到新的多層次多尺度特征,以聚合淺層信息定位能力強(qiáng)、深層信息分類能力強(qiáng)的特點(diǎn)。文獻(xiàn)[45]提出了CornerNet,在預(yù)測目標(biāo)物體時(shí),通過左上角和右下角的兩個(gè)關(guān)鍵點(diǎn)就可以組合出目標(biāo)框。
Two-stage 算法的優(yōu)化手段主要?dú)w結(jié)為:1)優(yōu)化候選區(qū)域的生成,如引入RPN 網(wǎng)絡(luò)、特征金字塔等;2)更好地獲取ROI 特征,主要方法有引入SPP層、ROI池化層、對(duì)多層特征圖進(jìn)行融合等;3)提高算法運(yùn)行速度,主要通過提高候選區(qū)域的生成效率,整合網(wǎng)絡(luò)結(jié)構(gòu),使模型中更多模塊用作共享,不僅提高了檢測精度,而且壓縮了冗余空間。
One-stage 的優(yōu)化手段主要?dú)w結(jié)為:1)提高主干網(wǎng)絡(luò)效率,One-stage 采用不同的基礎(chǔ)網(wǎng)絡(luò)VGG16、DarkNet-19、CSPDarknet53 等,通過增加更多的層數(shù)和參數(shù)來增大感受野,增強(qiáng)目標(biāo)檢測能力;2)提高獲取目標(biāo)能力,通過提取多尺度特征信息、引入anchor思想等,降低背景誤判率,提高目標(biāo)檢測精度;3)改進(jìn)損失函數(shù),用改進(jìn)后的Logistic loss、Focal loss等損失函數(shù),改善正負(fù)樣本不均衡問題,提升小目標(biāo)的檢測精度。
表1 給出了典型的目標(biāo)檢測網(wǎng)絡(luò)在VOC2007和COCO數(shù)據(jù)集的性能。
表1 典型目標(biāo)檢測網(wǎng)絡(luò)性能對(duì)比
通過以上分析,對(duì)未來的目標(biāo)檢測算法的研究方向提出幾點(diǎn)展望:
1)優(yōu)化模型的頸部設(shè)計(jì)。目標(biāo)檢測算法一般由在ImageNet 預(yù)訓(xùn)練的骨架(backbone)和用來預(yù)測對(duì)象類別和邊界框的頭部(head)兩部分組成,頸部指在骨架和頭部之間插入的用來收集不同階段的特征圖的結(jié)構(gòu),如FPN、PAN 等。在今后的研究中,可以通過優(yōu)化頸部結(jié)構(gòu)設(shè)計(jì),提高目標(biāo)檢測效率。
2)開發(fā)更加高效的骨架或模型。近年,一些研究人員對(duì)新的骨架和模型研究取得了進(jìn)展,提出了DetNet[46],DetNAS[47]等網(wǎng)絡(luò)結(jié)構(gòu),SpineNet[48],Hit-Detector[49]等模型,這些方法在不同程度上對(duì)目標(biāo)檢測提供了積極影響。因此,開發(fā)新的基礎(chǔ)網(wǎng)絡(luò)或新模型也是未來目標(biāo)檢測的研究方向。
3)模型輕量化,壓縮冗余空間。YOLO V4 可以適應(yīng)于單GPU 訓(xùn)練,大大提高了效率。此外,還有一些輕量化的網(wǎng)絡(luò)結(jié)構(gòu),如SqueezeNet[50]、MobileNet[51~52]、ShuffleNet[53~54]等。輕量化模型可以提高目標(biāo)檢測實(shí)時(shí)性,降低計(jì)算機(jī)資源開銷,提高實(shí)際運(yùn)用能力,將成為未來的重點(diǎn)研究方向之一。
目前,基于深度學(xué)習(xí)的目標(biāo)檢測算法不斷興起,本文對(duì)目前主流的一些算法進(jìn)行了綜述,首先簡單介紹了傳統(tǒng)目標(biāo)檢測算法的流程與不足,接著對(duì)基于區(qū)域思想和基于回歸思想兩大類目標(biāo)檢測算法分別進(jìn)行了分析,最后對(duì)未來的目標(biāo)檢測算法提出了展望,在深度學(xué)習(xí)理論的發(fā)展下,目標(biāo)檢測一定會(huì)取得更大的進(jìn)步。