郭慶梅,劉寧波,王中訓(xùn),孫艷麗
(1. 煙臺(tái)大學(xué)物理與電子信息學(xué)院,山東 煙臺(tái) 264005;2. 海軍航空大學(xué)信息融合研究所,山東 煙臺(tái) 264001)
目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)[1]領(lǐng)域中的一個(gè)重要方向,其目的是對(duì)目標(biāo)進(jìn)行定位和分類,即在所給的圖像或視頻中找到所需的目標(biāo)物體,并用邊界框標(biāo)出其位置,判斷出其所屬類別。由于目標(biāo)物體存在差異性與不確定性,使得目標(biāo)檢測(cè)一直以來(lái)都是該領(lǐng)域的核心問(wèn)題之一。早期的目標(biāo)檢測(cè)采用手工設(shè)計(jì)的特征提取方法,檢測(cè)精度并不高,文獻(xiàn)[2]提出的AlexNet成功推動(dòng)了卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)[3]的發(fā)展,文獻(xiàn)[4]提出了基于CNN的目標(biāo)檢測(cè)算法R-CNN,使得檢測(cè)精度有了很大的提升。至此,目標(biāo)檢測(cè)算法主要分為傳統(tǒng)目標(biāo)檢測(cè)算法和基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法兩類[5]。
傳統(tǒng)目標(biāo)檢測(cè)算法是將人為設(shè)計(jì)的目標(biāo)特征和機(jī)器學(xué)習(xí)的分類器進(jìn)行綜合,文獻(xiàn)[6]提出可用于雜亂場(chǎng)景的靜態(tài)圖像目標(biāo)檢測(cè),直接從圖像中學(xué)習(xí)Haar特征,利用支持向量機(jī)(support vector machine,SVM)[7]對(duì)目標(biāo)進(jìn)行分類,從而實(shí)現(xiàn)目標(biāo)檢測(cè)。文獻(xiàn)[8]提出主要用于人臉檢測(cè)的VJ檢測(cè)器,利用積分圖來(lái)計(jì)算任何尺度或位置的Haar特征,通過(guò)AdaBoost[9]方法學(xué)習(xí)分類器,以級(jí)聯(lián)的方式進(jìn)行訓(xùn)練,實(shí)現(xiàn)實(shí)時(shí)人臉檢測(cè),在相同的分類準(zhǔn)確度下,速度提升了幾十倍甚至上百倍。文獻(xiàn)[10]將1999年提出的尺度不變特征變換(scale invariant feature transform,SIFT)進(jìn)一步整理和優(yōu)化,結(jié)合位置、所處尺度以及方向確定特征區(qū)域,提取的特征能夠在光線和噪聲等因素下有很好的魯棒性。文獻(xiàn)[11]設(shè)計(jì)了方向梯度直方圖(histogram of oriented gradient,HOG),通過(guò)圖像部分區(qū)域的HOG獲得特征,結(jié)合SVM實(shí)現(xiàn)檢測(cè)[12]。文獻(xiàn)[13]設(shè)計(jì)了可變形的組件模型(deformable parts model,DPM),采用滑動(dòng)窗口進(jìn)行目標(biāo)定位、HOG組件進(jìn)行特征提取、SVM進(jìn)行分類,具有良好的檢測(cè)效果。
傳統(tǒng)目標(biāo)檢測(cè)算法存在的缺點(diǎn)有計(jì)算量大、效率低、魯棒性不好、針對(duì)性強(qiáng)、局限性大、泛化性差以及檢測(cè)效果較差等。隨著人工智能的發(fā)展,傳統(tǒng)目標(biāo)檢測(cè)逐漸成為過(guò)去式,深度神經(jīng)網(wǎng)絡(luò)迅速發(fā)展,在提高準(zhǔn)確度、降低計(jì)算量等方面都有了很大進(jìn)步[14]。
隨著CNN的改進(jìn),基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法也有了很大的提升,在目標(biāo)識(shí)別、智慧交通等方面有著重要作用。目前出現(xiàn)的算法大致分為兩類:一類是基于候選區(qū)域的雙階段(two-stage)目標(biāo)檢測(cè)算法;另一類是基于回歸的單階段(one-stage)目標(biāo)檢測(cè)算法[15]。這兩類算法主要的區(qū)別為是否有候選區(qū)域目標(biāo)推薦的步驟[16]。目標(biāo)檢測(cè)算法發(fā)展時(shí)間軸如圖1所示。
圖1 目標(biāo)檢測(cè)算法發(fā)展時(shí)間軸Fig.1 Timeline of object detection algorithm development
2.1.1R-CNN算法
文獻(xiàn)[4]在2014年提出了R-CNN,該算法的創(chuàng)新點(diǎn):1) 在候選區(qū)域使用CNN進(jìn)行自下而上的特征提取;2) 對(duì)于數(shù)據(jù)集不足的情況,使用遷移學(xué)習(xí),提高了檢測(cè)準(zhǔn)確率和模型性能,解決了對(duì)小樣本難訓(xùn)練和過(guò)擬合的問(wèn)題,證明了CNN具有可遷移性。如圖2所示,該算法的主要流程:1) 輸入已標(biāo)注的圖像;2) 使用選擇性搜索算法生成候選區(qū)域;3) 將得到的候選區(qū)域進(jìn)行裁剪和縮放到規(guī)定尺寸,輸入到CNN中進(jìn)行特征提取;4) 將提取到的特征輸入SVM分類器進(jìn)行分類,使用非極大值抑制(non-maximum suppression,NMS)得到候選框,使用邊界框回歸對(duì)NMS處理后的候選框進(jìn)行位置回歸操作,得到準(zhǔn)確率最高最合適的候選框。
圖2 R-CNN算法流程Fig.2 R-CNN algorithm flow
2.1.2SPPNet算法
為了解決R-CNN在提取特征時(shí)需要對(duì)所有的候選區(qū)域進(jìn)行提取等問(wèn)題,文獻(xiàn)[17]在2015年提出了可以適應(yīng)不同尺寸圖像輸入的空間金字塔網(wǎng)絡(luò)(spatial pyramid pooling network,SPPNet)。該算法在網(wǎng)絡(luò)中的最后一個(gè)卷積層和全連接層之間接入空間金字塔池化層(spatial pyramid pooling,SPP)[18],結(jié)構(gòu)如圖3所示,目的是為了輸送給全連接層固定大小的特征圖。
圖3 SPP結(jié)構(gòu)Fig.3 SPP architecture
2.1.3Fast R-CNN算法
為了解決R-CNN算法重復(fù)提取特征以及多級(jí)管道訓(xùn)練等問(wèn)題,文獻(xiàn)[19]在2015年提出了Fast R-CNN算法,該算法有四個(gè)創(chuàng)新點(diǎn):1) 不再是多級(jí)管道訓(xùn)練,將SVM分類和BBox回歸兩個(gè)部分都放到了CNN中進(jìn)行訓(xùn)練;2) 改進(jìn)SPP提出更簡(jiǎn)潔的感興趣區(qū)域(region of interest,RoI)池化層,添加了候選框映射功能;3) 使用了多任務(wù)損失,用其來(lái)更新參數(shù),降低了計(jì)算的復(fù)雜度,提高了檢測(cè)速度和精度;4) 在全連接層中使用了截?cái)嗥娈愔捣纸膺M(jìn)行加速,降低前向傳播的時(shí)間,加速了全連接層網(wǎng)絡(luò)的運(yùn)算。Fast R-CNN算法主要流程如圖4所示。
圖4 Fast R-CNN算法流程Fig.4 Fast R-CNN algorithm flow
2.1.4Faster R-CNN算法
為了解決Fast R-CNN獲得候選區(qū)域時(shí)間復(fù)雜度高等問(wèn)題,文獻(xiàn)[20]提出了Faster R-CNN算法,該算法的創(chuàng)新點(diǎn):1) 使用了區(qū)域建議網(wǎng)絡(luò)(region proposal network,RPN),加入Anchor機(jī)制,將候選區(qū)域、特征提取、分類和回歸融合在一起,實(shí)現(xiàn)了真正的端到端的訓(xùn)練,保證了實(shí)時(shí)性,實(shí)現(xiàn)了訓(xùn)練時(shí)RPN與檢測(cè)網(wǎng)絡(luò)Fast R-CNN共享卷積層,提高了模型的檢測(cè)速度和更高的檢測(cè)精度;2) 使用GPU,提高了運(yùn)行速度。Faster R-CNN主要流程如圖5所示。
圖5 Faster R-CNN算法流程Fig.5 Faster R-CNN algorithm flow
2.1.5R-FCN算法
為了解決Faster R-CNN算法提取特征的Header部分比較重等問(wèn)題,文獻(xiàn)[21]在2016年提出了基于區(qū)域的全卷積網(wǎng)絡(luò)(region based fully convolutional networks,R-FCN)算法。該算法的創(chuàng)新點(diǎn):1) 提出了位置敏感得分圖,解決了分類的平移不變性和回歸的平移可變性之間的矛盾;2) RoI池化層后面的全連接層改用卷積層,提高了檢測(cè)速度;3) 對(duì)RoI加入了空間位置編碼信息,提高了檢測(cè)框的位置精度。R-FCN算法主要流程如圖6所示。
圖6 R-FCN算法流程Fig.6 R-FCN algorithm flow
2.1.6Mask R-CNN算法
文獻(xiàn)[22]在2017年對(duì)Faster R-CNN進(jìn)行優(yōu)化提出了Mask R-CNN算法,主干網(wǎng)絡(luò)在ResNet的基礎(chǔ)上添加了特征圖金字塔網(wǎng)絡(luò)(feature pyramid networks,FPN),即該算法由負(fù)責(zé)目標(biāo)檢測(cè)的Faster R-CNN和負(fù)責(zé)語(yǔ)義分割的FPN組成。該算法的創(chuàng)新點(diǎn):1) RoI池化部分替換為RoI Align,解決了區(qū)域不匹配問(wèn)題;2) 增加Mask網(wǎng)絡(luò)。Mask R-CNN算法主要流程如圖7所示。
圖7 Mask R-CNN算法流程Fig.7 Mask R-CNN algorithm flow
2.1.7Libra R-CNN算法
在目標(biāo)檢測(cè)過(guò)程中,存在一些問(wèn)題:1) 隨機(jī)采樣會(huì)選取大量的簡(jiǎn)單樣本,使得正負(fù)樣本數(shù)量差距大,造成樣本層面不平衡,常使用OHEM方法增加對(duì)復(fù)雜樣本的選取來(lái)解決正負(fù)樣本不平衡的問(wèn)題,使用Focal loss方法可以降低噪聲的影響,對(duì)One-stage目標(biāo)檢測(cè)有效,對(duì)Two-stage目標(biāo)檢測(cè)效果不好;2) 使用FPN和PAN將高層的語(yǔ)義信息和低層的細(xì)節(jié)定位信息進(jìn)行特征融合時(shí),融合后的相鄰分辨率的特征效果很好,但忽略了非相鄰層的特征,并且其語(yǔ)義信息會(huì)在每次融合時(shí)都會(huì)被稀釋一次,造成特征層面不平衡;3) 在訓(xùn)練過(guò)程中需要平衡分類和定位任務(wù),否則會(huì)造成目標(biāo)層面不平衡。
針對(duì)上述因素導(dǎo)致檢測(cè)性能差的問(wèn)題,文獻(xiàn)[23]在2019年提出了Libra R-CNN算法,該算法的創(chuàng)新點(diǎn):1) 使用交并比(intersection over union,IoU)平衡采樣來(lái)解決樣本層面不平衡問(wèn)題,即采用分箱操作,利用IoU將正負(fù)樣本均衡分配。2) 使用平衡特征金字塔,結(jié)構(gòu)如圖8所示,解決了特征層面不平衡問(wèn)題,首先將FPN結(jié)構(gòu)輸出的C2和C3層的特征圖進(jìn)行最大池化操作,將C5層的特征圖進(jìn)行雙線性插值操作,統(tǒng)一得到和C4層特征圖大小相等的特征圖;其次將得到的特征求平均值,融合得到一張?zhí)卣鲌D,使用嵌入的高斯非局部注意結(jié)構(gòu)對(duì)特征進(jìn)一步提煉加強(qiáng),提高非相鄰分辨率的特征;最后將特征圖還原到原來(lái)尺寸,分別進(jìn)行add操作得到強(qiáng)化后的特征圖。3) 使用平衡L1損失解決了目標(biāo)層面不平衡,即平衡大樣本和小樣本的梯度。
圖8 平衡特征金字塔Fig.8 Balanced semantic pyramid
2.1.8Grid R-CNN算法
為了能夠進(jìn)行精確的目標(biāo)檢測(cè),文獻(xiàn)[24]在2018年提出了自頂向下的Grid R-CNN算法,該算法的創(chuàng)新點(diǎn):1) 利用網(wǎng)格定位實(shí)現(xiàn)目標(biāo)檢測(cè);2) 提出了一個(gè)多點(diǎn)監(jiān)督機(jī)制,進(jìn)行更準(zhǔn)確的定位;3) 提出了空間信息融合模塊,利用網(wǎng)格點(diǎn)的空間相關(guān)性,相互校準(zhǔn)位置信息;4) 采用擴(kuò)展區(qū)域映射修正輸出熱圖和原始圖片區(qū)域的關(guān)系;5) 可以靈活運(yùn)用到不同的目標(biāo)檢測(cè)框架內(nèi)。Grid R-CNN算法主要流程如圖9所示。
圖9 Grid R-CNN算法流程Fig.9 Grid R-CNN algorithm flow
2.1.9小結(jié)
Two-stage目標(biāo)檢測(cè)將檢測(cè)過(guò)程主要分為兩步:1) 在給出的圖像上找到有目標(biāo)物體的候選區(qū)域;2) 對(duì)候選區(qū)域進(jìn)行分類與回歸操作,得到目標(biāo)檢測(cè)結(jié)果[25]。在區(qū)域提取方面,早期的Two-stage目標(biāo)檢測(cè)算法主要使用選擇性搜索算法,如R-CNN,SPPNet和Fast R-CNN等算法,但速度較慢,實(shí)用性差;Faster R-CNN提出了基于RPN的方法,極大地提高了區(qū)域提取的速度和準(zhǔn)確率。在特征利用方面,提出使用FPN結(jié)構(gòu),將高層的語(yǔ)義信息和低層的空間信息進(jìn)行融合,提高對(duì)小目標(biāo)的檢測(cè)效果,如Mask R-CNN和Libra R-CNN等算法。隨著網(wǎng)絡(luò)的改進(jìn),檢測(cè)精度得到了大幅提升,由于網(wǎng)絡(luò)模型復(fù)雜度提高,導(dǎo)致訓(xùn)練和檢測(cè)速度有所下降,實(shí)時(shí)性差。Two-stage目標(biāo)檢測(cè)算法的性能對(duì)比如表1所示,其中“-”表示原文獻(xiàn)中無(wú)相關(guān)數(shù)據(jù)信息,優(yōu)缺點(diǎn)如表2所示。
表1 Two-stage目標(biāo)檢測(cè)算法性能對(duì)比Tab.1 Performance comparison of Two-stage target detection algorithms
表2 Two-stage目標(biāo)檢測(cè)算法優(yōu)缺點(diǎn)Tab.2 Advantages and disadvantages of Two-stage object detection algorithm
2.2.1OverFeat算法
文獻(xiàn)[26]在2013年提出了OverFeat算法,是One-stage目標(biāo)檢測(cè)的先驅(qū),主要原理是以滑動(dòng)窗口的方式在圖像多尺度區(qū)域的不同位置進(jìn)行圖像分類,以及在相同的卷積層上訓(xùn)練一個(gè)回歸器來(lái)預(yù)測(cè)邊界框的位置。該算法的創(chuàng)新點(diǎn):1) 改進(jìn)AlexNet實(shí)現(xiàn)分類、定位和檢測(cè)的融合;2) 提出offset max-pooling;3) 多尺度預(yù)測(cè);4) 通過(guò)累積預(yù)測(cè)得到邊界框。
該算法給出了準(zhǔn)確模型和快速模型,在準(zhǔn)確模型中,分類錯(cuò)誤率為14.18%;在快速模型中,分類錯(cuò)誤率為16.39%;使用7種準(zhǔn)確率模型組合時(shí),分類錯(cuò)誤率為13.6%。
2.2.2YOLO系列算法
文獻(xiàn)[27]在2016年提出了YOLO (you only look once)算法,該算法的創(chuàng)新點(diǎn):1) 將分類、定位和檢測(cè)融合在一個(gè)網(wǎng)絡(luò)里,速度快;2) 避免將背景判斷為目標(biāo),降低了檢測(cè)錯(cuò)誤率;3) 泛化能力強(qiáng),適應(yīng)性強(qiáng)。
為了解決YOLO檢測(cè)精度低等問(wèn)題,文獻(xiàn)[28]在2017年對(duì)YOLO進(jìn)行了更準(zhǔn)確、更快和更強(qiáng)的改進(jìn),提出了YOLOv2算法。改進(jìn)點(diǎn):1) 在更好方面:去掉隨機(jī)失活,引入批歸一化(batch normalization,BN)來(lái)提高收斂性,mAP提升了2.4%;使用高分辨率圖像微調(diào)分類模型,mAP提升了3.7%;去掉全連接層,使用錨框卷積預(yù)測(cè)邊界框,可以預(yù)測(cè)1 000左右個(gè)邊界框,mAP降低了0.3%,召回率提高了7%;聚類提取先驗(yàn)框尺度,采用K-means聚類方法進(jìn)行聚類分析,提高了泛化能力,mAP提升了4.8%;通過(guò)單元格左上角格點(diǎn)的坐標(biāo)來(lái)預(yù)測(cè)偏移量,達(dá)到對(duì)預(yù)測(cè)邊框的位置的約束,mAP提高了約5%;進(jìn)行多尺度圖像訓(xùn)練;進(jìn)行高分辨率圖像的對(duì)象檢測(cè),mAP提升了1.8%。2) 在更快方面:圖像尺寸為448×448時(shí),訓(xùn)練分類網(wǎng)絡(luò),top-1和top-5準(zhǔn)確率分別為76.5%和93.3%;對(duì)中間層不同尺度的特征進(jìn)行拼接,擁有了細(xì)粒度特征,便于檢測(cè)小目標(biāo)。3) 在更強(qiáng)方面:將ImageNet和COCO聯(lián)合構(gòu)建WordTree進(jìn)行分類數(shù)據(jù)和檢測(cè)數(shù)據(jù)聯(lián)合訓(xùn)練。在數(shù)據(jù)集方面進(jìn)行融合,提出可以實(shí)時(shí)預(yù)測(cè)9 000個(gè)種類的YOLO9000。后續(xù)對(duì)YOLOv2改進(jìn),文獻(xiàn)[29]提出了Fast YOLO,此算法主要是應(yīng)用在嵌入式設(shè)備上的,實(shí)時(shí)性強(qiáng),處理圖像的速度達(dá)到了155 幀/s。
為了提高小目標(biāo)檢測(cè)能力,文獻(xiàn)[30]在2018年對(duì)YOLOv2進(jìn)行改進(jìn),提出了YOLOv3。此算法的創(chuàng)新點(diǎn):1) 主干網(wǎng)絡(luò)是Darknet53,以便能夠獲得更深層次的圖像特征;2) 利用殘差網(wǎng)絡(luò)特征融合,達(dá)到多尺度預(yù)測(cè),在小目標(biāo)檢測(cè)方面有了進(jìn)一步的提升;3) 分類使用logistic算法的二元交叉熵?fù)p失函數(shù),實(shí)現(xiàn)了多目標(biāo)分類;4) 在物體分?jǐn)?shù)和類置信度方面,使用Sigmoid函數(shù),可以將目標(biāo)進(jìn)行類別細(xì)分。后續(xù)有YOLOv3-SPP對(duì)YOLOv3進(jìn)行改進(jìn),加入了SPP模塊實(shí)現(xiàn)了不同尺度的特征融合,在數(shù)據(jù)集COCO上mAP達(dá)到了59.5%,YOLOv3-SPP-ultralytics版本在MS COCO數(shù)據(jù)集上mAP達(dá)到了62.4%。
文獻(xiàn)[31]在2020年對(duì)YOLOv3進(jìn)行改進(jìn),提出了YOLOv4。該算法將框架分為輸入端、Backbone,Neck和Head四部分,該算法創(chuàng)新點(diǎn):1) Neck部分采用SPP和PAN模塊進(jìn)行特征融合;2) 使用CutMix和Mosaic數(shù)據(jù)增強(qiáng)以及DropBlock正則化,減少過(guò)擬合問(wèn)題,提高泛化能力;3) 引入縮放系數(shù),提高了準(zhǔn)確率;4) 優(yōu)化不同目標(biāo)尺度的Anchor;5) 采用CIoU定位損失。
文獻(xiàn)[32]提出了YOLOv5,該系列包含S,M,L,X四個(gè)版本,如圖10所示是YOLOv5S的網(wǎng)絡(luò)結(jié)構(gòu),主要流程:1) 輸入端使用Mosaic數(shù)據(jù)增強(qiáng),同時(shí)減少GPU的使用個(gè)數(shù),使用自適應(yīng)錨框計(jì)算來(lái)得到得分高的Anchor,采用自適應(yīng)縮放將圖片的大小統(tǒng)一固定為一個(gè)合適的尺寸;2) Backbone部分采用New CSP-Darknet53模型,使用Focus模塊完成切片操作,利用CSP1_X進(jìn)行特征融合,利用SPP模塊得到固定長(zhǎng)度輸出;3) Neck部分采用了FPN和PAN模塊,兩者結(jié)合增強(qiáng)了多尺度的語(yǔ)言表達(dá)和強(qiáng)定位信息,CSP2_X對(duì)上一步的特征融合進(jìn)一步加強(qiáng);4) Prediction部分定位損失采用了GIoU_Loss損失函數(shù)。該算法在檢測(cè)速度方面有了很大的提升,是YOLOv4的2倍多,體積也小,比YOLOv4小了90%左右。
圖10 YOLOv5S算法流程Fig.10 YOLOv5S algorithm flow
文獻(xiàn)[33]在2021年提出了YOLOX,該系列有7個(gè)版本,這里主要介紹YOLOX-Darknet53的改進(jìn)之處,其輸入部分是采用Mosaic和Mixup進(jìn)行數(shù)據(jù)增強(qiáng);Neck部分采用FPN進(jìn)行特征融合;Prediction部分采用3個(gè)Decoupled Head提高精度和加快收斂速度,采用Anchor-free減少參數(shù)量,進(jìn)行標(biāo)簽分配時(shí),首先根據(jù)中心點(diǎn)和目標(biāo)框進(jìn)行初步篩選正樣本操作,再用SimOTA進(jìn)行精細(xì)化篩選,使用損失函數(shù)計(jì)算目標(biāo)框和正樣本預(yù)測(cè)框之間的誤差。
2.2.3SqueezeDet算法
文獻(xiàn)[34]在2017年針對(duì)自動(dòng)駕駛需要高精度、實(shí)時(shí)性、小模型和低能耗的任務(wù),提出了SqueezeDet算法,該算法的流程:1) 改進(jìn)YOLO模型,使用層疊卷積濾波器得到高維度低分辨的特征圖,提高了精度,降低了參數(shù)量;2) 提出了ConvDet,得到邊界框和類別;3) 通過(guò)邊界框回歸得到最終的檢測(cè)結(jié)果。優(yōu)點(diǎn)是模型小,并且推理速度更快。
2.2.4SSD系列算法
結(jié)合Faster RCNN高檢測(cè)精度和YOLO高檢測(cè)速度的特點(diǎn),文獻(xiàn)[35]在2016年提出可以保證精度、速度和實(shí)時(shí)性的SSD算法,主干網(wǎng)絡(luò)是修改后的VGG16模型。該算法的創(chuàng)新點(diǎn):1) 采用了多尺度特征圖,提高對(duì)小目標(biāo)檢測(cè)的檢測(cè)能力;2) 在特征圖上設(shè)置多個(gè)不同尺寸和寬高比的先驗(yàn)框,用IoU來(lái)決定哪個(gè)Anchor負(fù)責(zé)哪個(gè)目標(biāo)物體,提高了準(zhǔn)確率;3) 在卷積層中進(jìn)行分類和定位的預(yù)測(cè),降低計(jì)算量。該算法在檢測(cè)速度方面超過(guò)了之前最優(yōu)的YOLO,在檢測(cè)精度方面超過(guò)了之前最優(yōu)的Faster RCNN。SSD算法主要流程如圖11所示。
圖11 SSD算法流程Fig.11 SSD algorithm flow
針對(duì)SSD算法重復(fù)檢測(cè)等問(wèn)題,文獻(xiàn)[36]在SSD基礎(chǔ)上進(jìn)行改進(jìn)并在2017年提出了R-SSD算法,該算法的創(chuàng)新點(diǎn):1) 使用分類網(wǎng)絡(luò)增加不同特征圖層之間的聯(lián)系,降低計(jì)算量;2) 增加特征金字塔中特征圖的個(gè)數(shù),提高對(duì)小目標(biāo)檢測(cè)的能力。
針對(duì)SSD算法獲取較深層語(yǔ)義信息能力差的問(wèn)題,文獻(xiàn)[37]在2017年提出了DSSD算法,該算法的創(chuàng)新點(diǎn):1) 主干網(wǎng)絡(luò)采用ResNet101,以便獲得深層的語(yǔ)義信息;2) 上采樣采用反卷積結(jié)構(gòu),將深層和淺層的特征圖進(jìn)行融合,獲得語(yǔ)義和位置信息;3) 在預(yù)測(cè)模塊部分加入殘差結(jié)構(gòu),提取更深維度的特征,提升對(duì)小目標(biāo)的檢測(cè)能力。
針對(duì)SSD算法難以進(jìn)行特征融合的問(wèn)題,文獻(xiàn)[38]在2017年將SSD和FPN進(jìn)行改進(jìn)提出了將定位和識(shí)別進(jìn)行結(jié)合的F-SSD算法,在SSD上結(jié)合了輕量級(jí)的特征融合模塊,該算法的流程:1) 將SSD分支上不同尺度的特征圖通過(guò)雙線性插值操作調(diào)整到同尺度的特征圖;2) 通過(guò)concat進(jìn)行特征融合,通過(guò)BN進(jìn)行正則化;3) 通過(guò)下采樣模塊生成新的特征金字塔,使用多盒探測(cè)器預(yù)測(cè)目標(biāo)。該算法在精度方面有了顯著的提升。
針對(duì)常見(jiàn)的目標(biāo)檢測(cè)算法先預(yù)訓(xùn)練再微調(diào)的問(wèn)題,文獻(xiàn)[39]在2019年融合SSD和DenseNet的思想提出了可以從頭開(kāi)始訓(xùn)練的DSOD算法,經(jīng)過(guò)大量的實(shí)驗(yàn)得出:1) 使用無(wú)候選目標(biāo)框方法可以從零訓(xùn)練并收斂;2) 借鑒DenseNet的思想,其致密塊與所有塊有連接,可以跳過(guò)連接實(shí)現(xiàn)監(jiān)督信號(hào)的傳遞,淺層也可以受目標(biāo)函數(shù)的監(jiān)督,同時(shí)增加致密塊的數(shù)量;3) 使用stem模塊減少信息損失,提升檢測(cè)效果;4) 融合多個(gè)階段網(wǎng)絡(luò)的輸出,采用順序連接,每一階段都包含前面所有階段的輸出。
2.2.5RetinaNet算法
針對(duì)常見(jiàn)的One-stage目標(biāo)檢測(cè)算法正負(fù)樣本不平衡的問(wèn)題,文獻(xiàn)[40]在2017年提出了Focal Loss損失函數(shù)來(lái)提高復(fù)雜樣本在標(biāo)準(zhǔn)交叉熵中所占的權(quán)重,同時(shí)提出了RetinaNet算法來(lái)驗(yàn)證此損失函數(shù)的有效性。此算法的流程:1) 利用ResNet提取特征,防止梯度爆炸或消失;2) 利用FPN進(jìn)行多尺度特征融合;3) 利用分類回歸網(wǎng)絡(luò)得到類別和定位信息。Retina Net算法主要流程如圖12所示,其中K表示類別個(gè)數(shù),A表示anchor個(gè)數(shù)。
圖12 RetinaNet算法流程Fig.12 RetinaNet algorithm flow
2.2.6CornerNet算法
針對(duì)常見(jiàn)的目標(biāo)檢測(cè)算法使用Anchor引起的正負(fù)樣本不平衡,導(dǎo)致訓(xùn)練效率降低,以及引入大量超參數(shù)增加設(shè)計(jì)難度等問(wèn)題,文獻(xiàn)[41]在2018年提出了自底向上的CornerNet算法。該算法的創(chuàng)新點(diǎn):1) 預(yù)測(cè)方法拋棄了原先的Anchor和RPN思想,采用確定左上角和右下角兩個(gè)關(guān)鍵點(diǎn)的方法對(duì)邊界框進(jìn)行定位;2) 識(shí)別組合屬于相同實(shí)例的關(guān)鍵點(diǎn);3) 提出了使用角點(diǎn)池化的方法,進(jìn)行兩角點(diǎn)的定位。CornerNet算法主要流程如圖13所示。
圖13 CornerNet算法流程Fig.13 CornerNet algorithm flow
2.2.7CenterNet算法
針對(duì)CornerNet采用雙角點(diǎn)確定邊界框出現(xiàn)準(zhǔn)確率不高和檢測(cè)速度降低等問(wèn)題,文獻(xiàn)[42]在2019年提出了CenterNet算法,該算法的創(chuàng)新點(diǎn):1) 丟棄了雙角點(diǎn)確定邊界框的思想,借鑒關(guān)鍵點(diǎn)估計(jì)思想,用點(diǎn)代表目標(biāo),該點(diǎn)也是邊界框的中心點(diǎn),同時(shí)去除了NMS后處理操作,降低了復(fù)雜度,提高了檢測(cè)速度;2) 可以靈活運(yùn)用到2D和3D等目標(biāo)檢測(cè)的任務(wù)中。該算法的流程是通過(guò)全卷積網(wǎng)絡(luò)生成熱力圖,熱力圖峰值點(diǎn)作為目標(biāo)中心點(diǎn),用峰值位置的圖像特征預(yù)測(cè)回歸邊界框的寬高和維度等信息。
文獻(xiàn)[43]在2019年提出了使用左上角點(diǎn)、右下角點(diǎn)和中心點(diǎn)形成三元組來(lái)判斷邊界框的方法,也被稱為CenterNet算法,利用級(jí)聯(lián)角點(diǎn)池化和中心池化優(yōu)化關(guān)鍵點(diǎn)的生成,提高了精確度和召回率,但當(dāng)目標(biāo)物體的中心在同一個(gè)位置時(shí),只能檢測(cè)出該位置的一個(gè)目標(biāo)物體。
2.2.8EfficientDet算法
針對(duì)提高精度和檢測(cè)速度的問(wèn)題,文獻(xiàn)[44]在2019年提出了EfficientDet算法,該系列算法的創(chuàng)新點(diǎn):1) 提出能快速進(jìn)行多尺度特征融合的加權(quán)雙向特征金字塔網(wǎng)絡(luò)(BiFPN);2) 提出可以對(duì)主干網(wǎng)絡(luò)、特征網(wǎng)絡(luò)和預(yù)測(cè)網(wǎng)絡(luò)的分辨率、深度和寬度三要素進(jìn)行均勻縮放的混合縮放方法[45]。有D0到D7共8種版本,按序號(hào)模型體積越來(lái)越大,速度越來(lái)越慢,精度越來(lái)越高。EfficientDet算法主要流程如圖14所示。
圖14 EfficientDet算法流程Fig.14 EfficientDet algorithm flow
2.2.9小結(jié)
One stage目標(biāo)檢測(cè)直接通過(guò)CNN提取特征,同時(shí)預(yù)測(cè)目標(biāo)物體的分類與定位。在錨框設(shè)計(jì)優(yōu)化方面,YOLOv2使用基于K-means聚類的方式來(lái)自適應(yīng)地生成錨框,SSD系列使用多尺度的錨框生成策略,EfficientDet使用可變形錨框等,此外,還有一些算法去掉了錨框設(shè)計(jì),如YOLOX通過(guò)預(yù)測(cè)分支解耦的方式確定邊界框;CornerNet通過(guò)雙角點(diǎn)確定邊界框;CenterNet通過(guò)中心點(diǎn)確定邊界框[15]。在特征利用方面,SSD系列使用多層特征融合的方式,EfficientDet使用BiFPN來(lái)進(jìn)行特征的高效傳遞和融合。One-stage目標(biāo)檢測(cè)算法的性能對(duì)比如表3所示,其中“-”表示原文獻(xiàn)中無(wú)相關(guān)數(shù)據(jù)信息,優(yōu)缺點(diǎn)如表4所示。
表3 One-stage目標(biāo)檢測(cè)算法的性能對(duì)比Tab.3 Performance comparison of One-stage target detection algorithms
表4 One-stage目標(biāo)檢測(cè)算法優(yōu)缺點(diǎn)Tab.4 Advantages and disadvantages of One-stage object detection algorithm
由于傳統(tǒng)目標(biāo)檢測(cè)算法的過(guò)程過(guò)于繁瑣,且在處理復(fù)雜場(chǎng)景時(shí)效果差,與深度學(xué)習(xí)相結(jié)合的目標(biāo)檢測(cè)逐漸成為研究熱點(diǎn),其在精度和速度方面有了很大的提升。本文分析了目標(biāo)檢測(cè)的發(fā)展歷程,尤其對(duì)基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法進(jìn)行了深度剖析。雖然此領(lǐng)域發(fā)展迅速,但是仍有很多方向值得探討和研究。
1) 多領(lǐng)域數(shù)據(jù)集:現(xiàn)有數(shù)據(jù)集在單一領(lǐng)域完善性比較好,但是相對(duì)來(lái)說(shuō),目標(biāo)類別數(shù)少,對(duì)于新場(chǎng)景出現(xiàn)的目標(biāo)只能檢測(cè)出少類目標(biāo),或出現(xiàn)錯(cuò)檢、漏檢等問(wèn)題,對(duì)于建立一個(gè)多領(lǐng)域多場(chǎng)景多元化目標(biāo)數(shù)據(jù)集是一個(gè)迫切需要解決的問(wèn)題,同時(shí)也是一個(gè)重要的研究方向。
2) 自動(dòng)標(biāo)注數(shù)據(jù)集技術(shù):當(dāng)前的目標(biāo)檢測(cè)數(shù)據(jù)集是人工進(jìn)行標(biāo)注,這一過(guò)程需要大量的時(shí)間和精力,成本高,容易出現(xiàn)錯(cuò)標(biāo)、漏標(biāo)等問(wèn)題,可以考慮使用遷移學(xué)習(xí)技術(shù),將其他已標(biāo)注數(shù)據(jù)集遷移使用,再訓(xùn)練少量項(xiàng)目所需數(shù)據(jù)集,或者研究一種自動(dòng)標(biāo)注技術(shù),使用網(wǎng)絡(luò)直接實(shí)現(xiàn)目標(biāo)標(biāo)注。
3) 小目標(biāo)檢測(cè):隨著卷積神經(jīng)網(wǎng)絡(luò)的進(jìn)一步完善,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法成為主流,但是小目標(biāo)的特征存在于淺層語(yǔ)義中,深度學(xué)習(xí)模型往往更擅長(zhǎng)提取深層次的語(yǔ)義特征,因此,對(duì)于小目標(biāo)檢測(cè)效果較差,可以嘗試改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)使其更好地利用淺層語(yǔ)義特征。
4) 基于GAN的目標(biāo)檢測(cè):對(duì)于目標(biāo)檢測(cè)需要大量數(shù)據(jù)集進(jìn)行訓(xùn)練,由于數(shù)據(jù)采集成本、時(shí)間限制及特殊場(chǎng)景等因素,會(huì)出現(xiàn)數(shù)據(jù)不足的問(wèn)題,可以考慮使用GAN系列網(wǎng)絡(luò),使用一部分真實(shí)場(chǎng)景數(shù)據(jù)生成部分虛擬數(shù)據(jù),擴(kuò)大數(shù)據(jù)集,使其覆蓋更多不同的場(chǎng)景,可以提高檢測(cè)效果。
5) 多任務(wù)學(xué)習(xí):在傳統(tǒng)的單任務(wù)學(xué)習(xí)中,需要為每個(gè)任務(wù)訓(xùn)練一個(gè)獨(dú)立的模型,為降低時(shí)間復(fù)雜度,可以考慮將目標(biāo)檢測(cè)、語(yǔ)義分割以及實(shí)例分割等任務(wù)融合到一個(gè)網(wǎng)絡(luò),實(shí)現(xiàn)同時(shí)兼顧速度與精度的目的。