謝 富,朱定局
(華南師范大學(xué) 計(jì)算機(jī)學(xué)院,廣州 510631)
目標(biāo)檢測的基本任務(wù)是需要判別圖片中被檢測的目標(biāo)類別,同時(shí)需要使用矩形邊界框來確立目標(biāo)的所在位置及大小,并給出相應(yīng)的置信度.作為計(jì)算機(jī)視覺領(lǐng)域的一個(gè)基本問題,目標(biāo)檢測也是許多計(jì)算機(jī)視覺任務(wù)如圖像分割、目標(biāo)追蹤、圖像描述的基礎(chǔ).在過去的10年里,目標(biāo)檢測在計(jì)算機(jī)視覺領(lǐng)域受到了熱烈的關(guān)注,出現(xiàn)了越來越多的有關(guān)目標(biāo)檢測的論文發(fā)表(如圖1),其中包含了目標(biāo)檢測方法的理論創(chuàng)新,和對已有目標(biāo)檢測模型的改進(jìn)和推廣應(yīng)用.由于在目標(biāo)檢測過程中各類目標(biāo)的大小,形狀,姿態(tài)等各有不同,同時(shí)還受到外部條件如光線,遮擋等原因[1]影響,給目標(biāo)檢測帶來了一系列困難,國內(nèi)外許多學(xué)者都對此進(jìn)行了系統(tǒng)性的研究.
圖1 2011–2020年目標(biāo)檢測相關(guān)論文的數(shù)量
深度學(xué)習(xí)方法應(yīng)用到目標(biāo)檢測領(lǐng)域之前,目標(biāo)檢測領(lǐng)域發(fā)展平緩.在2012年的ImageNet[2]分類任務(wù)中,卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用使得圖像分類任務(wù)的效果大大提高,在此推動(dòng)下,Girshick 等[3]首次在目標(biāo)檢測領(lǐng)域中使用了區(qū)域卷積網(wǎng)絡(luò)(regions with CNN features,R-CNN),在檢測效果上取得了非常巨大的提升.此后,深度學(xué)習(xí)與目標(biāo)檢測任務(wù)的結(jié)合使得目標(biāo)檢測領(lǐng)域開始迅速發(fā)展,并在實(shí)踐中得到廣泛應(yīng)用.目標(biāo)檢測具有廣闊的應(yīng)用前景,已經(jīng)在監(jiān)控安防[4]、自動(dòng)駕駛[5]、遙感偵測[6]、醫(yī)學(xué)圖像病灶檢測[7]等領(lǐng)域取得了很好的效果.
目標(biāo)檢測領(lǐng)域常用數(shù)據(jù)集有PASCAL VOC[8]、ImageNet[9]、MS-COCO[10]、Open Images[11]、DOTA[12].常用數(shù)據(jù)集的樣本與標(biāo)注示例如圖2所示[12,13].
圖2 常用數(shù)據(jù)集的樣本與標(biāo)注
2.1.1 PASCAL VOC
PASCAL VOC (the PASCAL visual object classification)數(shù)據(jù)集最早于2005年發(fā)布,最初只有4 個(gè)類別,2005–2012年每年更新一次,主要用于圖像分類、目標(biāo)檢測任務(wù).目前廣泛使用的是PASCAL VOC 2007和PASCAL VOC 2012 兩個(gè)版本的數(shù)據(jù)集,其中,PASCAL VOC 2007 包含9 963 張標(biāo)注過的圖片,標(biāo)注出24 640個(gè)目標(biāo)物體;PASCAL VOC 2012 包含11 530 張圖片,標(biāo)注出27 450 個(gè)目標(biāo)物體.這兩個(gè)數(shù)據(jù)集都包含了20 個(gè)類別的數(shù)據(jù),主要有人、動(dòng)物、交通工具、室內(nèi)物品等,并且數(shù)據(jù)集中的圖像都有對應(yīng)的XML 文件對目標(biāo)的位置和類別進(jìn)行標(biāo)注.
2.1.2 ImageNet
ImageNet 是由斯坦福大學(xué)和普林斯頓大學(xué)根據(jù)WordNet 層次結(jié)構(gòu)合作組織建立起來的用于視覺對象識別軟件研究的大型可視化數(shù)據(jù)庫,其中層次結(jié)構(gòu)的每個(gè)節(jié)點(diǎn)都是由成百上千張圖像組成的.ImageNet 由計(jì)算機(jī)視覺領(lǐng)域的專業(yè)人員維護(hù),文檔詳細(xì),應(yīng)用廣泛,已經(jīng)成為計(jì)算機(jī)視覺領(lǐng)域圖像算法性能檢驗(yàn)的標(biāo)準(zhǔn)數(shù)據(jù)集.數(shù)據(jù)集包含了1 400 多萬張圖片,2 萬多個(gè)類別.其中使用最多的子數(shù)據(jù)集是ILSVRC (ImageNet large scale visual recognition challenge),涵蓋1 000 個(gè)對象類別,包含1 281 167 張訓(xùn)練圖像,50 000 張驗(yàn)證圖像和100 000 張測試圖像.
2.1.3 MS-COCO
MS-COCO (Microsoft common objects in context)數(shù)據(jù)集首次發(fā)布于2015年,是由微軟公司開發(fā)維護(hù)的大型圖像數(shù)據(jù)集,主要用于目標(biāo)檢測,圖像分割,圖像標(biāo)題生成任務(wù).一共包含了32.8 萬張圖片,其中有超過20 萬張圖片有詳細(xì)標(biāo)注,包含了91 個(gè)物體類別,具有場景復(fù)雜、單張圖片目標(biāo)多、小目標(biāo)物體多等特點(diǎn),是目前圖像分割領(lǐng)域最大的數(shù)據(jù)集.
2.1.4 Open Images
Open Images 是谷歌團(tuán)隊(duì)發(fā)布的用于圖像分類、目標(biāo)檢測、視覺關(guān)系檢測、圖像分割和圖像描述的數(shù)據(jù)集.2020年最新發(fā)布的Open Images V6 包含900 萬張圖片,600 種對象,1 600 萬個(gè)bounding-box 標(biāo)注,是目前最大的帶圖像位置標(biāo)注的數(shù)據(jù)集.Open Images 圖像庫中的bounding-box 大部分都是由專業(yè)人員手工繪制的,確保了標(biāo)注的準(zhǔn)確性與一致性.圖像場景復(fù)雜,通常包含多個(gè)目標(biāo)(平均每張圖片8.3 個(gè)).
2.1.5 DOTA
航空遙感圖像不同于傳統(tǒng)的圖像數(shù)據(jù),具有尺度變化大、目標(biāo)小且密集、檢測目標(biāo)形態(tài)多樣等特點(diǎn).DOTA 是航空遙感圖像檢測的常用數(shù)據(jù)集,包含了2 806 張各種尺度大小圖像,圖像尺寸從800×800 到4000×4000 不等,數(shù)據(jù)集劃分為1/6 驗(yàn)證集,1/3 測試集,1/2 訓(xùn)練集.DOTA 數(shù)據(jù)集的圖像全部是由領(lǐng)域內(nèi)人士標(biāo)注的,總計(jì)15 個(gè)類別188 282 個(gè)目標(biāo)對象.
2.2.1 FFPW/FFPI
FPPW (false positives per-window)最早是用于INRIA 行人數(shù)據(jù)集[14]評估性能,在早期的行人檢測中應(yīng)用較廣,但是由于FPPW 存在缺陷,對某些實(shí)例不能很好的預(yù)測整張圖片.到2009年,Caltech 行人數(shù)據(jù)集[15]出現(xiàn)后,評估標(biāo)準(zhǔn)就由針對窗口的FPPW 過渡為適用于整張圖片的FPPI (false positives per-image).
2.2.2 AP/mAP
在目標(biāo)檢測研究中,常用于評價(jià)檢測效果的一個(gè)標(biāo)準(zhǔn)是AP (average precision),最初在PASCAL VOC 2007 被引入,由P-R 曲線和坐標(biāo)圍起來的面積組成,用于表示不同召回率下檢測的平均正確性,是對一個(gè)特定類別下目標(biāo)檢測器效果的評估.mAP (mean average precision)為各類別AP的平均值,用于對所有目標(biāo)類別檢測的效果取平均值,是檢測性能的最終度量.
2.2.3 IoU
交并比(intersection over union,IoU)在目標(biāo)檢測的性能評價(jià)時(shí)用的非常多,表示的是預(yù)測的邊框和原圖片標(biāo)注的真實(shí)邊框的交疊率,是兩者交集與并集的比值.當(dāng)比值為1的時(shí)候則說明預(yù)測的效果達(dá)到最佳.
2.2.4 FPS/FLOPs
檢測速度代表目標(biāo)檢測算法與模型的計(jì)算性能,需要在同一硬件條件下進(jìn)行比較.目標(biāo)檢測技術(shù)在準(zhǔn)確度上已經(jīng)有了很大的提高,但是如果不考慮計(jì)算性能,使用復(fù)雜的模型會(huì)對硬件的計(jì)算能力和內(nèi)存要求較高,導(dǎo)致部署成本大大增加.通常目標(biāo)檢測的速度性能評價(jià)指標(biāo)有FPS (frame per second),代表檢測器每秒可以處理的圖片幀數(shù),數(shù)值越大代表檢測速度越快.浮點(diǎn)運(yùn)算數(shù)(floating point operations,FLOPs)可以理解為計(jì)算量,用來衡量算法與模型的復(fù)雜度.模型的FLOPs與許多因素有關(guān),比如參數(shù)量、網(wǎng)絡(luò)層數(shù)、選用的激活函數(shù)等.一般情況下,參數(shù)量低的網(wǎng)絡(luò)運(yùn)算量會(huì)比較小,使用的內(nèi)存也小,更利于嵌入式端的部署.
目前主流的深度學(xué)習(xí)目標(biāo)檢測算法有兩類(如圖3),基于區(qū)域建議的雙階段目標(biāo)檢測算法,如R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、FPN、Mask R-CNN;基于回歸分析的單階段目標(biāo)檢測算法,如YOLO系列、SSD 系列、RetinaNet.最近幾年,還出現(xiàn)了NAS-FPN、EfficientDet、YOLOF 等新算法.
圖3 基于深度學(xué)習(xí)的目標(biāo)檢測算法
雙階段目標(biāo)檢測算法一般先使用算法(選擇性搜索或者區(qū)域建議網(wǎng)絡(luò)等)對圖像提取候選框,然后對候選框目標(biāo)進(jìn)行二次修正得到檢測結(jié)果.代表算法有:RCNN、SPP-Net、Fast R-CNN、Faster R-CNN、feature pyramid networks (FPN)、Mask R-CNN.
3.1.1 R-CNN
2014年,伯克利大學(xué)的Girshick 等提出了R-CNN[3],在PASCAL VOC 2007 數(shù)據(jù)集中取得出色的效果,比之前其他方法有近50%的性能提升,mAP 達(dá)到了58.5%.R-CNN的模型如圖4所示,首先是通過選擇性搜索提取可能的目標(biāo)區(qū)域,統(tǒng)一大小后使用CNN 在這些候選區(qū)域上提取特征,最后將這些特征輸入支持向量機(jī)分類器對區(qū)域進(jìn)行分類,位置信息則由全連接神經(jīng)網(wǎng)絡(luò)回歸來得到.
圖4 R-CNN 模型
R-CNN 缺點(diǎn):
(1)多階段訓(xùn)練過程.各階段相對獨(dú)立,訓(xùn)練繁瑣復(fù)雜.
(2)圖像易失真.候選區(qū)域需要放縮到固定大小會(huì)導(dǎo)致不期望看到的幾何形變.
(3)計(jì)算開銷大,檢測速度慢.尤其對于高密度的圖片,使用選擇性搜索找到的每個(gè)區(qū)域都要使用卷積神經(jīng)網(wǎng)絡(luò)提取特征.
3.1.2 SPP-Net
針對R-CNN 對圖像進(jìn)行縮放導(dǎo)致圖像失真的問題,He 等[16]在2014年提出了SPP-Net,將一個(gè)空間金字塔池化(spatial pyramid pooling,SPP)層添加在卷積層和全連接層之間,從而可以不用對候選區(qū)域進(jìn)行縮放就能進(jìn)行任意比例區(qū)域的特征提取.同時(shí)由于SPPNet 是將整個(gè)圖片送入卷積神經(jīng)網(wǎng)絡(luò)提取特征,減少了候選區(qū)域的重復(fù)計(jì)算.這些改進(jìn)使得SPP-Net 算法比R-CNN 算法檢測速度提高24–102 倍,同時(shí)在PASCAL VOC 2007 數(shù)據(jù)集上的mAP 提高到59.2%.
SPP-Net 仍然存在以下問題:
1)訓(xùn)練過程仍然是多階段的,步驟繁雜(微調(diào)網(wǎng)絡(luò)+訓(xùn)練SVM+訓(xùn)練邊框回歸器).
2)微調(diào)算法不更新SPP 層之前的卷積層參數(shù),不能有效地調(diào)整參數(shù)權(quán)重,限制了準(zhǔn)確率.
3)分類器使用SVM,無法實(shí)現(xiàn)端到端訓(xùn)練.
3.1.3 Fast R-CNN
結(jié)合了R-CNN和SPP-Net 各自的特點(diǎn),Girshick等于2015年又提出了Fast R-CNN[17].Fast R-CNN的網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示,Fast R-CNN 將整幅圖像和候選區(qū)域作為輸入,經(jīng)過卷積層提取到特征圖,用感興趣池化層(region of interest,RoI)代替了SPP-Net的空間金字塔池化層來輸出特征圖,然后輸入到全連接層.Fast R-CNN 使用Softmax 代替了SVM的二分類,通過多任務(wù)的方式去訓(xùn)練整個(gè)網(wǎng)絡(luò),骨干網(wǎng)絡(luò)則使用VGG-16代替AlexNet,在一個(gè)模型中將特征提取、目標(biāo)分類和位置回歸都整合到一起,方便進(jìn)行訓(xùn)練,同時(shí)提高了檢測精度和速度.在PASCAL VOC 2007 數(shù)據(jù)集上,Fast R-CNN的mAP 達(dá)到68%.但是由于Fast R-CNN的候選區(qū)域建議上選用的算法仍是只能利用CPU 運(yùn)行的選擇性搜索算法,這限制了檢測速度,仍舊無法實(shí)現(xiàn)實(shí)時(shí)檢測.
圖5 Fast R-CNN 網(wǎng)絡(luò)結(jié)構(gòu)圖
3.1.4 Faster R-CNN
Fast R-CNN的論文發(fā)布不久,2015年Ren 等[18]針對選擇性搜索算法提取候選區(qū)域較慢的問題,提出了Faster R-CNN,在該論文中首次提出了區(qū)域建議網(wǎng)絡(luò)(region proposal network,RPN)來取代選擇性搜索算法.Faster R-CNN 目標(biāo)檢測框架如圖6所示,模型中的RPN 中設(shè)計(jì)了多參考窗口機(jī)制,使得Faster R-CNN可以在同一網(wǎng)絡(luò)中,完成候選區(qū)域推薦、特性提取和定位并分類,大大提高了訓(xùn)練效率.Faster R-CNN 是第一個(gè)兼顧端到端訓(xùn)練和GPU 上實(shí)時(shí)性的目標(biāo)檢測算法,在PASCAL VOC 2007 數(shù)據(jù)集上的mAP 提升至78%,同時(shí)速度由R-CNN的0.025 FPS 提高到17 FPS (640×480 像素).Faster R-CNN 仍然存在一些缺點(diǎn),由于anchor 機(jī)制的存在,其對小目標(biāo)的檢測效果并不理想.
圖6 Faster R-CNN 目標(biāo)檢測框架
3.1.5 FPN
在2017年,Lin 等[19]又在Faster R-CNN的基礎(chǔ)上提出了特征金字塔網(wǎng)絡(luò)(FPN)檢測算法.FPN的模型結(jié)構(gòu)如圖7所示,其主要?jiǎng)?chuàng)新點(diǎn)是加入了多層特征和特征融合,原先的目標(biāo)檢測算法只對語義信息豐富的頂層特征進(jìn)行檢測,但是頂層特征的目標(biāo)位置信息較少;而底層特征恰好與之相反,包含了明確的位置信息,但是語義信息較少.FPN的做法是在網(wǎng)絡(luò)前饋結(jié)束后,從最頂層開始逐層與下層的特征圖融合,通過分治的方式從而可以在網(wǎng)絡(luò)的不同深度引出檢測端以便對不同尺度的目標(biāo)進(jìn)行檢測,大幅提升了小目標(biāo)物體的檢測效果.由于FPN 只是做了一些網(wǎng)絡(luò)連接的優(yōu)化,基本不增加網(wǎng)絡(luò)的計(jì)算量,因此在規(guī)模更大的MS-COCO數(shù)據(jù)集上取得了當(dāng)時(shí)最佳的檢測效果.
圖7 FPN 模型
3.1.6 Mask R-CNN
2017年,He 等提出Mask R-CNN[20],添加了Mask分支,是一個(gè)結(jié)合了圖像語義分割和目標(biāo)檢測的通用網(wǎng)絡(luò).Mask R-CNN的網(wǎng)絡(luò)結(jié)構(gòu)如圖8所示,通過使用RoI Align 層替換Faster R-CNN的RoI Pooling 層,加入線性插值算法避免了特征圖和原始圖像由于RoI 池的整數(shù)量化導(dǎo)致的偏差問題,讓每個(gè)感受野取得的特征能更好地與原圖感受野區(qū)域?qū)R,從而提高了檢測精度.Mask R-CNN 在MS-COCO 數(shù)據(jù)集上的mAP 達(dá)到了39.8%.但是由于Mask R-CNN 加入了分割分支,因此計(jì)算開銷比Faster R-CNN 大.
圖8 Mask R-CNN 網(wǎng)絡(luò)結(jié)構(gòu)圖
3.1.7 雙階段目標(biāo)檢測算法對比
雙階段目標(biāo)檢測算法發(fā)展迅速,檢測精度也在不斷提高,但是自身體系結(jié)構(gòu)的問題限制了檢測速度.雙階段目標(biāo)檢測算法的骨干網(wǎng)絡(luò)以及在主流數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果如表1所示,算法的優(yōu)點(diǎn)/創(chuàng)新點(diǎn)和缺點(diǎn)以及適用場景如表2所示.使用不同的輸入圖像、骨干網(wǎng)絡(luò)、硬件設(shè)施會(huì)對實(shí)驗(yàn)結(jié)果有一定影響,但是總體來說算法性能的對比還是符合預(yù)期的.
表1 雙階段目標(biāo)檢測算法性能對比
表2 雙階段目標(biāo)檢測算法的優(yōu)缺點(diǎn)及適用場景
單階段目標(biāo)檢測算法與雙階段目標(biāo)檢測算法最大的不同之處在于前者沒有候選區(qū)域推薦階段,訓(xùn)練過程也相對簡單,可以在一個(gè)階段直接確定目標(biāo)類別并得到位置檢測框.代表算法有YOLO 系列、SSD 系列、RetinaNet.
3.2.1 YOLO 系列
YOLO (you only look once) 是由Redmon 等于2015年提出的,是深度學(xué)習(xí)領(lǐng)域第一個(gè)單級檢測器[21].YOLO 算法的最大優(yōu)勢就是處理速度快,其增強(qiáng)版本在GPU 上的速度達(dá)到了45 FPS,快速版本甚至可以達(dá)到155 FPS.從YOLO的名字(你只需要看一次)可以看出其有著完全不同的檢測方式,YOLO的網(wǎng)絡(luò)流程如圖9所示,通過使用單個(gè)神經(jīng)網(wǎng)絡(luò)直接將整張圖片劃分為成S×S的網(wǎng)格單元,判定預(yù)測目標(biāo)的中心是否落在網(wǎng)格中,讓網(wǎng)格來決定預(yù)測對象類別并給出相應(yīng)的置信度,使用閾值篩選去除目標(biāo)出現(xiàn)概率較低的目標(biāo)窗口,最后使用NMS 去除冗余窗口即可.
圖9 YOLO 網(wǎng)絡(luò)流程圖
YOLO 算法雖然速度較快,但也存在以下幾個(gè)明顯的缺點(diǎn):
(1)YOLO 劃分的網(wǎng)格最后只會(huì)選擇IoU 最高的邊界框作為輸出,因此劃分的網(wǎng)格最多只會(huì)檢測出一個(gè)目標(biāo),如果網(wǎng)格中包含多個(gè)小型目標(biāo)(如鳥群這類目標(biāo)),YOLO 只能檢測出一個(gè).
(2)YOLO 沒有解決多尺度窗口的問題,相比Faster R-CNN,其小目標(biāo)檢測效果較差,定位準(zhǔn)確度也不夠優(yōu)秀.
YOLOv2[22]相比前一版本,主要改進(jìn)點(diǎn)是提出了聯(lián)合訓(xùn)練算法,其基本思想是使用兩種數(shù)據(jù)集同時(shí)對檢測器進(jìn)行訓(xùn)練,檢測數(shù)據(jù)集和分類數(shù)據(jù)集,在檢測數(shù)據(jù)集上來定位物體的位置,而分類數(shù)據(jù)集則用來增加檢測器的識別的物體種類.YOLOv2 在保持YOLO處理速度的同時(shí),定位更精準(zhǔn),且可以識別9000 種不同對象,因此又被稱為YOLO9000.
YOLOv3[23]的特色是引入了FPN 來實(shí)現(xiàn)多尺度預(yù)測,同時(shí)還使用了更加優(yōu)秀的基礎(chǔ)網(wǎng)絡(luò)Darknet-53和二值交叉熵?fù)p失函數(shù)(binary cross-entropy loss),并且可以通過改變模型的網(wǎng)絡(luò)結(jié)構(gòu)來實(shí)現(xiàn)速度與精度的平衡.
YOLOv4[24]是YOLO 系列的一個(gè)重大里程碑,在MS-COCO 數(shù)據(jù)集上的mAP 達(dá)到了43.5%,速度也達(dá)到了驚人的65 FPS.如此大的性能提升得益于全方位的改進(jìn).YOLOv4 引入CSPDarknet-53 提取特征,加入了SPP 網(wǎng)絡(luò)來提高圖像提取效果,使用了Mish 激活函數(shù),還采用Mosaic 做數(shù)據(jù)增強(qiáng),標(biāo)簽平滑防止過擬合等措施,這些改進(jìn)也讓YOLOv4 成為一個(gè)極其高效強(qiáng)大的目標(biāo)檢測器.
3.2.2 SSD 系列
Liu 等[25]于2015年提出的SSD 算法結(jié)合了YOLO檢測速度快和Faster R-CNN 定位精準(zhǔn)的優(yōu)勢.SSD的網(wǎng)絡(luò)結(jié)構(gòu)如圖10所示,其主要?jiǎng)?chuàng)新是引入了多參考和多分辨率檢測技術(shù),不同層的網(wǎng)絡(luò)檢測尺度不同的對象,對于小目標(biāo)的檢測效果有了大大的提升.除此之外,在訓(xùn)練SSD的過程中,Liu 等[25]為了解決難樣本聚焦問題引入了難樣本挖掘技術(shù).SSD 在PASCAL VOC 2007上的mAP為79.8%,PASCAL VOC 2012 上的mAP為78.5%,MS-COCO 上的mAP為28.8%,檢測速度和精度方面取得了很好的平衡.
圖10 SSD300 網(wǎng)絡(luò)結(jié)構(gòu)圖
DSSD[26]使用ResNet101 作為骨干網(wǎng)絡(luò)以便提取更深層次的特征,同時(shí)增加了反卷積模塊(deconvolutional module)將原始特征圖與上采樣后的特征圖進(jìn)行融合,并且在預(yù)測階段引入殘差單元優(yōu)化分類和候選框回歸.通過這些優(yōu)化,DSSD 在對小目標(biāo)物體的檢測效果大大提升,但速度上則遜于SSD 算法.
FSSD[27]是基于SSD和FPN 思想的結(jié)合,為了解決定位和識別的語義矛盾,需要將淺層的細(xì)節(jié)特征和高層的語義特征結(jié)合起來,其基本做法是把各個(gè)水平的特征進(jìn)行連接,然后融合特征生成特征金字塔.FSSD在MS-COCO 數(shù)據(jù)集上的mAP 達(dá)到了31.8%,稍弱于使用更優(yōu)秀骨干網(wǎng)絡(luò)ResNet101的DSSD,但明顯優(yōu)于同樣使用VGGNet的Faster R-CNN,且在小目標(biāo)上的檢測效果是最優(yōu)的.
3.2.3 RetinaNet
單階段目標(biāo)檢測器雖然在速度上明顯快于基于候選區(qū)域推薦的雙階段目標(biāo)檢測器,但是其精度上卻一直無法媲美雙階段目標(biāo)檢測器.Lin 等認(rèn)為導(dǎo)致一體化卷積神經(jīng)網(wǎng)絡(luò)精度不夠高的真正原因在于圖像中的目標(biāo)和背景層次的不匹配不均衡,于是在2017年提出了RetinaNet[28]來解決這一問題.RetinaNet的模型結(jié)構(gòu)如圖11所示,RetinaNet 通過引入一個(gè)聚焦損失(focal loss)函數(shù),重構(gòu)了標(biāo)準(zhǔn)交叉熵?fù)p失函數(shù),使得檢測器在訓(xùn)練過程中會(huì)更加注重分類困難的樣本.Focal loss的引入解決了實(shí)例樣本不平衡的問題,實(shí)現(xiàn)了一個(gè)精度可以媲美雙階段目標(biāo)檢測器的檢測框架.
圖11 RetinaNet 模型
3.2.4 單階段目標(biāo)檢測算法對比
單階段目標(biāo)檢測算法提出雖然晚于雙階段目標(biāo)檢測算法,但是由于其結(jié)構(gòu)相對簡單、檢測速度優(yōu)越,因此同樣受到了許多研究人員的關(guān)注.一些單階段目標(biāo)檢測算法通過引入雙階段目標(biāo)檢測算法的方法如FPN、改變骨干網(wǎng)絡(luò)、引入損失函數(shù)如focal loss 等措施提高了檢測效果,使檢測精度逐漸可以媲美雙階段目標(biāo)檢測算法.單階段目標(biāo)檢測算法的骨干網(wǎng)絡(luò)以及在主流數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果如表3所示,算法的優(yōu)點(diǎn)/創(chuàng)新點(diǎn)和缺點(diǎn)以及適用場景如表4所示.
表3 單階段目標(biāo)檢測算法性能對比
表4 單階段目標(biāo)檢測算法的優(yōu)缺點(diǎn)及適用場景
3.3.1 NAS-FPN
2019年,谷歌大腦團(tuán)隊(duì)提出了NAS-FPN (neural architecture search feature pyramid network)[29].NASFPN 是采用神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索發(fā)現(xiàn)的一種特征金字塔結(jié)構(gòu),同過自頂向下和自下向上的連接來進(jìn)行不同尺度的特征融合.搜索的過程中,架構(gòu)的擴(kuò)展是通過FPN 重復(fù)N次后連接到一起形成的.傳統(tǒng)的FPN 連接都是手工設(shè)計(jì)的,而谷歌大腦團(tuán)隊(duì)通過使用強(qiáng)化學(xué)習(xí)的方法在給定的搜索空間內(nèi)不斷訓(xùn)練網(wǎng)絡(luò),控制器使用搜索空間中的子模型的準(zhǔn)確度作為更新網(wǎng)絡(luò)參數(shù)的獎(jiǎng)勵(lì)信號,經(jīng)過不斷的反饋調(diào)整,最終找到給定搜索空間中最好的模型架構(gòu).在MS-COCO 測試集上的結(jié)果顯示,使用AmoebaNet[30]骨干網(wǎng)絡(luò)的NAS-FPN 達(dá)到48.3% mAP,檢測速度和精度都超越了Mask R-CNN.
3.3.2 EfficientDet
隨著目標(biāo)檢測技術(shù)的不斷進(jìn)步,先進(jìn)的目標(biāo)檢測器所需的硬件資源也越來越昂貴.針對不同場景下的資源約束,谷歌團(tuán)隊(duì)在2019年11月發(fā)表的論文中提出了EfficientDet[31].EfficientDet 是一系列目標(biāo)檢測算法的總稱,包含8 個(gè)算法D0–D7,在通常的資源約束下可以達(dá)到當(dāng)時(shí)最好的檢測結(jié)果.EfficientDet的主要?jiǎng)?chuàng)新有兩點(diǎn),首先提出了一種可以簡單、快速地進(jìn)行多尺度特征融合的加權(quán)雙向特征金字塔網(wǎng)絡(luò)(BiFPN).其次,通過一種復(fù)合特征金字塔網(wǎng)絡(luò)縮放方法,統(tǒng)一縮放所有模型的分辨率、深度和寬度、特征網(wǎng)絡(luò)和定位與分類預(yù)測網(wǎng)絡(luò),使得EfficientDet 系列參數(shù)量比之前傳統(tǒng)的目標(biāo)檢測算法減少了4–9 倍,FLOPs 縮小了12–42 倍.在單模型和單尺度的情況下,EfficientDet-D7在MS-COCO 數(shù)據(jù)集上AP 達(dá)到了最先進(jìn)的55.1%.
3.3.3 YOLOF
之前的研究一般認(rèn)為FPN的主要功能是可以進(jìn)行多級特征的融合,因此大多數(shù)學(xué)者的研究重點(diǎn)都在于實(shí)現(xiàn)可以更加高效地進(jìn)行特征融合的網(wǎng)絡(luò),如NASFPN和EfficientDet 中的BiFPN,而忽視了FPN的另一個(gè)重要特性:分治策略.基于分治優(yōu)化的思想,Chen 等[32]使用了單層特征圖來替代復(fù)雜的特征金字塔,設(shè)計(jì)出了YOLOF (you only look one-level feature)檢測框架.YOLOF 通過設(shè)計(jì)了兩個(gè)核心組件,膨脹編碼器(dilated encoder)和均衡匹配策略(uniform matching),大大地提高了檢測性能.在MS-COCO 數(shù)據(jù)集上的結(jié)果表明,在檢測精度相當(dāng)?shù)那闆r下,YOLOF的檢測速度比RetinaNet 快了2.5 倍,比YOLOv4 快了13%.同時(shí)由于YOLOF 沒有Transformer 層,YOLOF的訓(xùn)練次數(shù)也比同種類型的單層特征圖算法DETR[33]少了7 倍.
3.3.4 最新出現(xiàn)的目標(biāo)檢測算法對比
除了一些經(jīng)典的目標(biāo)檢測算法,近年來通過應(yīng)用深度學(xué)習(xí)領(lǐng)域的新方法新技術(shù),出現(xiàn)了一些檢測精度和速度都較高的目標(biāo)檢測算法.這些檢測算法的骨干網(wǎng)絡(luò)以及在主流數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果如表5所示,優(yōu)點(diǎn)/創(chuàng)新點(diǎn)和缺點(diǎn)以及適用場景如表6所示.
表5 最新出現(xiàn)的目標(biāo)檢測算法性能對比
表6 最新出現(xiàn)的目標(biāo)檢測算法的優(yōu)缺點(diǎn)及適用場景
目標(biāo)檢測技術(shù)經(jīng)過長時(shí)間的發(fā)展,已經(jīng)在許多領(lǐng)域得到了廣泛的應(yīng)用,主要包括行人檢測、人臉檢測、文本檢測、交通標(biāo)志及信號燈檢測和遙感圖像檢測等重要領(lǐng)域.
行人檢測(pedestrian detection)研究具有悠久的歷史,早在20世紀(jì)90年代就有學(xué)者開始研究這一問題.行人檢測的難點(diǎn)主要在于檢測目標(biāo)同時(shí)具有動(dòng)態(tài)和靜態(tài)的特點(diǎn),同時(shí)也受到外界環(huán)境如背景、光照的影響,導(dǎo)致許多目標(biāo)檢測算法在應(yīng)用到行人檢測領(lǐng)域的效果并不理想.目前主流的行人檢測算法主要分為基于全局特征、基于人體部位和基于立體視覺的方法.基于全局特征的典型算法如Dalal 等[34]提出的HOG,在當(dāng)時(shí)的MIT 行人數(shù)據(jù)集上表現(xiàn)非常突出.基于人體部位的方法如Tian 等[35]提出了deep parts,其基本思想是把人體的各個(gè)部位進(jìn)行分割,分別檢測后再合并,有效解決了遮擋的問題.基于立體視覺的檢測方法如Chen等[36]提出通過多光譜相機(jī)采集圖像并提取圖像中目標(biāo)的三維信息來定位行人.
目標(biāo)檢測的另一個(gè)非常常見的應(yīng)用領(lǐng)域是人臉檢測.人臉檢測的需求最初來源于人臉識別,逐步擴(kuò)展到視頻處理、圖像檢索、生物驗(yàn)證等方面.人臉檢測一直以來都受到人們熱切的關(guān)注,重要的計(jì)算機(jī)視覺領(lǐng)域會(huì)議ICIP、CVPR 等每年都會(huì)有大量有關(guān)人臉檢測的論文發(fā)表.人臉檢測的主要難點(diǎn)在于兩個(gè)方面:一是人臉自身存在的變化,如膚色、臉型、表情等;二是外在條件的差異如拍攝角度、光照、圖像的成像條件等.Liang 等[37]提出了通過反復(fù)曝光生成模塊(recurrent exposure generation,REG)和多重曝光檢測模塊(multiexposure detection,MED)結(jié)合來解決非均勻光照和圖像噪聲問題,改善了人臉在弱光條件下的檢測問題.在人臉檢測性能上,Zhang 等[38]參考了特征金字塔網(wǎng)絡(luò)的思想提出了特征集聚網(wǎng)絡(luò)(feature agglomeration networks,FANet),實(shí)現(xiàn)了在GPU 上實(shí)時(shí)檢測VGA 分辨率的人臉圖像.
對于文本檢測,主要包含兩個(gè)過程:文本定位和文本識別.文本檢測的挑戰(zhàn)在于文本有不同的字體、顏色、語言等,除此之外文本的透視失真以及模糊離散化也增加了文本識別的難度.目前的文本檢測方法主要有步進(jìn)檢測和綜合檢測兩種.步進(jìn)檢測是按照一定順序逐步推進(jìn)的檢測方法,由分割字符,候選區(qū)域提取驗(yàn)證,字符組劃分,單詞識別等步驟組成.步進(jìn)檢測過程中可以進(jìn)行背景濾波,從而降低后續(xù)處理的難度.但是其缺點(diǎn)是需要確定較適宜的參數(shù),否則會(huì)引起誤差累積.相比較而言,綜合檢測是在統(tǒng)一的框架下進(jìn)行文本定位、分組和識別,因此降低了累積誤差,易于集成,其缺點(diǎn)是計(jì)算開銷大,因?yàn)橐獙Υ罅孔址惡秃蜻x框進(jìn)行運(yùn)算推理.針對文本因角度變換導(dǎo)致的歧義問題,Zhu 等[39]提出了TextMountain 來確立文本中心邊界概率和定位文本中心方向,檢測精度和效率都有了很大的提升.Liao 等[40]提出了可微分二值化(differentiable binarization,DB)用于基于分割的場景文本檢測,該方法可以自動(dòng)適應(yīng)場景設(shè)置閾值進(jìn)行二值化,簡化了后期處理,同時(shí)提高了檢測性能.
近些年來,隨著自動(dòng)駕駛技術(shù)的火熱,交通標(biāo)志及信號燈的檢測也引起了許多學(xué)者的研究興趣.交通標(biāo)志及信號燈檢測的主要困難包括:
(1)強(qiáng)光或夜間光照的影響;
(2)天氣如雨雪帶來的干擾;
(3)交通環(huán)境場景復(fù)雜;
(4)車載攝像頭由于運(yùn)動(dòng)導(dǎo)致拍下的畫面模糊.
交通標(biāo)志與燈光檢測技術(shù)可以劃分為兩大類,傳統(tǒng)的檢測方法和基于深度學(xué)習(xí)的檢測方法.傳統(tǒng)的檢測方法通?;陬伾?顯著性目標(biāo)檢測,形態(tài)濾波,邊緣與輪廓分析,這些方法在復(fù)雜的條件下往往會(huì)失效[41].基于深度學(xué)習(xí)的方法如Faster R-CNN和SSD 已經(jīng)具有相當(dāng)高的精度,同時(shí)也出現(xiàn)了一些新的技術(shù),如Fan等[42]提出了將注意力機(jī)制用于多尺度交通標(biāo)志檢測,檢測效果達(dá)到了一個(gè)更高的水準(zhǔn).
遙感目標(biāo)檢測技術(shù)在城市規(guī)劃、軍事偵察、農(nóng)業(yè)生產(chǎn)和航空航天等領(lǐng)域都有著廣泛的應(yīng)用.主要檢測目標(biāo)包括道路、機(jī)場、港口、湖泊、飛機(jī)、船舶等.
遙感圖像由于其特殊性質(zhì),存在以下困難.
(1)視角多樣.遙感圖像只能通過俯拍得到,目標(biāo)旋轉(zhuǎn)方向各有不同.
(2)尺度變化.同一類目標(biāo)由于海拔高度等原因大小可能存在差異.
(3)背景復(fù)雜.遙感圖像背景比較多樣化,比如城市、叢林、沙漠、山地等.
最近幾年,基于深度學(xué)習(xí)的遙感目標(biāo)檢測也正在逐步解決這些困難.針對遙感圖像中目標(biāo)較小的問題,Long 等[43]提出了一種使用非極大值抑制與無監(jiān)督評分邊框回歸(unsupervised score-based bounding box regression,USB-BBR)相結(jié)合的方法來精準(zhǔn)的定位小目標(biāo)物體.針對大規(guī)模遙感圖像中的多尺度和任意方向的遙感目標(biāo)檢測,Fu 等[44]在Faster R-CNN的基礎(chǔ)上,使用定向邊界框替代軸對齊邊界框,提出了確定方向的區(qū)域建議網(wǎng)絡(luò)(oriented region proposal network,RPN-O)實(shí)現(xiàn)了一種旋轉(zhuǎn)感知的目標(biāo)檢測器.
視頻目標(biāo)檢測需要對視頻中每一幀圖片中的可能存在目標(biāo)進(jìn)行正確的定位和分類.不同于圖像目標(biāo),視頻中的目標(biāo)存在著運(yùn)動(dòng)模糊、遮擋、場景變化等因素,使得這項(xiàng)任務(wù)難以取得很好的效果.對于信息密度大的視頻來說,視頻存在的大量冗余對檢測的實(shí)時(shí)性也是一個(gè)巨大挑戰(zhàn).研究移動(dòng)目標(biāo)和結(jié)合時(shí)序定位視頻數(shù)據(jù)的主體目標(biāo)是未來研究的主要方向.
顯著性目標(biāo)檢測研究最早開始于1998年Itti 等[45]發(fā)表的論文之后,隨著近年來圖像描述技術(shù)的興起開始受到熱烈的關(guān)注.顯著性檢測指的是根據(jù)顯著特征,從輸入圖片中定位最受關(guān)注的物體.深度學(xué)習(xí)用于顯著性目標(biāo)檢測的方法主要有兩類,使用多層感知機(jī)(MLPs)方法,另一類則是通過完全卷積神經(jīng)網(wǎng)絡(luò)(FCN)進(jìn)行.多層感知機(jī)方法通常是將輸入圖片劃分成單獨(dú)的多尺度小區(qū)域,使用卷積神經(jīng)網(wǎng)絡(luò)提取圖像中的高級特征,最后將獲取的高級特征反饋到多層感知機(jī)進(jìn)行顯著性確認(rèn).值得一提的是,由于多層感知機(jī)的使用會(huì)使卷積神經(jīng)網(wǎng)絡(luò)中的空間信息丟失.第二類基于完全卷積神經(jīng)網(wǎng)絡(luò)的顯著目標(biāo)檢測采取另一種做法,完全卷積神經(jīng)網(wǎng)絡(luò)最初是為了解決語義分割問題的,但是顯著對象本質(zhì)上也是一種分割任務(wù),因此完全卷積神經(jīng)網(wǎng)絡(luò)被引入,且不同于多層感知機(jī),完全卷積神經(jīng)網(wǎng)絡(luò)具有保存空間信息的能力.
2014年Goodfellow 等[46]提出了一種無監(jiān)督的模型對抗生成網(wǎng)絡(luò)(GAN).GAN 主要有兩個(gè)組件,生成器和判別器.生成器用于獲得原始數(shù)據(jù)的特征分布以生成新的數(shù)據(jù)分布,而判別器則是判定生成的新數(shù)據(jù)是否是真實(shí)的,兩種組件互相學(xué)習(xí)共同進(jìn)步.2017年,Wang 等[47]在論文中首次將GAN的基本思想引入目標(biāo)檢測領(lǐng)域,其主要目的是增加訓(xùn)練數(shù)據(jù)讓檢測器能夠?qū)W習(xí)到一些在通常的數(shù)據(jù)集中很難出現(xiàn)的特征,通過生成檢測器難以識別的樣例,從而提高模型的泛化能力.實(shí)驗(yàn)結(jié)果表明,隨著檢測器的性能提升,生成對抗網(wǎng)絡(luò)生成數(shù)據(jù)的質(zhì)量也有所提高,兩者通過互相博弈提高了檢測性能.
基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)因其巨大的優(yōu)勢,如泛化能力強(qiáng)、復(fù)雜場景下效果出眾、應(yīng)用前景廣闊等已經(jīng)成為一個(gè)計(jì)算機(jī)視覺領(lǐng)域的一個(gè)熱門方向.行人檢測、人臉檢測、文字檢測、交通標(biāo)志及信號燈檢測和遙感圖像檢測等都是目標(biāo)檢測的常見應(yīng)用場景.通過對不同方式的目標(biāo)檢測算法的對比可以看出,雙階段目標(biāo)檢測算法先使用算法提取候選區(qū)域,然后對候選框目標(biāo)進(jìn)行二次修正,精度較高且定位準(zhǔn)確,但是訓(xùn)練復(fù)雜計(jì)算量大,難以實(shí)現(xiàn)實(shí)時(shí)檢測;單階段目標(biāo)檢測算法沒有候選區(qū)域推薦過程,在一個(gè)階段就能確定目標(biāo)類別并定位目標(biāo),模型簡單且速度快,但是對小目標(biāo)和密集目標(biāo)的檢測精度有待提高.近幾年來,視頻目標(biāo)檢測、顯著目標(biāo)檢測和基于GAN的目標(biāo)檢測都有良好的發(fā)展勢頭,新出現(xiàn)的目標(biāo)檢測算法如NASFPN、EfficientDet、YOLOF 等的提出也為目標(biāo)檢測領(lǐng)域的發(fā)展提供了新的思路.隨著人們對基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)的進(jìn)一步深入,相信其應(yīng)用領(lǐng)域會(huì)更加廣泛,為人類的生存發(fā)展帶來更加巨大的效益.