呂 璐,程 虎,朱鴻泰,代年樹
(中科芯集成電路有限公司,江蘇無錫 214072)
目標(biāo)檢測技術(shù)的主要目的是在輸入圖像中找到目標(biāo)的位置,同時判斷目標(biāo)的類別屬性。隨著計算機軟硬件和深度學(xué)習(xí)理論的發(fā)展,基于深度學(xué)習(xí)的目標(biāo)檢測已廣泛應(yīng)用于智能安防、智慧醫(yī)療、無人駕駛等領(lǐng)域。在深度學(xué)習(xí)出現(xiàn)之前,傳統(tǒng)目標(biāo)檢測算法都是以手工設(shè)計特征為主,如Sobel[1]邊緣檢測特征、Haar[2]特征、Hog[3]特征等,這些特征的泛化能力較弱,在復(fù)雜場景中性能表現(xiàn)較差?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法使用的是卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)學(xué)習(xí)特征的方式,這種特征學(xué)習(xí)方式能自動發(fā)現(xiàn)檢測及分類目標(biāo)所需要的特征,同時通過卷積神經(jīng)網(wǎng)絡(luò)將原始輸入信息轉(zhuǎn)化成更抽象、更高維的特征,這種高維特征具有強大的特征表達能力和泛化性,所以其在復(fù)雜場景下的性能表現(xiàn)較好,可滿足工業(yè)界的大部分應(yīng)用需求。
基于深度學(xué)習(xí)的目標(biāo)檢測算法根據(jù)其算法流程特點大致可以分為兩類:兩階段(Two-Stage)目標(biāo)檢測算法和單階段(One-Stage)目標(biāo)檢測算法。Two-Stage目標(biāo)檢測算法的主要代表是 Regions with Convolutional Neural Networks Features(R-CNN)[4]系列,此類檢測算法檢測精度較高,但是檢測速度較慢。One-Stage 目標(biāo)檢測算法的代表有Single Shot MultiBox Detector (SSD)[14]系列、You Only Look Once(YOLO)[13]系列和Anchor-Free 系列,此類檢測算法精度一般,但是檢測速度很快,在工業(yè)界應(yīng)用廣泛。
本文概述了深度學(xué)習(xí)類目標(biāo)檢測算法的發(fā)展史,并將其分為兩大類來對基于深度學(xué)習(xí)的目標(biāo)檢測算法進行綜述,文中對其中的典型算法進行了指標(biāo)對比和分析,概述了基于深度學(xué)習(xí)的檢測算法應(yīng)用領(lǐng)域,并對算法當(dāng)前存在的問題和其可能的解決路徑進行了分析。
隨著2014 年Two-Stage 目標(biāo)檢測算法R-CNN 的提出,目標(biāo)檢測算法正式進入深度學(xué)習(xí)時代,但是算法耗時嚴(yán)重,無法實際應(yīng)用。通過對算法的深入理解和改進,SPP-Net[5]、Fast R-CNN[6]及Faster R-CNN[7]等算法被相繼提出,算法速度提升上百倍,基本達到應(yīng)用需求。隨著算法應(yīng)用增多,算法缺點也隨之暴露出來,對小目標(biāo)的檢測效果不理想是其中之一,研究人員通過對特征融合方法的研究,提出了FPN[8]、Cascade R-CNN[11]、M2Det[12]等算法,大幅改善了小目標(biāo)的檢測效果,大大提升了算法精度。
為了從方法論上解決Two-Stage 目標(biāo)檢測算法的耗時問題,以YOLO 系列為基礎(chǔ)的One-Stage 目標(biāo)檢測算法被提出,YOLO v2[15]、YOLO v3[16]、YOLO v4[17]逐步解決了YOLO v1[13]算法的檢測框定位不準(zhǔn)、小目標(biāo)檢測效果差及算法精度低等問題。但其從YOLO v2 開始引入了Two-Stage 目標(biāo)檢測算法的Anchor 機制,為算法帶了新的問題,如Anchor 參數(shù)設(shè)置麻煩、正負(fù)樣本比例嚴(yán)重失衡等。為了解決這些問題,研究人員提出了Anchor-Free 系列算法,如ConerNet[29]、CenterNet[30]、FCOS[32]、FoveaBox[33]等,通過設(shè)計更加合適的特征表達形式,同時提升目標(biāo)檢測算法的精度和速度。這兩類目標(biāo)檢測算法的發(fā)展史如圖1 所示。
圖1 基于深度學(xué)習(xí)的目標(biāo)檢測算法發(fā)展史
基于深度學(xué)習(xí)的Two-Stage 目標(biāo)檢測算法,第一階段的主要任務(wù)是生成一組目標(biāo)候選區(qū)域,然后將這些目標(biāo)候選區(qū)域送入第二階段中進行坐標(biāo)回歸和類別分類,其基本流程如圖2 所示。
圖2 Two-Stage 目標(biāo)檢測算法的基本流程
2.1.1 R-CNN算法
GIRSHICK 等人[4]在2014 年提出了R-CNN算法,其算法流程是首先采用候選區(qū)域提取算法,提取輸入圖像上可能包含目標(biāo)的大約2000 個不同的圖像塊,再將這些圖像塊歸一化到固定尺寸后送入到CNN中進行特征提取,然后基于支持向量機(Support Vector Machine,SVM)算法對這些提取到的特征進行目標(biāo)分類,最后再通過坐標(biāo)回歸模型對目標(biāo)的位置進行進一步精修。R-CNN算法是早期將深度學(xué)習(xí)融入到目標(biāo)檢測任務(wù)中的算法之一,為后面一系列的目標(biāo)檢測算法提供了方法基礎(chǔ)。其缺點也很明顯,首先是候選區(qū)域提取算法耗時嚴(yán)重;其次是對每個候選區(qū)域都要進行一次CNN 特征提取,造成了大量重復(fù)運算,浪費計算資源,最終導(dǎo)致平均每幅圖像的檢測時間高達34 s,無法實際應(yīng)用。
2.1.2 SPP-Net算法
SPP-Net算法是由何凱明等人[5]于2014 年提出,主要是為了解決R-CNN 重復(fù)對圖像進行特征提取的問題,所以該算法是首先通過CNN 對原始圖像進行特征提取,隨后將候選框坐標(biāo)映射至CNN 最后一層特征圖上,直接獲取候選區(qū)域的特征圖并將其送入第二階段的分類器訓(xùn)練和坐標(biāo)精修。由于分類器的訓(xùn)練要求輸入的特征尺寸必須統(tǒng)一,所以該算法提出了空間金字塔池化層,候選區(qū)域的特征圖經(jīng)過空間金字塔池化操作后,會生成一個統(tǒng)一尺寸的特征向量,從而解決了這一問題。SPP-Net 只需要對輸入圖像進行一次特征提取操作,大幅節(jié)約了計算資源,相較于R-CNN算法,其特征提取速度提升了約100 倍。但SPP-Net算法仍存在一些缺點,候選區(qū)域提取仍耗時嚴(yán)重,且候選區(qū)域提取、圖像特征提取、分類器和回歸模型訓(xùn)練等流程仍是分離的。
2.1.3 Fast R-CNN算法
2015 年由GIRSHICK 等人[6]提出的Fast R-CNN算法是在SPP-Net 的基礎(chǔ)上做的進一步改進,首先該算法將空間金字塔池化層改進為ROI 池化層,可將任意尺寸的特征圖池化至統(tǒng)一的固定尺寸特征圖;還引入了多任務(wù)學(xué)習(xí)的模式,第二階段的網(wǎng)絡(luò)使用兩個全連接分支,其中一個使用Softmax 分類器代替SVM 作為類別預(yù)測分支,另一個使用Smooth L1 預(yù)測坐標(biāo)偏移來作為坐標(biāo)精修分支,同時還將分類損失和坐標(biāo)回歸損失整合在一起作為最終的網(wǎng)絡(luò)損失函數(shù)來對網(wǎng)絡(luò)模型進行訓(xùn)練。Fast R-CNN算法相較于R-CNN算法和SPP-Net算法,大幅提升了檢測精度,同時也提升了檢測速度,平均每幅圖像的檢測耗時約2 s。但此算法仍在候選區(qū)域提取上耗時嚴(yán)重,無法滿足檢測的實時性要求,也沒有實現(xiàn)真正的端到端的訓(xùn)練和測試。
2.1.4 Faster R-CNN算法
為了實現(xiàn)真正的端到端的訓(xùn)練和測試,REN 等人[7]在對Fast R-CNN 做了進一步改進,該算法將候選區(qū)域提取工作整合到了檢測網(wǎng)絡(luò)中,提出了區(qū)域生成網(wǎng)絡(luò)(RPN)用來提取候選區(qū)域的方法。RPN 通過設(shè)置多種尺寸的Anchor,以滑動窗口的方式在特征圖上生成多個候選區(qū)域,隨后對這些候選區(qū)域進行坐標(biāo)粗略估計和屬于背景或前景預(yù)測的分類。在經(jīng)過RPN 計算之后,將屬于前景的候選區(qū)域篩選出來,送入第二階段進行坐標(biāo)精修和具體類別預(yù)測。Faster R-CNN算法比Fast R-CNN算法在精度方面有一定的提升,在檢測速度方面則有較大提升,平均每張圖像的檢測時間縮短至0.2 s 左右。該算法基本上解決了R-CNN算法的缺點,并且真正實現(xiàn)了端到端的訓(xùn)練和測試。但其仍有不足之處,由于網(wǎng)絡(luò)經(jīng)過了多次的下采樣操作,其對小尺寸目標(biāo)的檢測效果不佳。
2.1.5 FPN算法
當(dāng)前基于深度學(xué)習(xí)的檢測算法都是通過CNN 來進行特征學(xué)習(xí)和提取的,但如R-CNN 系列算法都是從CNN 的最后一層特征圖上提取特征,該層經(jīng)過多次的下采樣操作,雖具有很強的特征表達能力,但其分辨率已經(jīng)變得很小,小尺寸目標(biāo)在此層上已基本無信息保留,所以僅使用此層特征會導(dǎo)致對小目標(biāo)的檢測精度較差。若使用淺層分辨率較大的特征層來進行目標(biāo)檢測,雖然淺層保留了小尺寸目標(biāo)的信息,但淺層特征表達能力較差,小目標(biāo)檢測召回率增加的同時也會導(dǎo)致誤檢率大幅增加。為了解決以上問題,提升小尺寸目標(biāo)的檢測效果,LIN 等人[8]在2017 年提出Feature Pyramid Networks for Object Detection(FPN)算法。該算法最主要的核心是在檢測網(wǎng)絡(luò)中加入FPN 結(jié)構(gòu),該結(jié)構(gòu)特點有:1)自底向上連接CNN 下采樣通道,可以得到不同分辨率的特征圖;2)自頂向下連接,不同分辨率的特征圖無法直接進行特征融合,需要進行上采樣操作,使需要融合的特征層保持一致的分辨率;3)側(cè)向連接,將上采樣后的深層特征層和淺層特征層進行融合,增強淺層特征的表達能力。具體連接方式如圖3 所示。
圖3 FPN 網(wǎng)絡(luò)連接結(jié)構(gòu)
FPN 結(jié)構(gòu)采用了多尺度特征融合的方式,增強了淺層特征層的特征表達能力。隨后,通過對淺層大分辨率特征層進行特征提取和目標(biāo)檢測,大幅提升了算法對小尺寸目標(biāo)的檢測能力。
2.1.6 Two-Stage 目標(biāo)檢測算法小結(jié)
R-CNN 系列算法和FPN算法是Two-Stage 目標(biāo)檢測算法中較為經(jīng)典的幾個,剩下的一些算法都是基于這些進行的小改進。Two-Stage 目標(biāo)檢測算法生成目標(biāo)候選區(qū)域,對候選區(qū)域進行位置精修和類別分類,該類檢測算法對大、小尺寸的目標(biāo)都擁有較好的檢測精度,常見于各大目標(biāo)檢測算法競賽和多個目標(biāo)檢測公開數(shù)據(jù)集的榜單前排。在Faster R-CNN算法和FPN算法出現(xiàn)之后,還有很多基于這兩個算法的改進算法[9-12],該類算法檢測流程復(fù)雜,雖然算法精度高,但檢測速度較慢,無法滿足工業(yè)界實時應(yīng)用的需求。
為了提升基于深度學(xué)習(xí)的目標(biāo)檢測算法的效率,One-Stage 目標(biāo)檢測算法應(yīng)運而生。該類算法通過CNN 提取輸入圖像特征之后,直接對目標(biāo)坐標(biāo)和類別進行預(yù)測,其主要流程如圖4 所示。
圖4 One-Stage 目標(biāo)檢測算法流程
2.2.1 YOLO v1算法
YOLO v1算法是由REDMON 等人[13]在2015 年提出的一種采用了回歸思想的端到端的目標(biāo)檢測算法。該算法通過在輸出特征圖上劃分網(wǎng)格的方法直接進行目標(biāo)坐標(biāo)回歸和類別分類,省略掉了顯式的提取候選區(qū)域過程,這種設(shè)計方式大幅降低了檢測流程的耗時,平均每幅圖像的檢測耗時約0.02 s,同時還有低誤檢率的優(yōu)點。
但YOLO v1算法也存在著明顯的缺點,首先,其對小目標(biāo)、臨近目標(biāo)、群體目標(biāo)的檢測效果較差,這是由于其網(wǎng)格的設(shè)計方法導(dǎo)致的,YOLO v1 的CNN 最后一層特征圖輸出的張量尺寸是SS[C+B(4+1)],其中S 為特征圖的長寬,C 為訓(xùn)練目標(biāo)類別總數(shù),B 為每個網(wǎng)格預(yù)測的目標(biāo)框個數(shù)。以448 輸入為例,其中C=20,B=2,則最終輸出張量為7×7×30,其意味著每個網(wǎng)格只預(yù)測2 個目標(biāo),且最終只保留一個目標(biāo)作為最終預(yù)測結(jié)果。然而當(dāng)有臨近目標(biāo)或群體目標(biāo)存在時,多個目標(biāo)的中心可能會落在同一個網(wǎng)格,這就導(dǎo)致了只有一個目標(biāo)會被檢出,其他的都不會被檢測到。其次,其對邊界框的定位精度不是很好,這是由于在其損失函數(shù)中,大目標(biāo)和小目標(biāo)的交并比(指預(yù)測框和真實框的相交面積除以預(yù)測框和真實框的并集面積,縮寫為IoU)誤差對網(wǎng)絡(luò)訓(xùn)練時損失貢獻相當(dāng),從而影響了該算法的定位精度。
2.2.2 SSD算法
2016 年LIU 等人[14]結(jié)合Faster R-CNN算法和YOLO v1算法的優(yōu)點提出了SSD算法。與YOLO v1相比,SSD 使用了多個不同分辨率的特征層,顯著提升了對小尺寸目標(biāo)的檢測能力。同時還提出了類似于Faster R-CNN算法中Anchor 機制的默認(rèn)框方法,以300×300 大小網(wǎng)絡(luò)輸入為例,總共產(chǎn)生8732 個默認(rèn)框,最后對這些默認(rèn)框進行坐標(biāo)回歸和類別預(yù)測。在訓(xùn)練時,SSD算法采用了線上困難樣本挖掘的方法,對困難的負(fù)樣本進行采樣,同時只對滿足條件的默認(rèn)框進行訓(xùn)練,保持了訓(xùn)練時的正負(fù)樣本均衡,提升了算法的檢測精度。
與YOLO v1算法和Faster R-CNN算法相比,SSD算法保證了檢測的精度,也提升了檢測的速度。但其仍有一些不足,SSD算法使用了淺層高分辨率的特征層,該層特征表達能力不足,導(dǎo)致其在小尺寸目標(biāo)上的檢測效果仍一般,且背景誤檢率也有一定提升。
2.2.3 YOLO v2算法
為了改善YOLO v1算法,REDMON 等人[15]在2017年提出了YOLO v2算法,其在檢測類別擴展到9000類后也叫YOLO9000。YOLO v2算法從多個方面對YOLO v1算法進行了提升:1)引入Anchor 機制,并且使用Kmeans算法聚類產(chǎn)生的Anchor 代替Faster R-CNN 和SSD 手工設(shè)計的Anchor;2)使用卷積層代替YOLO v1 中的全連接層,同時在主干網(wǎng)絡(luò)的所有卷積層后面使用Batch Normalization(BN)層,這有利于網(wǎng)絡(luò)模型訓(xùn)練的收斂速度和參數(shù)的優(yōu)化;3)引入多尺度訓(xùn)練策略,有效提升了網(wǎng)絡(luò)模型對不同尺寸目標(biāo)的感知能力;4)優(yōu)化了損失函數(shù)中位置回歸損失部分,增強了網(wǎng)絡(luò)模型訓(xùn)練時的穩(wěn)定性;5)使用了特征提取能力更強的Darknet-19 作為基礎(chǔ)網(wǎng)絡(luò)。
YOLO v2算法主要是在YOLO v1算法上做了一些改進,在保證檢測速度的同時,顯著提升了檢測精度,但其仍有小尺寸目標(biāo)檢測精度較低的缺點。
2.2.4 YOLO v3算法
REDMON 等人[16]在2018 年又對YOLO v2算法進行了進一步改進,提出了YOLO v3算法。主要的改進點有以下幾個方面:1)采用更大更深的Darknet-53網(wǎng)絡(luò)作為基礎(chǔ)特征提取網(wǎng)絡(luò),提升了算法的整體性能;2)在算法中引入FPN 結(jié)構(gòu),分別提取了3 個不同分辨率的特征層作為最終預(yù)測的特征層,提升了算法對小尺寸目標(biāo)的檢測能力;3)分類器不再使用Softmax,而是采用二分類交叉損失熵,主要是為了解決訓(xùn)練集目標(biāo)可能存在著重疊類別標(biāo)簽的問題。YOLO v3算法提升了YOLO 系列算法的小尺寸目標(biāo)檢測精度,同時擁有很快的檢測速度和較低的背景誤檢率,但其對目標(biāo)坐標(biāo)的預(yù)測精準(zhǔn)性較差。
2.2.5 YOLO v4算法
ALEXEY 等人[17]在2020 年提出了YOLO v4算法,其算法本質(zhì)上是將當(dāng)前多種先進方法融合到Y(jié)OLO v3算法中,對YOLO v3算法的性能進行進一步提升。YOLO v4算法性能提升主要是通過以下幾個方面的改進,首先是圖像增強方面,YOLO v4算法在訓(xùn)練時使用了Mosaic 數(shù)據(jù)增強方法,此方法是基于CutMix[18]數(shù)據(jù)增強方法進行的改進,CutMix 數(shù)據(jù)增強方法使用了2 張圖片進行拼接,而Mosaic 數(shù)據(jù)增強方法則采用了4 張圖片,并且以隨機縮放、隨機裁剪、隨機排布的方式進行拼接,該數(shù)據(jù)增強方法不僅豐富了訓(xùn)練集,而且使用單個或少量GPU 訓(xùn)練就可以達到較好的效果。其次,YOLO v4算法在基礎(chǔ)網(wǎng)絡(luò)里加入了CSP[19]模塊、Mish[20]激活函數(shù)、SPP 模塊、PAN[21]結(jié)構(gòu)等,這些方法的加入進一步提升了網(wǎng)絡(luò)的特征提取能力。而在損失函數(shù)方面,YOLO v4算法加入了比IoU Loss[22]和GIoU Loss[23]優(yōu)化能力更強的CIoU Loss[24],使得預(yù)測框回歸的速度和精度更高。在COCO 測試集上輸入尺寸為608×608 的YOLO v4算法達到了43.5%的平均精度均值(Mean Average Precision,mAP)指標(biāo),而同樣輸入的YOLO v3算法在相同測試集上的mAP 為33.0%,并且在同一型號的GPU 上2 種算法的檢測速度相差不大。綜合來看,YOLO v4算法不僅在保證檢測速度的同時達到了更高的檢測精度,而且其對目標(biāo)坐標(biāo)的回歸精度也有較大的改善。
2.2.6 CornerNet算法
YOLO 系列自YOLO v2算法開始,引入了Two-Stage 目標(biāo)檢測算法的Anchor 機制,大幅提升了算法的檢測精度,但是其算法中的Anchor 機制仍存在著一些不足,與Anchor 相關(guān)的一些超參數(shù)的設(shè)置(如尺寸、比率、IoU 閾值等)會對檢測效果產(chǎn)生影響,而且大量的Anchor 不僅會增加算法運算復(fù)雜度,還會導(dǎo)致訓(xùn)練時正負(fù)樣本比例嚴(yán)重失衡。為了解決Anchor 機制帶來的問題,大批研究人員開始了基于Anchor-Free的目標(biāo)檢測算法研究。早期探索的算法有DenseBox[25]和YOLO v1,它們擁有較快的檢測速度,但檢測精度較低。隨后,研究者們在前人的基礎(chǔ)上對基于Anchor-Free 的目標(biāo)檢測算法進行了改進[26-29],CornerNet[29]算法是其中的代表之一。
CornerNet算法主要是借鑒熱力圖的思想,使用左上角點和右下角點來定義目標(biāo)框,以預(yù)測一組角點(Corner)的方式來預(yù)測目標(biāo)坐標(biāo)。為了使角點計算更加精確,算法使用了Corner Pool 的方法,該方法融入了更多目標(biāo)邊的信息,但也不可避免地導(dǎo)致網(wǎng)絡(luò)對邊更加敏感,從而忽略了更多內(nèi)部細(xì)節(jié)。
2.2.7 CenterNet算法
CenterNet[30]算法在CornerNet 的基礎(chǔ)上增加了中心信息作為其中一個預(yù)測標(biāo)準(zhǔn),從而使網(wǎng)絡(luò)能夠獲取到目標(biāo)的內(nèi)部特征。該算法還在Corner Pool 的基礎(chǔ)上進行改進,提出了Cascade Corner Pool,使得角點也能編碼一些內(nèi)部的信息,增強了網(wǎng)絡(luò)的表征力。與此同時,提出了Center Pool,獲得水平方向以及豎直方向上的最大值,也能夠表示更多的信息,從而提升了算法的檢測精度。
與CornerNet算法相比較,CenterNet算法通過對特征表達形式進行了修改和優(yōu)化,從而獲得了更高的算法精度。而后的一些基于Anchor-Free 的目標(biāo)檢測算法[31-33]都對目標(biāo)坐標(biāo)的特征表達形式進行重新定義。事實上,對各個目標(biāo)檢測算法來說,設(shè)計合適的特征表達形式,是提升目標(biāo)檢測精度和加快目標(biāo)檢測速度的關(guān)鍵舉措。
2.2.8 One-Stage 目標(biāo)檢測算法小結(jié)
One-Stage算法具有較大的檢測速度優(yōu)勢,在精度方面還有所欠缺,但是隨著該類算法的深度改進,如YOLO v4算法及Anchor-Free 系列最新的算法在精度方面都有所改善,已經(jīng)接近Two-Stage 系列算法了。One-Stage 目標(biāo)檢測算法的快速發(fā)展,大大推進了基于深度學(xué)習(xí)的目標(biāo)檢測算法在工業(yè)界的應(yīng)用。
Two-Stage 目標(biāo)檢測算法通過基礎(chǔ)網(wǎng)絡(luò)、Anchor機制、高分辨率特征層、損失函數(shù)等方向的優(yōu)化改進,逐步提升了算法效果,同時進一步降低算法耗時,在各類算法競賽和服務(wù)器端應(yīng)用廣泛。
One-Stage 的目標(biāo)檢測識別算法中,YOLO 系列算法通過改進基礎(chǔ)網(wǎng)絡(luò)、加入FPN 結(jié)構(gòu)、使用更強大的數(shù)據(jù)增強策略、添加新型損失函數(shù)等,大幅提升算法精度,同時還保持了算法速度優(yōu)勢,在工業(yè)界頗受歡迎?;贏nchor-Free 的系列算法,除了使用關(guān)鍵點進行目標(biāo)預(yù)測的算法外,還有最新的基于密集預(yù)測的Anchor-Free 系列算法,其通過使用更加先進的基礎(chǔ)網(wǎng)絡(luò)、使用密集預(yù)測進行分類和回歸以及設(shè)計更合適的特征表達形式,同時提升了算法的精度和速度,如FSAF[31]、FCOS[32]、FoveaBox[33]等。
除上述算法外,D2Det[36]、OHEM[37]、Focal Loss、GHM[38]等算法也較為經(jīng)典,解決了基于深度學(xué)習(xí)的目標(biāo)檢測算法發(fā)展過程中出現(xiàn)的部分問題,如小目標(biāo)檢測效果差、正負(fù)樣本不均衡等問題。以后,還可以基于生成式對抗網(wǎng)絡(luò) (Generative Adversarial Networks,GAN)系列算法[39-41]對現(xiàn)有的目標(biāo)檢測算法進行效果提升,也可以進一步研究小樣本學(xué)習(xí)的相關(guān)方法[42],擴大目標(biāo)檢測算法的應(yīng)用場景。
為了進一步介紹基于深度學(xué)習(xí)的目標(biāo)檢測算法,對以上算法在目標(biāo)檢測經(jīng)典測試集上的精度表現(xiàn)進行對比,經(jīng)典測試集有PASCAL VOC[34]系列和MS COCO[35]測試集,其中PASCAL VOC 系列包含20 個類別,COCO 測試集包含80 個類別。各算法在測試集上的精度如表1 所示[8,11,13-17,33]。
表1 各個算法在測試集上的效果對比
mAP 是目標(biāo)檢測算法的主要評估指標(biāo),目標(biāo)檢測模型通常會用速度和精度指標(biāo)描述優(yōu)劣,速度越快,mAP 值越高,表明該目標(biāo)檢測算法在給定的數(shù)據(jù)集上的檢測效果越好,表1 中的IoU 代表預(yù)測框和真實框的交并比,其中@IoU=0.5 指IoU=0.5 時mAP 的具體值,@IoU=0.5:0.95 則是指IoU 為0.5~0.95 時,每隔0.05 測試一次mAP 的值,最后取平均。
從表1 可以看到,隨著對基于深度學(xué)習(xí)的目標(biāo)檢測算法研究的深入,Two-Stage 的目標(biāo)檢測算法在速度和精度上都在提升。One-Stage 的目標(biāo)檢測算法中,YOLO 系列算法經(jīng)過發(fā)展和完善,目前在精度和速度上都有很大的優(yōu)勢。而Anchor-Free 系列算法當(dāng)前在精度上表現(xiàn)不錯,但在速度上還有較大提升空間。
綜合來看,Two-Stage 類的目標(biāo)檢測算法在精度上較好,所以可以應(yīng)用于計算資源較為豐富的GPU 服務(wù)器端,One-Stage 類的目標(biāo)檢測算法在速度上較快,適合應(yīng)用于計算資源較為匱乏的嵌入式前端。
基于深度學(xué)習(xí)的目標(biāo)檢測算法最先在安防領(lǐng)域落地,其主要應(yīng)用于雪亮工程、平安城市等項目,主要體現(xiàn)在人臉檢測、行人檢測、車輛檢測等方面,可以為打擊犯罪、管理交通等提供強有力的支撐。同時,在家庭安防方面,可以進行入侵檢測、煙火檢測等,一旦發(fā)現(xiàn)有陌生人入侵或者發(fā)生火災(zāi)的情況,能及時報警,盡可能地為戶主挽回?fù)p失。
安防領(lǐng)域的公司,如???、大華、宇視等,研發(fā)了很多款應(yīng)用于安防工程的小型化智能攝像頭,大多使用了華為海思系列的AI 前端芯片,如海思3559A、海思3519A 等,由于此類芯片計算資源較為緊張,且算法要求實時檢測,所以智能攝像頭中的人臉檢測、行人檢測等目標(biāo)檢測功能大多是基于One-Stage 類的目標(biāo)檢測算法開發(fā),可保證檢測算法的實時運行。
在自動駕駛領(lǐng)域,基于深度學(xué)習(xí)的目標(biāo)檢測算法能對人、車輛、障礙物等進行實時檢測,同時配合車輛雷達系統(tǒng),可以為駕駛員提供更加輕松、智能的駕駛體驗,還可以為駕駛員、乘車人以及車外行人提供更加安全的出行保障。
自動駕駛需要通過雷達、攝像頭來收集大量的路況、障礙物、交通標(biāo)識等信息,并對這些信息進行實時處理和決策,由于車載環(huán)境的限制,傳統(tǒng)GPU 由于能耗高、發(fā)熱大無法應(yīng)用,當(dāng)前新型智能汽車大多使用專門的自動駕駛芯片,其計算力強且能效比高。但是,應(yīng)用于自動駕駛上的目標(biāo)檢測算法對精度和實時性都有較高的要求,所以在應(yīng)用時往往會根據(jù)實際需求和硬件平臺性能,去選擇One-Stage 類或者Two-Stage類的目標(biāo)檢測算法。
目前基于深度學(xué)習(xí)的檢測算法通過對大量的醫(yī)學(xué)影像和診斷數(shù)據(jù)的學(xué)習(xí),可以使模型具有檢測病變區(qū)域和預(yù)測病因的能力。通過算法的輔助診斷,大大提升了醫(yī)生的診斷效率,為患者“早發(fā)現(xiàn),早治療”提供了有力的幫助。
由于醫(yī)療領(lǐng)域?qū)λ惴ň纫筝^高,且沒有實時性和小型化等要求,所以應(yīng)用于醫(yī)療領(lǐng)域的檢測算法大多基于Two-Stage 類的目標(biāo)檢測算法開發(fā)而來,可直接部署于資源豐富的GPU 服務(wù)器端,為醫(yī)生提供精準(zhǔn)的疾病預(yù)測結(jié)果。
本文對基于深度學(xué)習(xí)的目標(biāo)檢測算法做了概述,并對其中一些典型的算法進行了介紹,同時還對非常熱門的Anchor-Free 系列算法進行了分析,隨后對各算法的效果進行了對比,最后對檢測算法目前的熱門應(yīng)用領(lǐng)域進行了闡述。綜上所述,基于深度學(xué)習(xí)的檢測算法在精度和速度方面相較于傳統(tǒng)檢測算法都有較大的提升,并且目前還處在快速發(fā)展的階段,但是其仍然存在著一些問題尚未解決:1)對小尺寸目標(biāo)、遮擋目標(biāo)的檢測精度仍然不夠;2)訓(xùn)練時正負(fù)樣本不夠均衡,對算法性能會產(chǎn)生負(fù)面影響;3)部分領(lǐng)域訓(xùn)練樣本獲取難度較高,而訓(xùn)練集樣本數(shù)量較少會導(dǎo)致算法模型的效果不佳。
針對上述這些依然存在的問題,本文對基于深度學(xué)習(xí)的目標(biāo)檢測算法以后的發(fā)展進行了一些展望。
對于小尺寸目標(biāo)檢測精度低的問題,基于Anchor的算法主要是由于設(shè)置的Anchor 跟小目標(biāo)無法較好匹配,導(dǎo)致無法較好地提取到小目標(biāo)的特征。D2Det算法通過引入密集局部回歸的方法提升了小目標(biāo)與Anchor 的匹配效果,從而提升了小目標(biāo)的檢測效果,未來還可以在此基礎(chǔ)上對密集局部回歸進行改進,進一步提升小目標(biāo)的檢測精度。對于訓(xùn)練時正負(fù)樣本不均衡的問題,OHEM、Focal Loss、GHM 等算法通過手工抑制負(fù)樣本損失的方式來平衡正負(fù)樣本給網(wǎng)絡(luò)帶來的損失反饋,未來可以通過線上自適應(yīng)的方式更加合理地平衡正負(fù)樣本損失,進一步提升算法效果。部分應(yīng)用領(lǐng)域由于保密或難獲取等原因,導(dǎo)致訓(xùn)練樣本量較少,可以通過模擬場景的方式增加樣本量,也可以通過GAN 系列算法對樣本做一些增強和擴充,還可以進一步研究小樣本學(xué)習(xí)的相關(guān)方法,提升小樣本集的訓(xùn)練效果。