劉 革,鄭葉龍,趙美蓉
(天津大學(xué)精密測試技術(shù)及儀器國家重點實驗室,天津300072)
(*通信作者電子郵箱zhengyelongby@tju.edu.cn)
隨著智能信息時代的到來,作為車輛信息智能審核及其他智能交通系統(tǒng)的關(guān)鍵部分,車輛外框檢測[1-2]、車牌檢測[3-4]有著廣泛的應(yīng)用。
深度學(xué)習(xí)模型具有強大的特征表達能力,結(jié)合較大數(shù)據(jù)量的保證和計算力的進步,它正逐步成為機器視覺領(lǐng)域的熱點研究方向。目標(biāo)檢測是指從一張未知的圖像中分離出背景和感興趣的目標(biāo)并確定這一目標(biāo)的類別和位置。當(dāng)前基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測方法主要分兩類:一類是基于Anchorfree 思想的目標(biāo)檢測框架;另一類是基于Anchor 思想的目標(biāo)檢測框架?;贏nchor-free思想的目標(biāo)檢測框架通常使用關(guān)鍵點檢測的方法和密集預(yù)測的方法來完成檢測任務(wù),如CornerNet[5]、ExtremeNet[6]都是通過預(yù)測的關(guān)鍵點及關(guān)鍵點之間的幾何信息來確定目標(biāo)的位置;如CenterNet[7]通過密集預(yù)測方法直接得到檢測目標(biāo)的位置。這種基于Anchor-free思想模型結(jié)構(gòu)設(shè)計較為簡單,在移動端性能一般不如基于Anchor思想的目標(biāo)檢測框架?;贏nchor 思想的目標(biāo)檢測框架分為兩小類:一類是基于區(qū)域候選框的二階段目標(biāo)檢測框架,這種檢測框架先在圖像上生成若干可能包含目標(biāo)的候選區(qū)域,然后通過卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)分別對這些候選區(qū)域提取特征,最后通過卷積神經(jīng)網(wǎng)絡(luò)進行目標(biāo)位置的回歸與類別的識別,如Fast RCNN(Region Convolutional Neural Network)[8]、Faster RCNN[9]、R-FCN(Region-based Fully Convolutional Network)[10]等;另一類為一階段目標(biāo)檢測框架,這種目標(biāo)檢測框架直接從圖片獲得預(yù)測結(jié)果,將整個目標(biāo)檢測任務(wù)整合成一個端到端的任務(wù),而且只處理一次圖像即可得到目標(biāo)的類別與位置信息,如YOLO(You Only Look Once)[11-12] 、SSD(Single Shot multibox Detector)[13]、DSSD(Deconvolutional Single Shot Detector)[14] 、FSSD(Feature fusion Single Shot multibox Detector)[15]等。二階段檢測算法相比較于一階段檢測算法具有更高的識別準(zhǔn)確率和定位精度,而由于二階段檢測算法生成的中間候選區(qū)域存在很多不必要的重疊導(dǎo)致檢測時間增加,所以檢測速度不如一階段檢測算法。一階段檢測算法一般采取密集采樣候選區(qū)域的機制,這種機制通常會產(chǎn)生大量的負(fù)樣本使正負(fù)樣本不平衡,導(dǎo)致訓(xùn)練過程受到影響并降低最終的檢測準(zhǔn)確率。文獻[16]提出的RetinaNet 通過Focal Loss 成功地解決了這一問題,使一階段目標(biāo)檢測算法精度第一次高于當(dāng)時精度最高的二階段目標(biāo)檢測算法。
所以,本文采用RetinaNet 為車輛信息檢測框架,將車輛信息分為三類,包括含車頭的車外框、含車尾的車外框及車牌。算法的主要改進如下:
1)為了提高模型的前向推斷速度,本文以文獻[17]提出的MobileNet V3作為基礎(chǔ)特征提取網(wǎng)絡(luò)。
2)對于車牌這一小目標(biāo)的檢測精度不高問題,本文將RetinaNet 基礎(chǔ)特征提取網(wǎng)絡(luò)的C5 層經(jīng)過上采樣融合到FPN(Feature Pyramid Network)的P3 層,并通過1×1 的卷積對融合之后的特征層進行特征壓縮,使淺層特征層有更好的車牌高級語義信息進而提高車牌檢測精度。
3)本文通過引入文獻[18]提出的GIoU(Generalized Intersection over Union)這一優(yōu)化目標(biāo)加快模型擬合預(yù)測框與真實框的位置關(guān)系,并提高模型的預(yù)測精度。
4)由于原始RetinaNet 是針對常規(guī)的目標(biāo)檢測數(shù)據(jù)集設(shè)置的Anchor(檢測過程中的候選框)尺寸,針對本文車輛信息檢測這一數(shù)據(jù)集,本文使用文獻[19]提出的K-means++聚類算法得到Anchor 的較好尺寸并匹配到對應(yīng)的特征圖,進而提高檢測準(zhǔn)確度并提高召回率。
通過實驗表明,本文提出的算法相較于其他目標(biāo)檢測算法精度有明顯的提升。
本文算法的整體結(jié)構(gòu)如圖1 所示,圖中的C3、C4、C5、P3、P4、P5、P6、P7 特征層和原始RetinaNet 網(wǎng)絡(luò)相對應(yīng)。左邊部分首先對圖像進行預(yù)處理,將處理后的結(jié)果作為輸入送入網(wǎng)絡(luò),然后經(jīng)過輕量級網(wǎng)絡(luò)提取初步特征,由于需要滿足移動端實時檢測需求,本文使用MobileNet V3 作為基礎(chǔ)特征提取網(wǎng)絡(luò);中間部分使用基于文獻[20]提出的FPN(Feature Pyramid Network,F(xiàn)PN)算法改進的結(jié)構(gòu),對基礎(chǔ)特征提取網(wǎng)絡(luò)的低層細(xì)節(jié)特征信息與高層語義特征信息進行融合,以豐富每一特征層的感受野,使FPN 輸出的每一特征層都能預(yù)測不同尺度的目標(biāo)。在原始RetinaNet 的FPN 模塊中,深層特征層經(jīng)過多次卷積及上采樣操作之后,深層特征層的語義信息很難傳達到淺層特征層,導(dǎo)致淺層用于檢測小目標(biāo)的特征層缺乏一定的深層語義信息。在本文的應(yīng)用場景中,針對車牌這一小目標(biāo)檢測精度較低的問題,本文將基礎(chǔ)特征提取網(wǎng)絡(luò)的C5特征層經(jīng)過四倍上采樣與FPN 的P3 特征層堆疊(如圖1 加粗箭頭表示),并通過1×1的卷積層對堆疊后的特征通道進行壓縮融合恢復(fù)到原來的特征層通道數(shù),以提高淺層特征層的高層語義信息;右邊部分為分類和定位模塊基于FPN 提取的特征對原始圖像中的目標(biāo)進行分類和位置回歸。分類子網(wǎng)絡(luò)的輸出通道數(shù)為9,即為每個最終輸出特征層的Anchor 數(shù)量;定位子網(wǎng)絡(luò)的輸出通道數(shù)為9×4,即為每個最終輸出特征層的Anchor 數(shù)量與Anchor 位置預(yù)測值數(shù)量的乘積。其中所有的分類子網(wǎng)絡(luò)和所有的定位子網(wǎng)絡(luò)分別共享不同的權(quán)重。
圖1 改進的RetinaNet整體結(jié)構(gòu)Fig. 1 Overall structure of improved RetinaNet
當(dāng)前很多目標(biāo)檢測算法的定位代價損失函數(shù)都使用預(yù)測框與真實框角點坐標(biāo)距離的1-范數(shù)Loss 或者2-范數(shù)Loss,然而在最終評測模型性能的時候是使用預(yù)測框與真實框的交并比(Intersection over Union,IoU)來判斷是否正確檢測到目標(biāo)。由圖2 可以看出,模型對這兩者的優(yōu)化不是等價的,當(dāng)預(yù)測框與真實框的2-范數(shù)Loss 相等的時候兩者的IoU 卻不相等。圖中右上角在圓心的矩形框為真實框,右上角在圓上的矩形框為預(yù)測框,可以看出預(yù)測框與真實框的2-范數(shù)Loss 都是相等的,但是第三個的IoU 明顯高于前兩個,所以擬合效果也優(yōu)于前兩者。
但是若直接采取IoU 當(dāng)作評價模型性能好壞的標(biāo)準(zhǔn),當(dāng)預(yù)測框與真實框沒有交集時,不管兩者之間的距離有多遠(yuǎn)相對應(yīng)的IoU 都為零,這就導(dǎo)致這種情況出現(xiàn)時模型沒有能力度量預(yù)測框與真實框的距離?;诖?,本文提出了一種新的度量預(yù)測框與真實框擬合程度的方法,即GIoU。對于預(yù)測框A與真實框B,可以算出兩者的最小凸集(包含A、B的最小包圍框)C。通過最小凸集,可以計算GIoU。IoU 和GIoU 的計算公式如下:
式(2)中的減數(shù)部分分子為最小凸集中不包含A或者B的部分。GIoU 與IoU 相似,GIoU 作為一個距離度量指標(biāo),其損失函數(shù)LGIoU計算如式(3)所示:
由GIoU 計算公式可以得知,GIoU 總是小于等于IoU,由IoU 計算公式(1)可得0 ≤IoU ≤1,所以由式(3)可得-1 ≤GIoU ≤1,即只有當(dāng)預(yù)測框與真實框完全重合時GIoU= 1。而且,當(dāng)預(yù)測框與真實框IoU為零時GIoU轉(zhuǎn)換為式(4):
此時預(yù)測框與真實框相離越遠(yuǎn)GIoU 越接近-1,而A∪B不變,要對GIoU 進行優(yōu)化必須使C逐漸變小,即預(yù)測框與真實框越來越接近。
圖2 相同2-范數(shù)loss不同IoUFig. 2 Different IoUs for same 2-norm loss
Anchor 機制起初是由Faster-RCNN 提出,后來被廣泛用于一階段及二階段目標(biāo)檢測框架,如SSD、YOLO、RetinaNet等。Anchor主要用來解決目標(biāo)檢測任務(wù)中尺度及寬高比例變化范圍過大的問題,模型訓(xùn)練的時候真實標(biāo)簽被編碼為相對于Anchor 的偏移量,模型測試時根據(jù)模型預(yù)測相對于Anchor的偏移量來解碼檢測結(jié)果。通過Anchor 機制,將尺度和寬高比例的空間劃分為相應(yīng)的幾個子空間,降低了目標(biāo)檢測任務(wù)的難度,使模型更容易學(xué)習(xí)。針對本文的應(yīng)用場景,由于RetinaNet 使用的是一般物體檢測數(shù)據(jù)集,所以原始RetinaNet選定的Anchor 尺度和寬高比在本文的檢測任務(wù)中并不適用?;诖?,本文使用K-means++聚類算法對車輛信息數(shù)據(jù)集的真實標(biāo)注框進行聚類操作,真實標(biāo)注框長寬映射到模型輸入大小size下的聚類結(jié)果如圖3所示。
圖3 真實boxes長寬聚類值Fig. 3 Real boxes lenghth-width cluster values
由圖3 可以看到,有3 個聚類簇,車牌的長寬對應(yīng)坐標(biāo)聚集在[31,19]附近,兩種類型車外框的長寬對應(yīng)坐標(biāo)分別聚集在[124,130]、[159,171]附近。
所以,本文以[19×19,38×38,76×76,152×152,304×304]作為5 個對應(yīng)特征層的Anchor 尺寸,以[0.6,1,1.8]作為Anchor 的長寬比。使用對真實框維度聚類的方法可以使Anchor 尺寸更加接近真實值,使模型更容易擬合目標(biāo)的真實位置,從而降低模型的訓(xùn)練難度。
本文實驗在計算機配置為Ubuntu 16.04、CUDA(Compute Unified Device Architecture)8.0、cuDNN(CUDA Deep Neural Network library)5.1、NVIDIA Tesla P40 的系統(tǒng)下進行,使用的深度學(xué)習(xí)框架為Pytorch 0.4.1,開發(fā)語言為Python 2.7。
本文采用的車輛信息數(shù)據(jù)集為自己采集,由Labelme 標(biāo)注軟件標(biāo)注,并轉(zhuǎn)換成PASCAL VOC(Visual Object Classes)[21]的數(shù)據(jù)集格式,總樣本量大小為29 340 張,車輛類型、車牌顏色、拍攝車輛的角度、車輛在圖片中的尺寸比例、光照、背景環(huán)境及圖像分辨率在數(shù)據(jù)集中都存在很大的變化,對于檢測算法有較高的要求。通常情況下,單個檢測目標(biāo)可以通過1 000個測試樣本來評估模型的檢測性能。綜合考慮本文改進方法在測試集上的有效評估和模型通過訓(xùn)練樣本得到充分訓(xùn)練兩方面因素,本實驗基于車輛信息檢測模型的任務(wù)復(fù)雜度和PASCAL VOC 設(shè)置數(shù)據(jù)集的方式將總樣本按照大約8∶2 的比例隨機劃分為訓(xùn)練集和測試集。訓(xùn)練階段首先對圖片先進行數(shù)據(jù)增強預(yù)處理以提高模型的泛化能力,包括隨機縮放、隨機水平翻轉(zhuǎn)、隨機padding、隨機裁剪、隨機旋轉(zhuǎn)、隨機色度扭曲、隨機添加噪聲、隨機對比度變換、像素值標(biāo)準(zhǔn)化,并將增強后的圖片resize 到224×224 送入模型。在測試階段,首先對輸入的圖片進行像素值標(biāo)準(zhǔn)化及進一步resize 到224×224 的操作,然后送入模型進行預(yù)測。同時在訓(xùn)練階段,為了防止Anchor與真實框沒有IoU大于0.5的情況,本實驗設(shè)置當(dāng)出現(xiàn)這種情況時將與真實框IoU 最高的Anchor作為對應(yīng)類別的正樣本參與訓(xùn)練。
基于遷移學(xué)習(xí)的方法,本文使用在ImageNet 數(shù)據(jù)集預(yù)訓(xùn)練的MobileNet V3 作為基礎(chǔ)特征提取網(wǎng)絡(luò),優(yōu)化器選擇小批量隨機梯度下降(mini-batch Stochastic Gradient Descent,minibatch SGD),動量為0.9,權(quán)重衰減為1E-4,batch size 設(shè)置為512,初始學(xué)習(xí)率設(shè)置為0.001,每經(jīng)過30個epoch學(xué)習(xí)率下降10倍,共訓(xùn)練100個epoch。
本實驗針對車牌、包含車頭部分的車外框、包含車尾部分的車外框這三類檢測目標(biāo),根據(jù)以下公式計算查準(zhǔn)率(Precision)與查全率(Recall)。
其中:準(zhǔn)確率代表模型預(yù)測出的樣本中真樣本的比例;查全率為模型預(yù)測出的正樣本占所有正樣本的比例。其中:TP(True Positive)為被模型預(yù)測為真的正樣本;FP(False Positive)為模型預(yù)測為真的負(fù)樣本;FN(False Negative)為模型預(yù)測為非真的正樣本。按照PASCAL VOC 計算平均準(zhǔn)確率(Average Precision,AP)的方法,由每個類別的查準(zhǔn)率和查全率可以計算出每個類別的AP。
實驗一以MobileNet V3 為基礎(chǔ)網(wǎng)絡(luò),以RetinaNet 為原始檢測框架,以交并比閾值為0.7 時每個類別的AP 和三個類別的平均準(zhǔn)確率均值(mean AP,mAP)作為不同改進方法作用于原始RetinaNet 的評價標(biāo)準(zhǔn)。實驗結(jié)果如表1 所示,當(dāng)在MobileNet V3 的基礎(chǔ)上不使用維度聚類操作而直接使用RetinaNet 原始的Anchor 尺寸及長寬比時,模型性能較低,尤其車牌部分AP值較低;在原始模型的基礎(chǔ)上把位置回歸的代價函數(shù)改進為GIoU-Loss 后,車牌的AP 值有10 個百分點的提高;在原始模型的基礎(chǔ)上加入維度聚類操作后,車輛外寬的AP 值穩(wěn)定的情況下車牌的AP 值有接近27 個百分點的提高;在原始模型FPN的基礎(chǔ)上嵌入特征融合分支后,車牌的AP值有10.3 個百分點的提高,同時mAP 有3.4 個百分點的提高;當(dāng)同時引入維度聚類和改進的FPN 特征融合的方法后,mAP相對于只加入維度聚類有1.2 個百分點的提高,同時mAP 相對于只加入改進的FPN 特征融合有6.5 個百分點的提高;當(dāng)同時引入維度聚類和GIoU-Loss的方法后,mAP相對于只引入GIoU-Loss 有6.8 個百分點的提高,同時mAP 相對于只加入維度聚類有1.3 個百分點的提高;當(dāng)同時引入GIoU-Loss 和改進的FPN 特征融合方式的方法后,mAP相對于只引入GIoU-Loss有0.6 個百分點的提高,同時mAP 相對于只加入改進的FPN特征融合方式有0.4 個百分點的提高;當(dāng)同時引入維度聚類、改進的特征融合方式、GIoU-Loss 的方法后,車牌的AP 值相對于原始RetinaNet 的方法有30.3 個百分點的提高,同時mAP有10.2個百分點的提高。
表1 不同模塊對模型的性能影響對比Tab. 1 Comparison of effects of different modules on performance of model
改進后算法與原算法預(yù)測實驗效果對比如圖4 所示。由圖4 第一行兩張圖可見,改進后的車牌檢測效果相較于未改進的算法定位更加準(zhǔn)確;由圖4 的第二行兩張圖可見,原始算法中有車燈被誤檢為車牌,改進后的車牌檢測效果準(zhǔn)確率和召回率都更高。
圖4 改進后算法與原算法效果比較Fig. 4 Comparison between improved algorithm and original algorithm
實驗二為本文提出的算法與其他目標(biāo)檢測算法在本文的車輛信息數(shù)據(jù)集上的性能對比,以IoU閾值為0.5進行性能評估,實驗結(jié)果如表2 所示。由實驗結(jié)果可知,本文所提出的算法準(zhǔn)確率高于其他算法。
表2 本文算法與其他方法的性能對比Tab. 2 Performance comparison among proposed method and other methods
針對RetinaNet 原始算法直接運用在本文的車輛信息檢測數(shù)據(jù)集上性能不高的問題,本文使用維度聚類算法初始化Anchor 使模型更容易收斂,在原有模型的基礎(chǔ)上融合深層的特征信息到淺層特征層以提高淺層特征層的車牌高級語義信息,同時引入更加接近檢測任務(wù)的評價標(biāo)準(zhǔn)GIoU-Loss作為代價函數(shù)以提高模型的定位能力。實驗結(jié)果表明,改進后的算法對于車牌這一小目標(biāo)的檢測準(zhǔn)確率及檢測的平均準(zhǔn)確率都有很大的提高。經(jīng)測試,本文提出的以MobileNet V3 為基礎(chǔ)特征提取網(wǎng)絡(luò)的車輛信息檢測算法經(jīng)移動端深度學(xué)習(xí)框架優(yōu)化后,在ARM v7 設(shè)備上單幀前向推斷用時可達100 ms,可以滿足工業(yè)實時檢測要求。實驗結(jié)果證明了本文提出算法的可行性和實用性,當(dāng)然本文提出的方法還有很多地方需要改進,比如本文使用未剪枝的MobileNet V3 作為基礎(chǔ)特征提取網(wǎng)絡(luò),一些冗余通道的存在增加了計算量且降低了推斷速度,在本文的模型基礎(chǔ)上進行模型壓縮仍然需要更進一步的研究。