齊 榕 賈瑞生 徐志峰 毛其超
(山東科技大學計算機科學與工程學院 山東 青島 266590) (山東科技大學山東省智慧礦山信息技術省級重點實驗室 山東 青島 266590)
目標檢測是計算機視覺領域的一個經典的任務,是進行場景內容分析和理解等高級視覺任務的基本前提[1-2]。目標檢測領域傳統的方法是使用簡單的手工特征和級聯分類器級聯進行檢測。然而,這類檢測器的性能在現實應用中會隨著視覺多樣性變化而顯著降低。Felzenszwalb等[3]在2008年提出基于 HOG的變形組件模型(Deformable Part Model,DPM)檢測算法,利用 SVM 作為分類器,使用少量未完全標注的樣本即可取得較好的檢測效果,但計算量太大,特征需要人為設置,且模型無法適應大幅度的旋轉,穩定性很差。
近年來,基于深度學習的目標檢測算法取得突破,逐漸取代傳統算法成為目標檢測算法的主流[4-6]。基于深度學習的算法主要分為兩類。第一類是基于區域的目標檢測算法,該類算法對物體進行兩步檢測,首先生成候選區域,然后對候選區域進行分類與回歸。這類算法最經典的框架為Girshick等[7]提出的R-CNN框架;He等[8]在R-CNN框架中加入空間金字塔池化提出SPP算法;Girshick[9]為解決R-CNN進行特征提取時大量重復運算提出了Fast R-CNN;Ren等[10]通過構建區域建議網絡生成候選框提出了Faster R-CNN;Mask R-CNN[11]使用RoIAlign代替RoIPooling,并在Faster R-CNN基礎上加上mask分支,增加相應loss,取得了更好的分類效果;Cascade R-CNN[12]通過級聯檢測網絡并基于不同的IOU閾值進行檢測。第二類算法是基于回歸的目標檢測算法,這類算法為單階段檢測算法,不需要生成候選區域,直接預測物體的類別概率和位置坐標,最典型的為YOLO系列和SSD系列。YOLOv1[13]使用單個網絡進行檢測,大大提升了目標檢測算法的速度,有很強的泛化能力;YOLOv2[14]引入FastR-CNN[12]的anchor box思想同時使用K-Means聚類方法產生anchor;YOLOv3[15]使用多標簽分類和跨尺度預測的方法,將YOLOv2的特征提取網絡Darknet-19增加為Darknet-53提升網絡的檢測精度。SSD[16]將YOLO的回歸思想和Faster R-CNN的anchor box機制結合;Fu等[17]提出DSSD將SSD算法基礎網絡從VGG-16更改為ResNet-101,增強網絡特征提取能力;FSSD[18]借鑒了FPN[19]的思想,重構了一組pyramid feature map,使得算法的精度有了明顯的提升。
在實際應用中,盡管網絡可以在服務器等大型計算機上達到實時檢測目標的效果,但是當將網絡結構移植到手機等嵌入式設備時卻難以達到該效果,因為嵌入式設備的處理器性能遠不如服務器等。Tiny-YOLO的出現一定程度上解決了該問題,它將主干網絡的層數大幅度減少,使模型的結構和參數數量減少,但網絡的檢測精度也隨之下降,難以在檢測精度與實時性兩者間取得較好的平衡。因此提出一種模型結構小、目標檢測效果穩定的輕量級網絡,將Tiny-YOLO的主干網絡替換為MobileNet[20],將模型移植到嵌入式平臺時滿足嵌入式平臺的計算能力,模型使用深度可分離卷積代替傳統卷積,使模型的參數數量更少,模型更小,同時采用多個點卷積來增加網絡的深度,使模型的檢測精度與檢測速度都得到提升。
YOLO系列是Redmon等提出的通用目標檢測算法,Tiny-YOLOv3是YOLOv3的輕量化網絡,它將YOLOv3的特征提取網絡Darknet-53縮減為一個7層的卷積神經網絡,并取消網絡中的全連接層,采用維度聚類生成先驗框和多尺度預測的技術提高檢測精度,模型結構簡單,參數數量和計算量較少,檢測速度更快。Tiny-YOLOv3的流程圖如圖1所示。

圖1 Tiny-YOLOv3檢測流程示意圖
具體檢測流程如下:
Step1輸入圖片,將圖片進行圖像預處理縮放至416×416大小。
Step2將輸入圖片劃分為13×13、26×26兩個尺度的網格單元,如果ground truth中某個物體的中心點落在網絡單元中,就由這個網格單元預測該物體。
Step3每個網格單元通過K-Means聚類方法生成3個先驗框,2個尺度共生成6個先驗框。
Step4將處理后的圖片輸入網絡進行特征提取,模型首先在13×13小尺度上預測輸出特征。
Step5將13×13小尺度的輸出特征進行一次1×1卷積和2倍上采樣后進行拼接,在26×26中尺度進行預測輸出特征。
Step6將兩個尺度預測輸出的特征進行融合,設定閾值過濾掉低于閾值的邊界框,將剩余的邊界框進行非極大值抑制得到最終的目標檢測結果。
Mobilenet[20]是為移動和嵌入式設備提出的一種輕量級神經網絡,主要基于深度可分離卷積思想。深度可分離卷積是網絡模型小型化的一種方式,它的本質是將標準卷積分解為兩個步驟:(1)逐通道的卷積Depthwise,一個卷積核對應一個通道,一個通道只被一個卷積核提取特征;(2)點卷積Pointwise,使用N個1×1的卷積核,將第一步得到的特征圖再串聯起來,維持特征的完整性。這種結構可以在減少輸出通道的同時實現跨通道的信息整合,在減少參數量的同時保持算法性能不下降[21]。標準卷積和深度可分離卷積如圖2所示。

圖2 標準卷積和深度可分離卷積
深度可分離卷積與傳統卷積的參數數量比值為:
(1)
式中:Dk為卷積核尺寸;M為輸入通道;N為輸出通道。由式(1)可知,在卷積網絡模型中使用深度可分離卷積層代替標準卷積層,對同一個圖像進行卷積操作得到相同維度的圖像特征所需要的計算量大幅度降低。
Tiny-YOLOv3是YOLOv3[15]的簡化版本,可以在手機移動和嵌入式設備上運行,但檢測精度較低,原因是特征提取網絡層數較少,不能提取出更高層次的語義特征。因此Mobilenet-YOLOv3將Tiny-YOLOv3的特征提取網絡替換為Moblienet[20],并將模型結構進行修改,增加網絡層數提高檢測精度。將Tiny-YOLOv3的雙尺度預測變為三尺度預測,更好地檢測類型不同的物體,提高檢測精度。改進后的網絡結構如圖3所示。

圖3 改進后的網絡結構圖
Moblienet-YOLOv3的特征提取網絡使用14個3×3個卷積核提取復雜背景下的物體信息,其中5層卷積的步長為2,對圖像進行下采樣代替YOLOv2中的池化層;10個1×1的卷積核進行跨通道的信息整合。最終特征圖變為原圖的1/32,圖像每進行一次卷積步長為2的下采樣操作,特征圖的通道數就增加一倍來充分利用特征圖的信息。
Moblienet-YOLOv3的檢測網絡借鑒了FPN多個scale特征融合的思想,采用13×13、26×26、52×52三尺度的特征圖對不同大小的目標進行檢測,可以加強對小目標的檢測精度。網絡在第34層進行32倍下采樣的檢測,然后進行一次點卷積和2倍上采樣與23層的特征進行特征拼接,在46層進行16倍下采樣的檢測。最后進行一次點卷積和2倍上采樣在58層進行8倍下采樣的檢測。進行特征拼接的原因是網絡同時學習深層特征與淺層特征,表達效果更好。圖3中,“Conv dw”表示深度可分離卷積;“Convolutional”表示Conv2d+BN+LeakyReLU;“Detection Set”是Convoltional1×1、Convoltional3×3、Convoltional1×1、Convoltional3×3、Convoltional1×1的組合檢測塊。
Moblienet-YOLOv3同樣使用了K-Means聚類來生成先驗框,設置先驗框的主要目的是使預測框與ground truth的IOU更好。13×13的特征圖感受野最大,因此先驗框的尺寸也最大,尺寸為(116×90)、(156×198)、(373×326),26×26的特征圖先驗框尺寸為(30×61)、(62×45)、(59×119),52×52的特征圖先驗框尺寸為(10×13)、(16×30)、(33×23)。每個網格預測3個邊界框,在訓練模型時,如果物體的中心點落在該網格內,則只選擇與真實邊框IOU重疊度最大的邊界框進行預測,舍棄其他IOU值較小的邊界框,這樣可以提高模型對小目標的檢測能力,使單元網格的邊界框提高泛化能力。每個邊界框輸出目標邊框的中心點坐標(x,y),高度h,寬度w和邊框的置信度5個參數,置信度的計算公式為:
(2)

(3)
式中:Classi為種類;Pr(Classi|object)為預測框中存在物體時,該物體屬于某一類的概率;i=1,2,…,I,I為檢測的類別數,在COCO數據集中I為80,在PASCAL VOC數據集中I為20。通過設定閾值, 過濾掉置信度低于閾值的邊界框, 并對類別置信度高于閾值的邊界框進行非極大值抑制后得到最終的邊界框。
本文的損失函數分為三部分,分別為邊界框坐標誤差、邊界框置信度誤差、分類誤差。損失函數計算公式為:

(4)

實驗使用的數據集是PASCAL VOC數據集和COCO數據集。PASCAL VOC數據集是評估圖像分類和目標檢測的基準數據集,這些圖片取自現實場景中的可視對象,共包含20類已經標注好的對象,其中訓練圖片使用VOC2007和VOC2012的train+val數據集,共包含16 551幅圖片的40 025個物體,測試圖片使用VOC2007的test數據集,共包含4 952幅圖片的12 032個物體。COCO數據集是微軟團隊提出的一個用來進行圖像分類和識別的數據集,通過使用Amazon Mechanical Turk在各類復雜的日常場景收集了80類對象類別,其中包括82 783幅訓練圖片,40 775幅測試圖片。
實驗操作系統為Ubuntu 16.04,深度學習框架為Keras。實驗硬件環境為Intel Core i7 8700處理器,GPU為NVIDIA GTX 1080Ti。
為了更好地理解Moblienet-YOLOv3,對其中應用的機制進行逐個測試來檢測每個機制對最終檢測性能的影響。首先對比Batch Normalization的效果,然后對K-Means聚類分析生成的先驗框與手動設置的先驗框進行對比,再對網絡結構的特征拼接部分進行實驗,使模型直接與特征拼接之后進行檢測對比,最后進行多尺度與單尺度檢測的對比實驗。實驗中除了對比機制不同,其他設置均相同,實驗結果如表1所示。

表1 網絡各個機制對比實驗
由表1可知,模型使用BN層之后,其mAP提升了2.1個百分點,網絡不需要每層都去學數據的分布,極大地降低過擬合,提升模型的收斂速度,防止梯度消失。模型使用K-Means維度聚類生成先驗框之后,mAP提升了3.1個百分點,模型通過在數據集上進行維度聚類,可以得到最為理想的先驗框來取代人為預設的先驗框,使模型更加容易產生準確的預測框。模型進行特征拼接之后可以同時學習深層特征與淺層特征,mAP提升了1.0個百分點。模型進行三尺度預測比單尺度預測mAP提升了1.5個百分點,多尺度檢測可以對不同大小的目標進行更精準的檢測,尤其對小目標的檢測效果更好。
為驗證本文算法的檢測性能,與Tiny-YOLOv2、Mobilenet-YOLOv2、Tiny-YOLOv3、Mobilenet-SSD,Faster RCNN等算法進行對比。模型訓練集為VOC 2007和VOC 2012,測試集為VOC 2007,實驗結果如表2所示。

表2 不同算法在VOC數據集測試結果
由表2可知,本文算法在對比的先進算法中檢測效果達到最佳,檢測mAP達到73.3%,比Tiny-YOLOv3的mAP高6.5個百分點。通過改進Tiny-YOLOv3的特征提取網絡,使網絡的層數加深,提取的特征更為詳細,深度可分離卷積保證了模型在檢測精度提高的同時模型參數數量沒有增加,取得較好的檢測效果。然后對比了Tiny-YOLOv3與Mobilenet-YOLOv3在VOC數據集中每一類的AP。通過表3可知,Mobilenet-YOLOv3對小物體鳥、瓶子、盆栽植物等具有較高的檢測精度,證明多尺度的檢測對于大小不同的物體尤其是小物體具有很好的檢測效果。圖4為在VOC數據集上的部分檢測結果。

表3 VOC數據集單類AP對比 %

圖4 模型在VOC數據集上的部分檢測結果
在COCO數據集上進行測試,COCO是一個比VOC更具挑戰的數據集,它含有80個種類。由表4中數據可知,本文算法在COCO數據集的模型大小為23 MB,為Tiny-YOLOv2模型大小的53%,Tiny-YOLOv3模型大小的67%,檢測效果上比Tiny-YOLOv3的mAP提高7.1個百分點,對種類較多和尺度不一的對象具有較高的魯棒性,與在VOC數據集上的評估結果基本一致。圖5為在COCO數據集上的一些檢測結果,可以看出,本文算法在實際環境中具有良好的魯棒性和可遷移性,能夠準確檢測出目標物體并進行分類。

表4 不同算法在COCO數據集測試結果

圖5 模型在COCO數據集上的檢測結果
為解決嵌入式設備計算能力較弱模型難以移植且檢測精度較低的問題,本文提出一種基于深度可分離卷積的輕量級目標檢測網絡,該模型將Tiny-YOLOv3的特征提取網絡替換為Mobilenet,使模型的參數數量與模型規模減少。通過K-Means聚類生成先驗框提高了模型的檢測精度,同時采用特征拼接和多尺度預測的方法保證模型對多類不同物體的檢測效果。實驗結果表明,本文算法與現有的其他算法相比具有一定的優勢,在提高物體檢測精度的同時保證較小的模型計算量。如何進行極端拍攝角度下目標檢測的漏檢現象,是下一階段的研究方向。