鄒軍,張世義,李軍
1.重慶交通大學 機電與車輛工程學院,重慶 400074;2.重慶交通大學 航海與船舶工程學院,重慶 400041
目標檢測在計算機視覺中扮演著重要角色,應用于圖像可以獲取其中的重要信息。近年來,基于深度學習的目標檢測飛速發(fā)展,被廣泛應用于智能交通、工業(yè)檢測、互聯網、地質探測等領域。目標檢測的發(fā)展可分為兩個階段:一是2000 年前后,該階段提出的傳統目標檢測算法大多采用滑動窗口策略和人工設計特征算子;二是2014 年至今,該階段提出的基于卷積神經網絡(Deep Convolutional Neural Networks,DCNN)目標檢測算法,利用深度學習技術自動提取圖像中的隱藏層,使得對圖像中的目標分類和定位更加精確,提高了算法性能。本文從傳統目標檢測器開始,主要闡述基于深度學習的目標檢測算法,對算法的流程步驟、網絡結構深入分析,梳理算法發(fā)展中常規(guī)改進操作和創(chuàng)新點,總結目標檢測算法的發(fā)展歷程,展望未來該領域的發(fā)展趨勢。
傳統目標檢測算法先對輸入圖像進行預處理,比如圖像灰度化、邊緣檢測;再確定目標位置,利用不同的矩陣框對圖像或圖像序列進行遍歷,構建候選框區(qū)域;接著,提取目標候選區(qū)域的視覺特征,選出特征向量,利用分類器將矩陣框選出的圖像目標進行分類;最后,對輸出圖像后處理,通過非極大抑制(Non-Maximum Suppression,NMS)等方法過濾多余的檢測框,具體的流程圖如圖1 所示。
傳統目標檢測方法有明顯的缺點,一是滑動窗口的方法,計算時間長,復雜度高,還增加了硬盤負荷;二是魯棒性差[1],難以滿足人們對目標檢測性能的實際需求。
當前,用于評估檢測模型的性能指標主要有兩個:一個是判斷模型運行速度的FPS;另一個是判斷模型精度的平均精度均值mAP。FPS 表示每秒識別圖像的數量,mAP 表示模型預測的圖像和真實圖像的差異。
交并比(Intersection over Union,IOU)為評價目標檢測定位精度的指標,用于判斷目標檢測中預測框和真實框的重疊程度。
數據集是制約一個模型的性能條件之一。目前常用的大規(guī)模數據集包括:PASCAL VOC、ILSVRC、MS COCO。
PASCAL VOC 數據集是一個世界級的比賽用庫,其中包羅萬象,許多優(yōu)秀計算機視覺模型都是基于該數據集。VOC 廣泛運用于目標檢測、目標分割、人體布局以及動作識別等領域,如今共有20 個目標類別。
ILSVRC 數據集是最早用于目標檢測任務的數據集,最開始因模擬人類的識別系統而建立。該數據集采用top1 到top5 的投票制分級評估,很容易驗證。近年來,ILSVRC 數據集不斷更新,所以難度也有所提升,仍然是主流的應用數據集之一。
MS COCO主要用來解決圖像檢測和分割的問題。事實上,它相比另外兩個數據集在實際應用中更加廣泛,因為該數據集圖片類別豐富,更貼合實際生活,且大多數都是小圖片。目前,MS COCO 數據集已收集到超過33 萬張圖像,其中超過20 萬張已標注圖像,包含了80 個目標類別,91 個物體類別,且每張圖片至少有5 段描述,可以說是所有數據集中的集大成者。
兩階段目標檢測算法基于候選框,需要通過兩個步驟來實現,輸入圖像先經過候選框生成網格,再經過分類網絡對候選框的內容進行分類,結果精度更高。相比一階段的一次性處理,其速度比較慢。圖2 展示了這兩類算法的歷程。
R-CNN[2]首次應用CNN[3](卷積神經網絡),是典型的兩階段目標檢測算法,不需要人工設計參數,在 Pascal VOC 2007 數據集上的mAP 高達 58.5%,為當時最優(yōu),但過程繁瑣、耗時,不能端對端訓練。該算法網絡結構如圖3 所示。
SPP-Net[4]解決了R-CNN 算法的圖像歸一化后的形狀改變問題。該算法在卷積層與全連接層之間增加了SPP(Spatial Pyramid Pooling)結構,使得輸出的特征圖直接為固定尺寸,避免了圖像歸一化過程,結果SPP-Net 的推理速度是R-CNN 的20 倍,精度不變。R-CNN 與SPP-Net 的流程對比如圖4 所示,其中縮放表示圖像歸一化過程。
Fast R-CNN[5]借鑒了SPP 的結構和功能,整合到一個網絡上的思想,改進了算法網絡結構。Fast R-CNN的網絡結構圖如圖5 所示。
Fast R-CNN 將 SPP 結構簡化為ROI 池化層[6],最后并聯了兩個分支,一個采用 Softmax[7]進行分類;另一個采用bounding box regression來定位,這樣分類和定位任務也整合到一個網絡結構中,過程中還引入了多任務損失函數,極大地提高了檢測精度和速度。
Faster R-CNN[8-9]算法采用RPN(Region Proposal Network),將候選區(qū)也合并到一個網絡結構中,從而實現了在R-CNN 中第一個真正意義的端到端網絡訓練模型。Faster R-CNN 網絡結構如圖6 所示。
RPN 引入了一個新的概念——anchor box[10](錨框),形成錨框機制,該方法可以用來檢測同一位置上的多個目標,提高算法性能。對比Fast R-CNN,Faster R-CNN 算法的檢測速度提升了10 倍。
R-FCN[11]算法用ResNet 主干網絡替換掉了Faster R-CNN算法中的VGG 網絡,提升了網絡的特征提取能力和分類的效果。
Mask R-CNN[12]算 法 用ROI Align 來 代 替Faster R-CNN 算法中的ROI Pooling,相較于ROI Pooling 未進行量化操作,直接使用線性插值算法解決像素浮點數的問題,從而使得實例分割更加精確[13]。
Cascade R-CNN[14]是一種級聯結構的目標檢測器,這種結構解決了低IOU 閾值狀態(tài)下,網絡訓練出現的過擬合問題。
一階段算法是基于回歸分析的算法,將圖像的分類和定位問題轉化為邏輯回歸問題,不需要經過兩階段特有的建議框,直接產生物體的位置坐標值和類別概率,并且經過單次便可以直接得出檢測結果[15]。
YOLOv1[16]首次將檢測問題轉化為回歸問題,真實地實現了端到端的檢測,可用于自動駕駛、視頻監(jiān)控等實時檢測任務。
3.1.1 網絡結構
YOLOv1 算法先將每張圖片都分割為S×S 個網格形式輸入;然后經過卷積層、池化層、全連接層,每個子網格負責落入自己區(qū)域的目標,預測出物體類別、置信度和邊界框位置[17],從而到全連接層后可以直接輸出目標分類和邊界框;最后通過 NMS 剔除重疊邊界框。YOLOv1的網絡結構圖如圖7 所示。
3.1.2 損失函數
YOLOv1 的損失函數公式定義如下:
計算位置誤差公式為:
其中,x、y、w、h表示邊界框坐標;S2表示網格化后的單元格總數;B表示每個單元格產生的邊界框個數;表示第i個網格生成的第j個邊界框內是否有目標;λcoord表示位置誤差的權重。
計算是否包含目標邊界框的置信度誤差公式為:
其中,公式前半部分表示含有目標檢測框的置信度預測;后半部分表示不含有目標檢測框的置信度預測;λnoobj表示不含有目標檢測框的置信度誤差的權重;Ci表示第i個目標的置信度。
計算分類誤差公式為:
最終的損失由公式(4)計算得出:
3.1.3 優(yōu)缺點
YOLOv1 算法檢測速度很快,但對重疊目標檢測效果不佳;預測框的數量太少,小目標檢測能力太弱,且不能多個標簽分類,綜合下來,其檢測精度低,召回率低,定位不準,小目標檢測效果不好,多目標情況下容易漏檢。
針對YOLOv1 的問題,幾乎同時做了兩個版本的 改 進 即:YOLOv3 與YOLO9000。YOLO9000 簡稱YOLOv2[18],借鑒了Faster R-CNN 算法,在網絡結構中引入了錨框機制,采用K-Means[19-20]聚類方式使得這種機制更科學,增加了候選框的預測,從而有效彌補了YOLOv1 中召回率低的問題。YOLOv3[21]對YOLOv2 又做了些改進,該算法采用性能更好的DarkNet53,引入FPN 結構,如圖8 所示,FPN 將圖像分解為不同分辨率和不同尺度的圖像,再對其進行融合重構,可以在3 個不同的尺度上進行檢測,提升了對小尺寸目標的檢測能力。YOLOv3 相比于RCNN算法,精度低的缺點依然很明顯。
YOLOv4[22]算法融合了近些年多種先進方法。骨干網絡為CSPDarkNet53[23],采用SPP+PAN 替代其FPN(Feature pyramid network)來增加感受野;在數據增強和損失函數方面都進行了改進,采用更強優(yōu)化能力的 CIoU Loss,推理速度有所提升,精度也更高。CIoU_Loss 的具體計算公式為:
其中,α表示用于平衡比例的參數;v表示用來度量預測框和真實框的寬高相似性;b表示預測框;bgt表示真實框;wgt和hgt表示真實框的寬和高;w和h表示預測框的寬和高;ρ表示歐幾里得距離;c表示b與bgt最小外界矩形的對角線距離。利用一系列的先進方法,最終,相對于YOLOv3,YOLOv4 在保證速度的同時大幅度的提高了模型的精度。
YOLOv5 以YOLOv4 為基礎架構,對模型的不同部分做了不同的優(yōu)化,進一步提升了算法的性能。在主干網絡上使用了Focus 結構,并提出了兩種CSP 結構,利用Focus 切片操作,更有利于實現圖像無損采樣,從而提升網絡速度。兩種CSP 結構分別用在主干網絡和neck 上,互為補充,融合計算,可以保留更完整的圖像信息。
YOLOv5 沒有發(fā)表論文,作者發(fā)布了它的源碼。目前,v5 版本已有多種網絡結構,分別為YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。這些模型根據不同的應用需求有著不同的檢測性能。
面對日益新增的工業(yè)檢測需求,LI C 等[24]提出了一鐘新的檢測框架——YOLOv6,主要基于YOLOv5的整體架構進行改進,基于RepVGG style 設計了可重參數化、更高效的骨干網絡EfficientRep Backbone 和Rep-PAN Neck。采用SimOTA 標簽分配策略以及SIoU邊界框回歸損失來進一步提高檢測精度。YOLOv6 在COCO 數據集上,測試結果在精度和速度方面均超越當時其他同體量算法。
WANG C Y 等[25]綜合了現有的trick 集合,模塊結構重參數化與動態(tài)標簽分配策略,通過分析梯度的傳播路徑來為網絡中的不同層進行結構重參數優(yōu)化,提出了一個新的動態(tài)標簽分配辦法——coarse-tofine,并采用模型縮放的方式減少大量參數,提高推理速度以及檢測精度。
YOLOv7 的數據表現很好,但實際落地情況下可能虛高,另外還存在代碼冗余問題。
2023 年1 月,Ultralytics 公 司 在 其 開 源 的YOLOv5 下公布了一個重點更新版本——YOLOv8。嚴格來說,YOLOv8 不是一種特定的算法,而是定義一種可擴展性的算法框架。該算法框架是沿用PAN 的思想,并多次采用C2f 模塊,使用Decoupled-Head,遵循Anchor-Free 理念,力求模型輕量化,且性能依然保持良好。 該框架檢測部分設計參考了目前大量優(yōu)異的最新的YOLO 改進算法,實現了新的SOTA。
LIU W 等[26]建立此算法,SSD 算法和YOLO 同屬于一階段的算法,算法結構卻明顯不同。YOLO 算法的檢測結果是在全連接層之后,而SSD 算法是在卷積層之后。SSD 算法在原有骨干網絡上多加了4 個卷積模塊,同時對其特征圖的不同候選框進行回歸,并且完成歸一化輸出,這樣可以得到對不同物體的良好檢測效果。
RetinaNet[27]網絡架構采用一種FPN 的網絡結構,引入新的損失函數,即Focal Loss,使得檢測器在訓練過程中會更加注重分類困難的樣本,彌補了正負樣本極不平衡這一不足,最終使得簡單樣本損失更少,優(yōu)化了訓練過程。
M2Det[28]的最大創(chuàng)新點是提出了用主干網絡加多級金字塔網絡(Multi-level Feature Pyramid Network,MLFPN)來提取圖像特征,使提取的圖像特征更鮮明。
本文首先介紹了傳統目標檢測器、基本性能指標和當前主流數據集;其次,按照基于回歸和基于候選框兩個大類別介紹深度學習的目標檢測算法,對部分具有代表性的算法重點闡述,分析網絡結構,對比優(yōu)劣;最后,闡述對未來關于目標檢測算法在實際應用中需要改進的方向,如下:
(1)研究更適合做目標檢測任務的特征網絡。特征網絡的設計分為分類和檢測兩大模塊,二者設計原則存在差異,如何構建一個符合實際任務需求的特征網絡是未來的研究趨勢之一。
(2)多模態(tài)目標檢測。數據融合是實現目標檢測應用的重要趨勢,比如當光照不均導致相機記錄失真,對場景記錄不全,多模態(tài)的互補性可以很好地解決此問題,提高了模型魯棒性。
(3)高質量的數據集。模型是需要訓練的,訓練對象就是預先采集好的數據集,一個好的數據集可以更好地訓練出優(yōu)秀的模型。
(4)模型輕量化。基于現有的計算機軟硬件設備和日益增長的功能需求,模型輕量化是一個大趨勢[29]。