董文軒,梁宏濤,劉國柱,胡 強,于 旭
青島科技大學 信息科學技術學院,山東 青島266061
目標檢測(object detection)作為計算機視覺領域的核心問題之一,其任務是在圖像或圖像序列中對目標進行精確定位和分類。但目標檢測任務中存在各類干擾因素,如目標物體本身的紋理、形態等,以及成像時的光照強弱、遮擋和模糊等?;谏鲜鲆蛩兀繕藱z測性能成為計算機視覺領域亟待解決的問題,針對這些因素,眾多學者對目標檢測算法進行了研究與改進。
傳統目標檢測算法大致劃分為下述三步:
(1)區域選擇:先定位目標位置,通過不同尺度和長寬比的滑窗對圖像或圖像序列進行遍歷,再通過窮舉策略將所有可能包含檢測目標的位置框出。
(2)特征提?。禾崛∧繕撕蜻x區域的視覺特征,例如SIFT(scale invariant feature transform)、HOG(histogram of oriented gradient)、Haar、LBP(local binary pattern)等特征提取算子進行特征提取。
(3)目標分類:使用分類器通過提取到的特征對目標進行分類,常用的分類器有DPM(deformable parts model)、Adaboost、SVM(support vector machine)等。
傳統目標檢測方法雖在檢測領域取得了一定的成果,但也暴露出其固有的弊端。區域選擇階段通過滑窗選取候選區域策略,存在時間復雜度高和冗余窗口多的弊端,導致后續特征提取和分類的性能降低。由于目標的本身因素和成像環境因素,導致人工手動設計特征的方法存在魯棒性不好、泛化性差、檢測精度低等問題,傳統的目標檢測方法已經難以滿足人們對目標檢測追求高性能的需求。
近年來,在Hinton、Bengio、Lecun的引領下,大量深度神經網絡論文相繼發表,深度學習得到了快速發展,通過引入深層語義特征,來解決傳統目標檢測算法的弊端。2012 年,Hinton 等通過卷積操作構建深度神經網絡AlexNet,并在ImageNet圖像識別比賽斬獲冠軍,基于深度卷積神經網絡的目標檢測算法成為了研究學者關注的焦點。
數據集對于有監督算法的訓練、評估至關重要,并且權威的數據集,更是衡量不同算法間優劣的標準。針對目標檢測任務,目前應用最多的兩類數據集分別是PASCAL VOC數據集和Microsoft COCO數據集。
PASCAL VOC 數據集源自PASCAL VOC 視覺挑戰賽,從2005 年開始,官方每年都會為挑戰賽提供一系列多類別、帶標簽的圖片。起初官方只提供了4 個類別的圖像,2007 年增加到了20 個類別,VOC2012類別如表1 所示。目前學術界使用最多的兩個版本分別是VOC2007和VOC2012,模型訓練、測試也存在兩種策略,一種是train2007+train2012 用作訓練,test2007 用作測試;另一種是train2007+test2007 +train2012 用作訓練,test2012 用作測試。由于第二種策略獲取訓練數據更多,訓練出的模型效果更好,使得該策略成為主流。

表1 VOC2012 類別Table 1 VOC2012 categories
Microsoft COCO 數據集源自微軟2014 年出資自研,該數據集以場景理解為目標,從復雜的日常場景中截取。數據集中圖像包含91 類別,32.8 萬張圖像和250 萬個標注,涵蓋圖像分類、目標檢測、圖像分割等多個計算機視覺任務。該數據集解決了場景理解中的三個核心研究問題:(1)檢測對象的非標志性視圖;(2)對象之間的上下文推理;(3)對象的精確二維定位。相較于PASCAL VOC 數據集主要應用于自然圖像中的目標檢測,Microsoft COCO 數據集被設計用于發生在其自然環境中的目標檢測,同時Microsoft COCO 數據集平均單張包含的目標也比PASCAL VOC 數據集要多,且目標更小,較小的物體更難識別,需要更多的上下文推理來識別。
為了將不同目標檢測算法進行多方位對比,提出一系列公認的評估指標,如交并比、檢測速率、精準率、召回率、平均精確率、平均精確率均值等。
交并比(intersection-over-union,IoU),指產生的預測框(candidate bound)與原標記框(ground truth bound)的交疊率,即兩框交集與并集的比值,最理想情況是完全重疊,即比值為1,該指標用于評估算法的定位準確性。檢測速率(frames per second),表示每秒算法所能處理的圖像張數,用于評估算法的實時性。如表2混淆矩陣與式(1)所示,精準率(Precision)指被正確識別成正例的正例數所占的比例,表示模型檢測出的目標為真正目標物體的比例。如式(2)所示,召回率(Recall)指測試的所有正例樣本中,被正確識別成正例的正例數,表示所有真實的目標被模型檢測出的比例。精準率和召回率是針對單張圖片某一類別的指標,同時針對精準率和在某些情況下存在矛盾,例如只檢測出了一個結果并且準確,那么精準率為100%,反觀召回率就很低。因此提出平均精確率(average precision,AP),表示為精確率-召回率曲線上的精確率對召回率的積分,如式(3)所示,AP 是針對數據集中某一個類別而言的,用于評估檢測算法對某一個類別的檢測效果。平均精確率均值(mean average precision,mAP)指AP 值在所有類別下的均值,mAP 是針對整個數據集的評估,用于評估檢測算法對所有類別的檢測效果。

表2 混淆矩陣Table 2 Confusion matrix

基于深度卷積神經網絡的目標檢測算法依據檢測步驟可分為兩類:一類是基于候選區域的Two-stage(兩階段)目標檢測算法;另一類是基于回歸的Onestage(單階段)目標檢測算法。Two-stage 目標檢測算法先選取圖像的候選區域,再對候選區域可能存在的目標進行回歸定位和分類,使整體檢測過程劃分為兩個階段,代表算法如RCNN 系列等。One-stage目標檢測算法不單獨選取候選區域,省略了候選區域生成步驟,將特征提取、目標分類和位置回歸整合到一個階段進行操作,代表算法如YOLO 系列、SSD系列等。以時間為基線,各類典型算法出現時間如圖1 所示。

圖1 目標檢測算法發展時間軸Fig.1 Timeline of target detection algorithm development
Two-stage 目標檢測算法先對圖像進行選取候選區域操作,再對候選區域進行分類和位置定位,使檢測過程劃分為兩個階段,代表算法有R-CNN(regions convolutional neural network)、SPPNet(spatial pyramid pooling network)、Fast R-CNN、Faster R-CNN、R-FCN(region-based fully convolutional networks)、Cascade R-CNN、Libra R-CNN 等,下面將分別進行介紹和分析。
目標檢測算法在標準的PASCAL VOC 數據集上的檢測性能,在過去的幾年里停滯不前。當時,通過集成系統取得較優的檢測性能,它通常采取將多個低級圖像特征與高級上下文相結合方式。直到Girshick等將卷積神經網絡(convolutional neural networks,CNN)應用于目標檢測任務,提出經典的兩階段目標檢測算法R-CNN,R-CNN 的出現成為運用深度學習進行目標檢測方面的里程碑。R-CNN 模型框架如圖2 所示,算法結合兩個關鍵點:(1)通過卷積給出自下而上的區域建議,來定位和劃分對象;(2)當缺乏訓練數據時,先進行有監督預訓練操作,后進行微調,實現性能的提升。R-CNN 將AlexNet與選擇性搜索算法(selective search)相結合,先從單張圖像中提取可能包含目標物體的區域候選框2 000 個,將候選區域放縮成固定格式進行特征提取,再通過SVM對候選區域的特征進行分類,使用非極大值抑制(non maximum supression,NMS)篩選區域候選框,最后采用邊界框回歸(bounding box regression)得到檢測結果。

圖2 R-CNN 模型結構Fig.2 R-CNN model structure
相較傳統算法,R-CNN 性能有所改進,但仍存在以下問題:(1)使用選擇性搜索算法導致候選框數量過多、選擇重復、浪費算力、效率低;(2)訓練過程中的操作,選取候選框、特征提取、SVM 分類、邊界框回歸各個模塊間獨立,非端到端的整體;(3)不同尺寸的候選框不采用任何策略,直接變為相同尺寸,改變原有圖像的固定尺寸,丟失部分原圖信息。
針對R-CNN 存在的對所有候選區域分別提取特征、計算量大、輸入圖片固定尺寸、丟失原圖信息等問題,He 等提出空間金字塔池化網絡(SPPNet)以移除對網絡固定尺寸的限制。如圖3 所示,將SPP 層放在最后一層卷積之后,從而避免了對卷積特征的重復計算,減少計算量;再對卷積產生的特征圖進行池化操作,避免因固定特征輸入尺寸而丟失原圖細節的問題;輸出固定長度的特征圖,最終進入分類器中進行目標檢測。

圖3 空間金字塔池化(SPP)Fig.3 Spatial pyramid pooling(SPP)
雖然SPPNet 提高了檢測速度,但仍存在部分缺點:(1)采取多段式訓練,需存儲大量特征,存儲空間大;(2)SPPNet 只對其全連接層進行微調,而忽略了所有以前的層;(3)沿用SVM 分類器,訓練繁瑣。
Girshick針對R-CNN 和SPPNet 各模塊獨立,導致占用大量存儲空間的問題,提出將特征提取模塊、區域分類和邊界框回歸模塊整合在一起的Fast R-CNN 算法。Fast R-CNN 模型架構如圖4 所示,算法采用VGG16替代AlexNet作為主干網絡對圖像進行特征提取。同時,受SPPNet 啟發,將SPP 層簡化為ROI Pooling加在卷積網絡之后,將每個區域均勻分成若干小塊,每個小塊得到該區域的最大值。另外,Fast R-CNN 引入softmax函數替代了R-CNN中的SVM 處理分類,并引入奇異值分解,將目標分類和位置回歸合并,降低計算復雜度,檢測速度精度得到相應的提升。

圖4 Fast R-CNN 模型結構Fig.4 Fast R-CNN model structure
但Fast R-CNN 仍存在不足:(1)生成候選區域沿用選擇性搜索算法(selective search)導致提取特征和獲取正負樣本候選框耗時耗空間;(2)訓練過程中選取候選框的操作,與其他模塊間獨立,仍是個非端到端的整體。
針對Fast R-CNN 存在因采用選擇性搜索算法生成候選區域,耗時耗空間的問題,Ren 等提出了Faster R-CNN算法。Faster R-CNN模型架構如圖5 所示,算法采用區域建議網絡(region proposal network,RPN)取代Fast R-CNN 中選擇性搜索算法來生成候選區域,將候選區生成、特征提取、目標分類和位置回歸合并,實現端到端結構的目標檢測模型。圖像經共享卷積層獲取特征圖,通過3×3 窗口滑動生成特定長度的低維向量,送入兩個全連接,分別進行分類和預測框回歸操作。Faster R-CNN 提出了錨框(anchor)概念。錨框位于滑動窗口的中心點,由大小不一的邊界框組成,用來檢測同一位置上的多個目標。經RPN 網絡處理后獲得大約300 個精確候選區域,大大減少候選框,減少模型計算量。

圖5 Faster R-CNN 模型結構Fig.5 Faster R-CNN model structure
雖然Faster R-CNN 突破了Fast R-CNN 的速度瓶頸,但仍存在問題:(1)Faster R-CNN 采用ROI Pooling層存在兩次取整近似計算,喪失網絡平移不變性,導致檢測信息和提取出的特征不匹配;(2)采用錨框機制,進行多次下采樣操作,導致網絡模型對小目標檢測效果較差。
針對Faster R-CNN 采用ROI Pooling 層存在兩次取整近似計算,喪失網絡平移不變性,導致檢測信息和提取出的特征不匹配,降低檢測的準確度,Dai 等提出了R-FCN 算法。R-FCN 基于全卷積,針對分類網絡與檢測網絡之間的位置敏感性矛盾,通過在全卷積后添加1×1 卷積輸出位置敏感分數圖,如圖6 所示。對感興趣區域進行了編碼處理,使ROI Pooling 層后不再接全連接層,避免了重復計算,提升了檢測的精度和速度。

圖6 位置敏感分數圖Fig.6 Position-sensitive score maps
R-FCN 作為Faster R-CNN 的改進版,通過引入位置敏感分數圖,提升了檢測速度,但將原來的VGG16的主干網絡換成ResNet 系列網絡,加深主干網絡的模型深度,導致依然難以滿足目標檢測的實時性要求。
Faster R-CNN 因使用固定IoU 閾值分辨正負樣本,造成所選候選框不準確,存在檢測噪聲,若盲目增大IoU 閾值,檢測效果反而變差。造成這一現象的兩個因素:一是訓練過程中正樣本指數消失導致的過擬合;二是探測器最優的IoU 與輸入假設的IoU 不匹配。針對上述問題,Cai等提出多階段(multi-stage)檢測架構的Cascade R-CNN 算法。Faster R-CNN與Cascade R-CNN 檢測架構對比如圖7 所示,表示輸入圖像,表示檢測頭,0 表示候選區域,表示分類,表示邊界框回歸。Cascade R-CNN 由一系列探測器構成,通過IoU閾值的遞增逐階段訓練。探測器通過學習上一個探測器的數據分布,減少網絡檢測噪聲,最終實現提高檢測框精度的作用。

圖7 Faster R-CNN 與Cascade R-CNN 檢測架構Fig.7 Faster R-CNN and Cascade R-CNN detection architecture
Cascade R-CNN 使用級聯架構本質上是一種新型的模型集成訓練的操作,雖然提升了網絡精度,但也增加了網絡模型的復雜度,同時采用更深的ResNet101作為主干網絡,延長了網絡訓練和預測的時間。
Faster R-CNN 檢測性能受數據不平衡的限制,包括三個層次:樣本水平、特征水平和目標水平。為了減輕由此造成的不利影響,Pang 等提出了Libra R-CNN算法。Libra R-CNN 采取了三個新的操作:IoU 平衡采樣來解決樣本不平衡,平衡特征金字塔來解決特征不平衡,平衡L1損失來解決目標水平不平衡。IoU平衡采樣:采用分桶策略,通過IoU 對正負樣本進行均勻采樣。平衡特征金字塔:如圖8所示,將不同層級的特征圖通過差值或下采樣的方法統一到4 層,將匯集的特征進行融合,使用non-local結構對融合特征進一步加強。平衡L1 損失:回歸Loss 使用Balance L1 替代Smooth L1,使得Loss較大樣本和較小樣本界限處的梯度更加平滑。

圖8 平衡特征金字塔Fig.8 Balanced semantic pyramid
但Libra R-CNN 進一步加深主干網絡,使網絡模型更為復雜,難以滿足實時的要求。
上述Two-stage 目標檢測算法分為先選取圖像的候選區域,再對候選區域可能存在的目標進行回歸定位和分類兩個階段。改進方式主要在于:(1)如何獲取高效的候選區域,如Fast R-CNN 采用的RPN 網絡;(2)如何將獲取的特征高效利用,如Cascade R-CNN的級聯架構和Libra R-CNN 的特征金字塔。但這些改進方式,無一不在增加模型的復雜程度,雖然檢測精度不斷提升,卻導致訓練和檢測速度降低,難以滿足端側實時檢測的要求,故而目前目標檢測發展趨勢開始面向高效One-stage架構的目標檢測方法。
表3 總結了這類算法發表時所用的主干網絡、檢測速率、檢測時的GPU 型號,以及在VOC2007 數據集、VOC2012 數據集和COCO 數據集上的檢測精度(mAP)?!啊北硎緹o相關數據,mAP 值中的括號表示以其作為訓練集。表4 總結了Two-stage 目標檢測算法改進方式、優勢以及局限。
從表3 可以看出Two-stage 目標檢測算法采用更深的ResNet101和ResNeXt101作為主干網絡,檢測精度得到了大幅的提升,后期以檢測難度更大的COCO數據集作為算法性能的評價指標。從表4 可以看出,Two-stage 目標檢測算法雖精度有所提高,但算法模型的加深,帶來更高的計算復雜度,導致算法的檢測速率降低,難以達到實時檢測的要求。

表3 Two-stage目標檢測算法性能對比Table 3 Performance comparison of two-stage target detection algorithms

表4 Two-stage目標檢測算法總體分析Table 4 Overall analysis of two-stage target detection algorithms
One-stage 目標檢測算法不單獨選取候選區域,省略了候選區域生成步驟,將特征提取、目標分類和位置回歸整合到一個階段進行操作,代表算法有YOLO系列、SSD 系列、RetinaNet、CornerNet、EfficientDet 等,下面將分別進行介紹和分析。
針對兩階段模型復雜,參數多,訓練時間久,實時檢測效果差等問題,Redmon 等提出首個基于回歸分析的目標檢測算法YOLO(you only look once)。YOLO 模型結構如圖9 所示,算法將圖像縮放為448×448,在圖像上放置×網格。經過若干個卷積層與池化層,再經過兩層全連接層,輸出目標分類和邊界框。其中每個子網格負責檢測落在本網格中的目標,預測出物體類別、置信度和邊界框位置。最后通過NMS 剔除重疊邊界框,實現目標檢測。

圖9 YOLOv1 模型結構Fig.9 YOLOv1 model structure
YOLO 雖然在速度上超過了Faster R-CNN,但還存在以下局限性:(1)采用×網格進行預測,若相同網格存在多個目標存在漏檢問題,并且對小目標檢測效果不佳;(2)沒用采用Faster R-CNN 的錨框機制,預測相對位置,直接預測絕對位置,增加了訓練難度;(3)預測框的長寬比是根據訓練集人為預設的,對于新數據集泛化能力差。
針對YOLO 使用全連接對邊界框進行回歸預測,定位不準,模型訓練召回率和檢測精度低的問題,Redmon等提出了YOLOv2算法。YOLOv2 以DarkNet19作為主干網絡,卷積層應用批歸一化(batch normalization,BN)操作,使數據的分布相對穩定,加速模型學習速度;采用分類網絡高分辨率預訓練(high resolution classifier),將分類網絡先在高分辨率的ImageNet 數據集上進行訓練,再使用檢測數據集對其進行微調,提高模型訓練的穩定性;引入錨框機制,錨框的寬高通過-means 算法對訓練集錨框進行聚類獲取,得到先驗框的寬高,提高模型在不同訓練集上的泛化性能;錨框位置預測是通過左上角格點坐標來預測偏移量,便于模型訓練收斂;加入了Passthrough 層,進行特征融合,避免損失細粒度特征;引入了多尺寸訓練方法,使卷積核可以學習到不同尺寸的特征,提高模型魯棒性。
相對于YOLOv1,YOLOv2 雖然解決了模型訓練困難、泛化能力差等問題,但其仍存在以下局限:(1)由于采用較深的主干網絡,導致小目標檢測的召回率不高;(2)對于密集群體目標檢測效果差,檢測精度還有優化空間。
針對YOLOv2 小目標檢測效果差的問題,Redmon 等在YOLOv2 的基礎上改進提出了YOLOv3 算法。YOLOv3 模型結構如圖10 所示,算法采用DarkNet53作為主干網絡提取特征,獲取更深層次的圖像特征;引入殘差網絡ResNet 的跨層加和操作,進行多尺度預測,跨尺度特征融合,提高對小目標的檢測精度;延用YOLOv2 先驗框操作,采用-means算法對數據集錨框進行聚類操作;分類使用logistic替換softmax 進行輸出預測,支持目標多分類。

圖10 YOLOv3 模型結構Fig.10 YOLOv3 model structure
YOLOv3 在推理速度上大幅提升,雖然解決了YOLOv2 小目標檢測的問題,但其在每個網格中固定預測兩個box 這種策略,相較于R-CNN 系列網絡,存在檢測召回率低,定位精度不佳,密集物體檢測效果差的問題。
2020 年4 月,Bochkovskiy 等結合近幾年的單階段和雙階段的目標檢測算法以及技巧,在YOLOv3的基礎上進行改進,提出了YOLOv4算法。YOLOv4采用了CSPDarkNet53替代了DarkNet53,SPP+PAN 替代了FPN,來增加感受野,進行特征融合;加上YOLOv3的head,就構成了YOLOv4 的模型框架。同時Bochkovskiy等還加入只在訓練階段耗時增多,但不影響推理耗時的“贈品”(bag of freebies)技巧,如CutMix、Mosaic(馬賽克)數據增強等;以及微提高了推理耗時,卻顯著提升性能的“特價”(bag of specials)技巧如SPP-block(spatial pyramid pooling block)、PAN(pixel aggregation network)、DIoU-NMS(distance intersection over union non maximum supression)等。
YOLOv4 結合一系列調優技巧,雖然檢測精度有所提高,但仍存在以下問題:(1)多個“特價”技巧疊加在一起,宏觀上仍增加模型的復雜程度,增加了訓練、預測時間;(2)錨框獲取延用YOLOv3 的聚類策略,導致錨框的長寬比只能適應大部分目標,缺少泛化性。
2020年6月,Jocher提出了YOLOv5。YOLOv5包含4 個模型,根據模型深度和特征圖寬由小到大依次 是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。YOLOv5 模型分為輸入端、Backbone、Neck、輸出端四部分,YOLOv5s 模型結構如圖11 所示。輸入端采用了自適應錨框計算,以獲取合適的錨框;自適應圖片放縮,減少模型計算量,同時提高對小目標的檢測效果。Backbone 采用Focus 結構用于降低下采樣過程中的信息損失,借鑒CSPNet的CSP(cross stage partial)結構用于增強卷積的學習能力。Neck 采用了FPN+PAN+CSP 結構,加強了特征融合。輸出端采用了GIOU_Loss 做為邊界框的損失函數,采用加權NMS 的方式對邊界框進行篩選,增強對遮擋、重疊目標的檢測能力。

圖11 YOLOv5 模型結構Fig.11 YOLOv5 model structure
相較于YOLOv4,YOLOv5更為靈活,但精度略微降低。同時,目前YOLO 系列大都采用錨框的策略,導致模型計算量增加和正負樣本嚴重不平衡的問題。
針對之前YOLO 系列采用錨框的策略所導致的問題,Ge 等提出了基于YOLOv3 改進的YOLOX,剔除錨框的操作,降低模型計算量,緩解正負樣本不平衡的問題。同時引入預測分支解耦(decoupled head),如圖12 所示,通過一維卷積將不同通道數的特征圖進行降維,然后兩個平行分支分別使用2 個3×3 卷積進行操作,同時回歸分支里還添加了IoU 分支,用于豐富YOLOX 檢測頭的表達能力。預測分支解耦極大地改善了模型的收斂速度,相較于非解耦的方式,解耦能帶來4.2 個百分點的AP 性能提升。引入SimOTA(simplified optimal transport assignment)操作,獲取每個真實框所擁有的正樣本個數,以獲得全局信息下的最優樣本匹配方案,SimOTA 操作帶來3.2 個百分點的AP 性能提升。相較于OTA,SimOTA運算速度更快,避免額外的優化參數。

圖12 YOLO 系列檢測頭結構對比Fig.12 Comparison of structure of YOLO series head detection
針對YOLO 存在小目標難以檢測的問題,Liu 等提出了SSD 算法。相比YOLO 全連接層之后執行檢測操作,SSD 采用卷積來直接進行檢測。SSD 模型結構圖如圖13 所示,算法采取了多層次特征圖對不同大小的目標進行檢測,淺層特征圖檢測小目標,深層特征圖檢測大目標,解決了小目標難以檢測的問題。同時借鑒了Faster R-CNN 中Anchor 技巧,提前設置長寬比不同的先驗框,再在先驗框的基礎上預測目標檢測框,減少訓練復雜度。

圖13 SSD 模型結構Fig.13 SSD model structure
但SSD 仍存在以下局限性:(1)不同尺度的特征圖獨立檢測,造成不同尺寸的檢測框對同一目標重復檢測,增加了模型計算量;(2)由于檢測小目標的淺層特征圖含語義信息少,導致對小尺寸物體的檢測效果比較差。
針對上述SSD 存在的兩個問題,Jeong 等提出了RSSD 算法。RSSD 通過分類網絡增加不同層之間的特征圖聯系,以減少重復預測框的出現;采用了一種深層和淺層特征融合的方式增加特征金字塔中特征圖的個數,以檢測更多的小尺寸目標。相對于SSD,RSSD 在目標分支上參數更新,采用僅由特定尺度目標所決定的策略,RSSD 中各個分類網絡間參數共享,且各個尺度的目標都可以用于更新分類網絡的同一套參數,需要訓練的參數更少,訓練速度更快。
針對SSD 骨干網絡是VGG16,只能得到淺層特征圖,對于深層次信息學習和表達能力不夠的問題,Fu 等提出了DSSD 算法。DSSD 模型結構如圖14所示,算法采用了更深的ResNet101 作為主干網絡,以提取更深層次的語義特征;引入反卷積代替傳統的雙線性插值實現上采樣,完成了深層特征圖和淺層特征圖的融合;預測模塊引入殘差單元,對小目標檢測的效果得到顯著提升。

圖14 DSSD 模型結構Fig.14 DSSD model structure
相較于SSD,DSSD 雖然精度有所提升,但使用更深的ResNet101 作為骨干網絡,訓練時間變長,檢測速度變慢。
Li 等借鑒了FPN 的思想提出了FSSD 算法,模型結構圖如圖15 所示,將淺層的細節特征和高層的語義特征結合起來。FSSD 在特征融合模塊中,將不同尺度不同層的特征連接在一起,然后用一些下采樣塊生成新的特征金字塔,反饋給多盒探測器,以預測最終檢測結果。使得算法的精度有了明顯的提升,速度也沒有下降太多。

圖15 FSSD 模型結構Fig.15 FSSD model structure
2019 年,Shen 等提出DSOD 算法,DSOD 融合SSD+DenseNet的思想,DenseNet 提取網絡結構用于避免梯度消失,使得網絡在不進行預訓練的收斂效果和使用預訓練模型的效果一樣好;相比于SSD,DSOD引入Dense Prediction 結構,大大減少了參數數量。
雖然DSOD 的精度有所提升,但采用DenseNet導致密集連接太重,并且每個DenseNet每層都會聚合前面層的特征,造成特征冗余,增加了模型的計算量。
針對當時單階段目標檢測算法檢測精度普遍低于同期雙階段目標檢測算法的現狀,Lin等研究發現,這是由于正負樣本不均衡導致的,后提出了RetinaNet算法。RetinaNet網絡架構如圖16 所示,該算法結合了ResNet 和FPN 用作特征提取,以獲取圖像多尺度特征圖,再通過兩個FCN 網絡分別實現分類與回歸任務。同時采用了focal loss 替代了交叉熵損失函數,focal loss 通過提高困難樣本的權重,使模型在訓練時更專注于稀疏、困難樣本的分類。

圖16 RetinaNet模型結構Fig.16 RetinaNet model structure
但是RetinaNet 相較于其他單階段檢測算法,檢測速度明顯下降,難以滿足實時檢測的要求。
針對RCNN系列、YOLO系列和SSD系列等算法,引用了Anchor導致正負樣本不均衡,較多超參數計算復雜的問題,Law 等提出了CornerNet算法。CornerNet采用了預測左上角點和右下角點的位置對邊界框進行定位,替代傳統Anchor 與區域建議的檢測方法,避免上述Anchor 導致的問題。CornerNet 模型結構如圖17 所示,模型以Hourglass 作為主干網絡,分別對左上角點和右下角點進行預測,同時對偏移進行預測,微調角點位置產生更為緊密的邊界框。利用預測的Heatmaps、Embeddings 和偏移量,經后處理算法來獲得最終的邊界框。同時CornerNet 還采用了corner pooling,有助于模型對邊界框進行更為準確的定位。

圖17 CornerNet模型結構Fig.17 CornerNet model structure
但CornerNet由于需要左上角點和右下角點分組匹配產生邊界框,此過程耗時較長,達不到實時檢測要求;并且存在角點匹配錯誤,導致產生錯誤的邊界框。
針對CornerNet 基于雙角點再匹配的檢測策略,導致計算復雜、檢測速度降低,因此,Duan 等提出了CenterNet 算法。CenterNet 構建模型時將目標作為一個點,即邊界框的中心點,相較于CornerNet,無需對左上角點和右下角點進行分組匹配,也不存在NMS這類后處理,提高了檢測速度。CenterNet 通過特征圖上局部峰值點(local peaks)獲取關鍵點,再通過關鍵點預測中心點,并回歸出目標相關屬性,最終實現目標檢測。相較于傳統檢測算法多重特征圖錨點操作,CenterNet 通過采用高分辨率的特征圖進行輸出,以省略上述操作,提高模型效率。
但CenterNet 仍存在以下局限,由于邊界框的中心點進行預測,導致對多個目標下采樣時,目標中心存在重疊情況,模型只能檢測出單個目標。
針對基于回歸的檢測算法存在檢測精度較低的問題,Tan 等提出了EfficientDet 算法。EfficientDet包含7 種結構,分別為EfficientDet D1~D7,速度逐漸變慢,但是精度逐漸提高。Tan 等受PANet 算法的啟發,移除掉了只有一個輸入的節點,連接相同level的輸入和輸出節點融合更多特征,將自底向上和自頂向下相結合作為一個基礎層,可重復使用,最終設計出加權雙向特征金字塔網絡BiFPN 作為特征網絡。在相同骨干網絡EfficientNet,BiFPN 比FPN 高4 個百分點,并且參數量更少。EfficientNet在模型設計時考慮了網絡的寬度、深度、分辨率三要素。EfficientDet模型結構如圖18 所示,算法將EfficientNet 作為骨干網絡,而EfficientNet B0~B6 就可以控制骨干網絡的規模;BiFPN 的通道數、重復層數也可以控制;輸入圖片的分辨率,這些組成了EfficientDet的結構。

圖18 EfficientDet模型結構Fig.18 EfficientDet model structure
EfficientDet 具有參數少,推理速度快,準確率高的優點。但EfficientDet 的預訓練成本高,作者使用32 個TPU 在數據集上訓練,才達到各項SOTA(state of the art)的成績,訓練完整模型需要的時間和硬件成本過高。
上述One-stage 目標檢測算法省略了候選區域生成步驟,將特征提取、目標分類和位置回歸整合到一個階段進行操作。YOLO 系列的改進大都基于上一版本的局限進行改進,SSD 系列的改進都是基于最初的SSD 算法進行改進,其他系列介紹了剔除錨框操作的一些算法。上述One-stage 目標檢測算法最主要的三個改進方式:(1)獲取錨框的方式,如YOLOv2 引入-means 聚類方式;(2)特征的高效利用,如SSD系列的各種特征融合方式和EfficientDet的BiFPN;(3)剔除錨框的操作,如YOLOX 通過預測分支解耦直接獲取預測框位置,CornerNet 通過角點獲取預測框位置,CenterNet通過中心點獲取預測框位置。One-stage 目標檢測算法檢測精度提升的同時,檢測速度也得到提高,達到了實時檢測要求。
表5 總結了這類算法發表時所用的主干網絡、檢測速率、檢測時的GPU 型號,以及在VOC2007 數據集、VOC2012 數據集和COCO 數據集上的檢測精度(mAP)。“—”表示無相關數據,mAP 值中的括號表示以其作為訓練集。表6 總結了One-stage 目標檢測算法改進方式、優勢以及局限。

表5 One-stage目標檢測算法性能對比Table 5 Performance comparison of one-stage target detection algorithms

表6 One-stage目標檢測算法總體分析Table 6 Overall analysis of one-stage target detection algorithms
從表5 可以看出,One-stage 目標檢測同系列算法,檢測精度不斷提高,甚至超過了Two-stage 目標檢測算法精度。同一算法,主干網絡模型越深,輸入圖片尺寸越大,檢測精度越高,但在相同GPU 環境下檢測速度降低。從表6 可以看出,主要針對小目標難以檢測的問題,通過不同層的特征進行融合得以緩解,實現多尺度、高精度的預測效果。同時,檢測速度也達到了實時檢測的要求,可以實現端側的快速部署。
本文在對目標檢測算法廣泛研究的基礎上,系統總結了基于深度卷積神經網絡的目標檢測算法的發展歷程,詳細介紹基于候選區域的Two-stage 目標檢測算法和基于回歸的One-stage 目標檢測算法。深入分析了各類算法的網絡架構、優缺點以及在主流數據集上的實驗結果。過去的幾年里,基于深度卷積神經網絡的目標檢測算法進入了發展的快車道,期間雖取得了一定的成果,但仍存在進一步發展的空間。下面提供了這一領域前沿問題和研究方向,以促進后續目標檢測算法的研究與完善。
(1)多領域目標檢測和多元化數據集:目前主流數據集類別數較少,大都是單一領域,導致所訓練的模型只在某一單個領域精通,遇到未知實物存在漏檢、錯檢的問題。因此創建多元化的數據集,用來訓練多領域目標檢測模型。開發一種通用的目標檢測模型檢測出多領域的目標成為未來的研究方向。
(2)小目標檢測:基于深度卷積神經網絡的目標檢測成為檢測主流,通過深層網絡對小目標進行特征提取,存在語義丟失的問題。針對這一問題,可通過淺層語義和傳統圖像檢測算法相結合的方式,或許可以起到更好的效果。
(3)高精度輕量級網絡架構:現有模型架構復雜,參數多,達不到邊緣設備實時檢測的需求,在保證高精度的前提下,使模型輕量化變得尤為重要。例如,2017 年,Google 提出了MobileNet 輕量化網絡架構,通過深度分離卷積代替傳統卷積的方式,將一個傳統卷積拆分成為一個深度卷積和一個逐點卷積。深度卷積在不改變輸入特征圖像的深度的情況下,對每一通道進行卷積操作,得到和輸入特征圖通道數一致的輸出特征圖;再由逐點卷積對獲取特征圖進行升維和降維。進而降低了模型的參數量,實現模型的輕量化。再如2020年,華為提出了GhostNet,若傳統卷積輸出的通道數為,GhostNet先得到/2個通道數的特征圖;隨后對已獲取特征圖的每個通道單獨進行線性變換;再將線性變換的結果與初次獲取的特征圖疊加,得到個通道數的特征圖。相較于MobileNet,GhostNet 的性能和輕量化進一步得到提升。因此,在邊緣設備市場的需求下,降低模型計算開銷將成為主流方向之一。
(4)視頻檢測:針對視頻實時檢測的現實需求,在融入了時間序列這一特征的同時,視頻檢測中相鄰幀存在大量冗余特征信息、視頻聚焦失調、遮擋等情況,導致計算冗余和檢測精度較低。因此,研究基于視頻序列數據的目標檢測算法,將成為未來研究熱點之一。
(5)多模態檢測:目前大多數檢測模型存在數據集類別單一化問題,可以將RGB 圖像、激光雷達圖、3D 圖像等多種模態的數據進行融合,對自動駕駛、智能機器人等領域至關重要。因此,如何將不同模態的數據融合,及訓練好相關的檢測模型遷移到多模態數據中將成為未來的研究重點。
(6)弱監督和小樣本檢測:現階段目標檢測模型是通過大規模的實例標注數據訓練得到的,而數據標注是一項耗時、耗力的工程。弱監督目標檢測降低數據標注成本,通過少量的標注數據高效訓練網絡。可通過遷移學習,從相關領域中遷移標注數據,再訓練所需領域少量標注數據,以提升所需領域目標檢測效果。
基于深度卷積的目標檢測算法雖在各類場景取得一定優勢,仍需進一步研究與完善,以解決目標檢測領域所存在的挑戰,實現精度和性能上的進一步提升。本文以歷年具有代表性的目標檢測算法為主線,首先介紹了目標檢測算法背景,然后根據算法所基于的架構進行對比,綜述了各類目標檢測算法的關鍵技術和優缺點,最后針對前沿領域對目標檢測算法進行了探討與展望。