王婉婷,姜國龍,褚云飛,陳業(yè)紅
齊魯工業(yè)大學(山東省科學院) 輕工科學與工程學院,濟南 250353
物體檢測算法在深度學習的應用下逐漸成為近年來的研究熱點[1]。物體檢測的目的是確定圖像中是否存在來自給定類別的物體實例(如人類、汽車、自行車、狗和貓),如果存在,則通過一個邊界框[2-3]來返回每個物體實例的空間位置。物體檢測在人工智能和信息技術的許多領域都有廣泛的應用,包括機器視覺、安全監(jiān)控、自動駕駛、人機交互、虛擬現(xiàn)實和增強現(xiàn)實等[4]。
一般來說,基于深度學習的物體檢測方法主要有基于候選區(qū)域和非候選區(qū)的方法。其中,基于候選區(qū)域的方法通常是二步檢測法,即需要先從輸入的圖像中生成一系列區(qū)域,然后利用CNN從生成的區(qū)域中提取特征并構造一個目標分類器,最后在候選區(qū)域上進行分類與回歸?;诤蜻x區(qū)域的卷積神經(jīng)網(wǎng)絡(RCNN)[5]法是最早引入深度學習的方法。它采用選擇性搜索(Selective Search,SS)[6]的策略在輸入圖像中生成候選區(qū)域,并使用卷積神經(jīng)網(wǎng)絡從生成的候選區(qū)域中提取特征。提取的特征用于訓練支持向量機(SVM)[7]。在RCNN方法的基礎上,研究人員提出了Fast RCNN[8]和Faster RCNN[9],以減少訓練時間,提高精度。雖然基于候選區(qū)域的方法具有較高的檢測精度,但該方法結構復雜且檢測耗時。而基于非候選區(qū)域的一步檢測法比較有代表性的是YOLO系列算法,其結構簡單并能夠快速檢測出物體,但準確度卻不如基于候選區(qū)域的二步檢測方法。這兩類方法具有不同的優(yōu)點且適用于不同的應用場合。本文主要對該兩類方法進行詳細的綜述。
傳統(tǒng)的物體檢測算法在準確度、魯棒性、運行速度上都存在一定缺陷,研究人員為此不斷尋求新的解決方法。RCNN家族將候選區(qū)域和CNN相結合來避免傳統(tǒng)方法帶來的弊端。這類算法首先使用區(qū)域選擇方法從圖像中生成與類別無關的候選區(qū)域,再從這些區(qū)域中進行CNN的特征提取、使用分類器來確定類別并進行邊界框的位置回歸,從而完成物體檢測任務。
根據(jù)AlexNet[10]在圖像特征提取方面取得巨大成功的啟發(fā),Girshick等[5]采用深度卷積網(wǎng)絡作為特征提取的骨干網(wǎng)絡,并結合區(qū)域選擇方法,以生成候選區(qū)域并形成RCNN架構。該模型成為了基于深度學習的物體檢測算法的開端。其算法過程如圖1a:首先,利用SS算法生成約2 000個與類別無關的候選區(qū)域;其次,將候選區(qū)域歸一化后輸入到深度網(wǎng)絡中;接著使用SVM分類器對特征進行分類,預測對應的類別;最后,通過邊界框回歸和和非極大值抑制來進行邊界框的微調(diào)。
Girshick等提出了Fast RCNN[8],在RCNN的基礎上加入了空間金字塔池化(Spatial Pyramid Pooling,SPP)[11]以及感興趣區(qū)域(Region of Interest,RoI)池化層。Fast RCNN的流程如圖1b所示。
鑒于Fast RCNN采用選擇性搜索來找出所有候選框的方法也非常耗時。為解決這一缺點,Shaoqing Ren等提出了Faster RCNN[9]算法。應用一個準確高效的候選區(qū)域網(wǎng)絡(Regional Proposal Network,RPN)來代替選擇性搜索來生成候選區(qū)域。RPN的引入減少了候選框的數(shù)量,提高了候選區(qū)域的質(zhì)量,提升了物體檢測的定位精度和速度。其流程如圖1c所示。
注:a)RCNN檢測;b)Fast RCNN檢測;c)Faster RCNN檢測。
為彌補Faster RCNN在檢測速度上難以滿足實時要求的缺點,Redmon等[12]在2016年提出了YOLO(You Only Look Once)物體檢測算法,一種端到端的一步檢測系統(tǒng),并且經(jīng)歷了從v1到v5的版本更新,逐漸成為物體檢測的主流框架。
YOLOv1[12]通過CNN直接在一張完整的圖像上實現(xiàn)物體類別概率和邊界框回歸的預測。其網(wǎng)絡結構是在GoogLeNet[13]模型的基礎上建立的。YOLO的實現(xiàn)過程如圖2。首先,將輸入圖像固定為統(tǒng)一尺寸(448×448),輸入的圖像劃分為S×S個網(wǎng)格,每個網(wǎng)格負責檢測一個物體中心落在其上的目標,并預測該物體的confidence(置信度)、類別及位置;其次,利用CNN對輸入圖像提取特征并進行物體檢測;最后,通過非極大值抑制(Non-Maximum Suppression,NMS)[14]處理邊界框得到最優(yōu)結果。YOLO劃分的每個網(wǎng)格檢測一個物體,并將檢測邊界框轉化為回歸問題,以使該構架可以直接從輸入圖像中提取特征來預測物體邊界框和類別概率。
圖2 YOLO算法實現(xiàn)流程[12]
YOLO檢測系統(tǒng)的設計是將輸入的448×448×3的圖像劃分為7×7的網(wǎng)格,其預測輸出張量的計算表示為:
S×S(B×5+C)
(1)
其中,S×S表示輸入圖像劃分的網(wǎng)格數(shù)量,對應特征圖的分辨率;B表示每個網(wǎng)格生成B個邊界框;5表示預測參數(shù)數(shù)量(x,y,w,h,confidence);C表示能檢測到識別的種類(20)。
相比于0.5 fps的Fast RCNN和7 fps的Faster RCNN,YOLO網(wǎng)絡以45 fps的速度運行,在運行速度上有大幅提升,但在預測精度上仍存在一定不足,容易產(chǎn)生更多的定位誤差,尤其對于小目標物體無法準確檢測出來。
YOLOv2[15]相對v1版本,主要從預測精度、速度、識別物體數(shù)目這三個方面進行了改進。YOLOv2識別的物體變得更多,即擴展到能夠檢測9 000種不同物體,又稱為YOLO9000。它采用更簡單的特征提取網(wǎng)絡DarkNet19[15]來取代GoogLeNet網(wǎng)絡;引入了批次歸一化(Batch Normalization,BN)層[16]來加強網(wǎng)絡的收斂速度,增強了網(wǎng)絡的泛化能力;訓練高分辨率分類器以適應更高分辨率的圖像;利用WordTree將ImageNet[17]分類數(shù)據(jù)集和COCO[18]檢測數(shù)據(jù)集聯(lián)合訓練;除去全連接層并采用k-means聚類算法自動尋找先驗框——錨框(anchor boxes),從而提高檢測性能。其中,錨框是基于一個窗口只能檢測一個目標以及無法進行多尺度檢測問題所提出的一種先驗框。
2018年,原作者提出了YOLOv3算法[19],它繼承了YOLOv1和YOLO9000的思想,實現(xiàn)了速度和檢測精度的平衡。該算法對DarkNet19再加以改進設計出了DarkNet53網(wǎng)絡,其靈感來自于ResNet(殘差網(wǎng)絡)[20],在網(wǎng)絡中加入直連通道,允許輸入的信息直接傳到后面的層,同時引入了特征金字塔(Feature Pyramid Networks,FPN)[21]來實現(xiàn)多尺度預測,通過這種新的特征連接方式能有效提高小物體的檢測能力。YOLOv3引入殘差結構并通過卷積層來實現(xiàn)特征圖尺寸的修改,其網(wǎng)絡結構如圖3所示。
圖3 基于Darknet-53的YOLOv3結構示意圖[19]
2020年4月,Alexey等[22]在 YOLOv3 的基礎上做了各方面改進并提出了新的高效檢測物體的算法—YOLOv4。其特點在于集大成,包括新的數(shù)據(jù)增強方法Mosaic法和自對抗訓練(Self-Adversarial Training,SAT)法、提出了改進的SAM[23]和PAN[24]以及交叉小批量標準化(Cross mini-Batch Normalization,CmBN)。YOLOv4的框架如圖4所示。包括YOLOv3的Head、SPP和PAN的Neck以及CSPDarkNet53[25]的Backbone。
圖4 YOLOv4結構
YOLOv4分成了4個部分。包括輸入端、BackBone主干網(wǎng)絡、Neck、預測部分。其中,輸入端主要包括Mosaic、cmBN、SAT;主干網(wǎng)絡包括CSPDarknet53網(wǎng)絡、Mish激活函數(shù)、Dropblo-ck[26];Neck部分包括SPP模塊、FPN+PAN結構;預測部分主要為改進的損失函數(shù)CIOU_Loss,以及邊界框篩選的nms變?yōu)镈IOU_nms。
繼YOLOv4之后時隔2個月,有研究人員推出了YOLOv5算法。在準確度指標上,其性能與YOLOv4不相上下,速度上遠超v4,模型尺寸相比于YOLOv4(245 MB)也非常小(27 MB),在模型部署上有極強的優(yōu)勢,同樣也是目前最先進的物體檢測技術。YOLOv5結構與YOLOv4略微相似,但又有所不同。其輸入端采用了Mosaic數(shù)據(jù)增強[27]、自適應錨框計算、自適應圖片縮放方法;框架包括Focus結構,CSP結構的Backbone和FPN結構的Neck。YOLOv5雖然對當前的深度學習構建的各種技術進行了優(yōu)化整合并發(fā)布了代碼,但論文仍處于未發(fā)表階段,所以對于v5版本的性能評價還沒有明確的認定。
通過YOLO系列算法的改進并與RCNN系列算法作比較可知,相對于RCNN系列的候選框的提取與分類,YOLO實現(xiàn)了“只需看一眼即可實現(xiàn)”;另外,YOLO將檢測統(tǒng)一為一個回歸問題,而RCNN將檢測結果劃分為物體類別(分類問題)和物體位置(回歸問題)兩部分進行求解。一系列的改進方法讓YOLO在物體檢測速度上占據(jù)領導地位。YOLOv1到YOLOv4版本的發(fā)展如表1所示。
表1 YOLOv1到v4的網(wǎng)絡結構特點和模型發(fā)展
卷積網(wǎng)絡在物體檢測上涉及了眾多的應用領域,諸如食品蔬菜的分類檢測、交通流量監(jiān)控、火災熱源探測、車輛檢測等。
Jahani Heravi等提出了一種新的具有23層結構的深度ConvNet網(wǎng)絡對Food-101數(shù)據(jù)集和UECFood256數(shù)據(jù)集進行訓練[28],結果表明,相比于AlexNet、GoogleNet和VGGNet[29]網(wǎng)絡,該網(wǎng)絡具有更高的精度且網(wǎng)絡層次更深,用最少的參數(shù)學習更復雜的結果,將最先進的網(wǎng)絡應用于食品領域來開發(fā)食品檢測系統(tǒng);Sachin等使用YOLO模型對黃瓜、青蘋果、青椒三種蔬菜進行檢測和分類[30],通過建立三種蔬菜的檢測和分類模型來實現(xiàn)YOLO算法,結果表明該算法能在各種約束條件下檢測并分類出60%~70%的收獲量,并成功識別出圖中的多種蔬菜;Chang-Yu Cao等提出了一種基于TensorFlow的改進YOLO模型——YOLO-UA,通過使用YOLO的預訓練模型的權重來進行初始化,并優(yōu)化損失函數(shù),引入權重正則化來實現(xiàn)交通的實時檢測和流量統(tǒng)計[31];Dewi等使用YOLO和Tiny YOLO[32]模型檢測CCTV視頻中的火災熱點[33],且準確率高達90%,有助于消防員的疏散;Jimin Yu等對YOLOv4模型中的CSPDarknet53和PANet網(wǎng)絡進行改進,以提取更多語義信息來檢測口罩[34]。
由此可見,逐漸興起的物體檢測技術應用到了生活中的方方面面,利用計算機的自動檢測系統(tǒng)減輕了人類的負擔,為人們的生活帶來了更多的便利。
在物體檢測研究中,數(shù)據(jù)集上的評估標準是評價網(wǎng)絡性能的標準,當前的物體檢測任務中比較流行的數(shù)據(jù)集有:ImageNet[3]、Pascal VOC[35]和MS COCO[18]。
ImageNet數(shù)據(jù)集是常用的分類數(shù)據(jù)集,它在視覺領域有著廣泛的應用。其主要功能是圖像分類、物體檢測、場景分類等任務,有易于使用的詳細數(shù)據(jù)集文檔。它包含超過1 400萬張的圖片,涵蓋約2萬個類別。著名的ILSVRC圖像分類和目標檢測挑戰(zhàn)都是基于ImageNet數(shù)據(jù)集。
PASCAL VOC是常用的物體檢測數(shù)據(jù)集,它為圖像檢測、分割和分類提供了一組標準化的數(shù)據(jù)集。流行的有PASCAL VOC2007和PASCAL VOC2012數(shù)據(jù)集。訓練集以標記圖像的形式呈現(xiàn)。從2005年的4個類別(人、動物、車輛和室內(nèi)對象)開始,數(shù)據(jù)集增加到了日常生活中常見的20個類別。訓練集中每個圖像都一一對應于其注釋文件(邊界框和類標簽)。一個圖像中可能存在多個不同類別的對象。PASCAL VOC數(shù)據(jù)集具有良好的圖像質(zhì)量和完整的標簽,非常適合評價算法的性能。自2009年以來,圖像的數(shù)量每年都在增長,但保留了以前的所有圖像,以便每年對測試結果進行比較。
MS COCO也是常用的圖像檢測數(shù)據(jù)集之一,它對于圖像的標注信息不僅有類別和位置信息,還有圖像的語義文本描述,主要用于物體檢測、語義分割等任務,對于物體檢測,它是挑戰(zhàn)性最大的數(shù)據(jù)集之一。其中包含日常復雜場景的圖像,這些場景在自然環(huán)境中具有共同的物體且更接近真實生活。該數(shù)據(jù)集以理解場景為目標,包含91個stuff類、328 000個圖像和2 500 000個標簽。
物體檢測系統(tǒng)性能評估主要是用的評估指標和計算方法,最后給出RCNN家族和YOLO系列在各論文中體現(xiàn)的性能比較。
3.2.1 一般性能評估方法
一般對于應用深度學習的模型而言,常用的評價指標有:
1)精度指標:mAP(mean average precision)。平均準確度均值,精度評價。
2)速度指標:FPS(Frame Per Second)。每秒幀率,即每秒內(nèi)處理的圖片數(shù)量,且必須在同一硬件條件下進行比較。
3) 定位準確性:IOU(Intersection Over Union)。模型產(chǎn)生的目標窗口和原來標記窗口的交疊率。如式(2)。
(2)
即檢測結果(Detection Result)與真實值(Ground Truth)的交集比上它們的并集。理想情況下,檢測結果與真實值完全重合,即IOU=1。IOU的展示圖如圖5所示。
圖5 IOU計算示意圖
其中綠框代表目標物體的真實值,紅框表示檢測的邊框,通過計算IOU來判斷檢測結果是否符合條件?;贗OU定義了一些列的變量和指標:
TP:IOU>0.5的檢測框數(shù)量(同一Ground Truth只計算一次);FP:IOU<=0.5的檢測框,或者是檢測到同一個GT的多余檢測框的數(shù)量;FN:沒有檢測到的GT的數(shù)量。而平均準確度AP來源于精確率和召回率。
精確率表示被分為正例的示例中實際為正例的比例,定義為式(3):
(3)
召回率表示的是樣本中的正例被預測正確的度量,定義為式(4):
(4)
3.2.2 部分算法性能比較
表2為部分檢測算法在VOC數(shù)據(jù)集上的檢測結果。從表中可見YOLO的改進對檢測物體的性能有顯著提升。PS指標的建立是為了顯示各個基于相同權重的精度和速度的檢測系統(tǒng)的一般值。其定義可根據(jù)mAP和FPS的不同的權重比例來改變。其中,權重比例表示mAP和FPS對目標物體的相對重要性。
表2 幾種檢測系統(tǒng)的性能比較[36]
本文將基于深度學習的物體檢測算法分為基于候選區(qū)域的二步檢測系統(tǒng)和基于非候選區(qū)域的一步檢測系統(tǒng),從算法的發(fā)展及不同方向的改進角度分別對這兩類系統(tǒng)進行了綜述。二步檢測系統(tǒng)首先生成物體候選區(qū)域,然后對候選區(qū)域進行回歸和分類,如Faster RCNN。它在精度上比一步檢測系統(tǒng)要好,如YOLO。但是二步系統(tǒng)的速度明顯低于一步系統(tǒng)。在實踐中,精度和速度兩者需要適當平衡。一般來說,當精度達到一定水平時,繼續(xù)提高精度所帶來的成本并不樂觀。在某些領域,實時性的要求使得物體檢測框架的速度比準確性更為重要。另外還介紹了構造檢測系統(tǒng)的一般方法,包括常用數(shù)據(jù)集及使用方法和案例的構造分析。盡管物體檢測技術在各領域中都有廣泛的應用且發(fā)展迅速,但依然有許多問題待進一步研究:1)有效結合上下文信息解決物體檢測任務中進行的小目標物體或遮擋部分的檢測;2)研究更優(yōu)的特征提取網(wǎng)絡及邊界框的選定方法以節(jié)省繪制框的時間;3)探究最佳檢測體系結構來平衡檢測的速度和準確度。相信隨著未來基礎理論和相關硬件設備的不斷發(fā)展,物體檢測必將取得長足的進步。