阮祥偉, 李 華, 余 燁
(1.中國電子科技集團 第三十八研究所,安徽 合肥 230088; 2.合肥工業(yè)大學 計算機與信息學院,安徽 合肥 230601)
車標作為車輛制造商的標識,難以進行更改和去除,是提取和判別車輛信息的重要輔助手段[1]。車標檢測的研究存在著諸多挑戰(zhàn),如車標種類繁多、形狀復(fù)雜、在圖像中占比過小、部分車標相似度大、背景干擾信息復(fù)雜和圖像分辨率參差不齊等,因此車標檢測仍然存在很大的研究空間,快速、準確地檢測和識別車標成為越來越多學者關(guān)注的問題。
傳統(tǒng)的車標檢測方法大多是先根據(jù)車牌的位置對車標進行粗定位,然后對粗定位區(qū)域做形態(tài)學處理實現(xiàn)精定位,最后使用手工描述子提取特征進行分類。文獻[2]首先使用局部特征描述子(local binary pattern, LBP)算法提取特征,利用級聯(lián)(cascade)分類器對車牌進行定位,根據(jù)車牌的位置確定車標的粗定位區(qū)域;然后根據(jù)粗定位區(qū)域的邊緣梯度特征對車標進行精定位;最后使用方向梯度直方圖(histogram of oriented gradients, HOG)提取特征,結(jié)合支持向量機(support vector machine, SVM)分類器進行識別。文獻[3]在車牌位置確定的前提下,根據(jù)車標和車牌的相對位置,使用HOG算法提取特征,然后采取多尺度滑動窗口的策略,結(jié)合SVM分類器對車標進行識別。文獻[4]首先檢測出車輛的位置,然后分割獲得感興趣區(qū)域,提取感興趣區(qū)域的HOG特征,使用自適應(yīng)提升(adaptive boosting, Adaboost)算法和SVM分類器對車標進行分類。
傳統(tǒng)的車標檢測算法存在如下缺點:① 由于傳統(tǒng)車標檢測算法大多是基于車牌位置提出的,因此車牌定位精確度會直接影響車標的檢測;② 不同光照的復(fù)雜性也會使得形態(tài)學處理較為困難,難以獲得準確的車標位置;③ 手工描述子固定不變,無法準確地提取車標完整的特征信息,影響車標的識別率。
隨著計算機硬件的不斷發(fā)展,原本受限于計算機算力和內(nèi)存的深度學習得到迅速發(fā)展,越來越多的學者開始針對卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)進行深入研究,基于卷積神經(jīng)網(wǎng)絡(luò)的車標檢測算法也在迅猛發(fā)展。文獻[5]提出了基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)(region-based CNN, R-CNN)算法,該算法首先生成候選框區(qū)域,使用CNN網(wǎng)絡(luò)提取候選區(qū)域的特征,通過SVM進行分類,得到待檢測目標的位置和類別。相比于傳統(tǒng)方法,R-CNN在目標檢測的精度上提升很大,但是需要對每一個候選框的原始圖像進行特征提取,且候選框的數(shù)目巨大,導致算法速度非常緩慢。因此,文獻[6]提出了faster-RCNN目標檢測算法,通過區(qū)域建議網(wǎng)絡(luò)(region proposal network, RPN)結(jié)構(gòu)代替過去比較耗時的選擇性搜索方法,在速度上得到了很大的提高。R-CNN系列方法雖然在目標檢測的精度上有很好的效果,但是需要先選出候選區(qū)域,然后提取特征進行分類,導致檢測速度很慢。
為了使檢測的速度變得更快,滿足實時要求,文獻[7]提出了更快的One-Stage目標檢測方法YOLO,相比于R-CNN系列的Two-Stage檢測方法,YOLO避免了候選區(qū)域的生成,直接通過卷積神經(jīng)網(wǎng)絡(luò)進行目標檢測和定位,因此YOLO的檢測速度更快,但是其檢測精度特別是對于小目標的檢測精度有所降低。針對One-Stage方法檢測精度低的問題,文獻[8-9]對YOLO算法進行了優(yōu)化和改進,提出了YOLOv2[8]和YOLOv3[9],使用了錨框輔助定位、多尺度訓練、殘差結(jié)構(gòu)優(yōu)化網(wǎng)絡(luò)、特征金字塔等方法提高檢測精度。YOLOv3算法在檢測的精度和速度上都有很大的提升,性能超過了SSD[10]、DSSD[11]和RetinaNet[12]等目標檢測算法。文獻[13]針對車標和小目標的檢測問題對YOLOv3進行改進,改進的YOLOv3能夠在所給的車標檢測數(shù)據(jù)集中快速地檢測出車標,但是檢測精度有待提升。大多數(shù)目標檢測方法都需先窮舉出目標可能存在的區(qū)域,然后對該位置的物體進行分類,這樣不僅步驟繁瑣,還會浪費大量的時間。為解決上述問題,文獻[14]提出了CenterNet目標檢測算法,該算法首先采用關(guān)鍵點估計找到中心點,然后再回歸目標的尺寸和偏移方向。與基于包圍盒的檢測器相比,CenterNet是端到端可微分的,具有更簡單直觀的優(yōu)勢,檢測速度更快,并且直接應(yīng)用于車標檢測任務(wù)中也有著良好的表現(xiàn)。
針對車標這一目標,本文以YOLOv3算法為基礎(chǔ),對其進行改進,并提出了一種速度快、精度高的車標檢測算法(network of vehicle logo detection,NVLD)。本文重新設(shè)計了一種特征提取網(wǎng)絡(luò),替代YOLOv3中的基礎(chǔ)網(wǎng)絡(luò)Darknet-53,使得對車標等小目標的特征提取速度更快,更加精確;改進特征金字塔網(wǎng)絡(luò)結(jié)構(gòu),融合更多的淺層卷積層特征信息,提升網(wǎng)絡(luò)對于車標小目標的檢測精度;在YOLOv3損失函數(shù)的基礎(chǔ)上設(shè)計并添加了IOU損失函數(shù),能夠更準確地進行邊界框回歸,提高車標檢測的精度。實驗結(jié)果表明,針對車標這一目標,本文提出的車標檢測算法比其他目標檢測算法的準確率更高、檢測速度更快。
NVLD骨干網(wǎng)絡(luò)的輸入是416×416×3大小的整車圖像,其中3為輸入圖像的通道數(shù),2個416分別為輸入圖像的寬和高。經(jīng)過骨干網(wǎng)絡(luò)的各個卷積層將特征圖的尺寸大小和通道數(shù)依次調(diào)整為208×208×64、104×104×128、52×52×256、26×26×512、13×13×1 024。本文借鑒MobileNet網(wǎng)絡(luò)中的深度可分離卷積策略,先使用1×1的卷積核控制各個通道組卷積后的通道數(shù),再使用3×3的卷積核對各個通道組進行卷積,從而減少了計算量和存儲空間,提升了提取特征的速度,進而提升了車標檢測的速度。NVLD骨干網(wǎng)絡(luò)共由33個卷積層構(gòu)成,如圖1所示。圖1中每個卷積層用“Cfk/sg”表示,C、f、k、s分別表示通道數(shù)、卷積核大小、步長和分組數(shù)。在每個卷積層后增加批量歸一化(batched normalization,BN)和修正線性單元(rectified linear unit, ReLU)操作。圖1中虛框表示改進的殘差結(jié)構(gòu),它采用2個分支的卷積操作,將輸入為2x×2x×f(高×寬×通道數(shù))的特征圖轉(zhuǎn)化為2個x×x×2f的特征圖,并進行特征值相加。
圖1 NVLD骨干網(wǎng)絡(luò)結(jié)構(gòu)
特征金字塔結(jié)構(gòu)可以提高目標檢測的精度,已被廣泛應(yīng)用于目標檢測,尤其是小目標檢測算法中。特征金字塔網(wǎng)絡(luò)(feature pyramid networks, FPN)[15]目標檢測算法對經(jīng)典的特征金字塔進行改進,通過上采樣的方式,重用淺層網(wǎng)絡(luò)卷積層的信息,利用多尺度融合檢測機制,提高了小目標檢測的準確率。
本文針對車標等小目標所表現(xiàn)出來的特點進行分析,在FPN的基礎(chǔ)上,對在特征金字塔結(jié)構(gòu)中利用淺層網(wǎng)絡(luò)卷積下采樣和反卷積上采樣的操作,加以多尺度、多特征層融合的方式,提高淺層特征的利用率,經(jīng)典的FPN和本文改進的FPN結(jié)構(gòu)如圖2所示。
圖2 經(jīng)典的FPN和本文改進的FPN結(jié)構(gòu)
首先,對骨干網(wǎng)絡(luò)中13×13×1 024大小的特征圖進行反卷積操作生成26×26×512大小的特征圖,然后將反卷積操作獲得的特征圖與骨干網(wǎng)絡(luò)中26×26×512大小的特征圖對應(yīng)值相加,即進行Add操作。
其次,對骨干網(wǎng)絡(luò)中52×52×256大小的特征圖進行卷積下采樣操作生成26×26×512大小的特征圖,然后將生成的特征圖與Add操作得到的特征圖進行特征值通道疊加,即Concat操作,形成一個新的融合了更多淺層信息的26×26×512大小的特征圖。同樣地,將26×26×512大小的特征圖進行反卷積操作生成52×52×256大小的特征圖,然后與骨干網(wǎng)絡(luò)原有的52×52×256大小特征圖進行Add操作,再與骨干網(wǎng)絡(luò)中104×104×128大小特征圖經(jīng)過卷積下采樣后生成的52×52×256大小的特征圖進行Concat操作。
最后,本文對13×13×1 024大小的特征圖和新的26×26×512、52×52×256大小的特征圖進行一系列卷積操作,利用YOLOv3檢測模塊進行邊界框回歸和類別預(yù)測。
目標檢測任務(wù)的目的包括檢測圖像中目標的位置與類別,為了衡量這2個最重要的因素,最常用的評估指標是平均精度均值(mean average precision, mAP),其中,評價預(yù)測的邊界框是否準確的指標是交并比(intersection over union, IOU)。YOLOv3的損失函數(shù)包括置信度損失函數(shù)Lossobj、中心坐標損失函數(shù)Losscenter、寬高大小損失函數(shù)Lossscale和類別損失函數(shù)Losscls。為了更精確地回歸出邊界框,本文在YOLOv3損失函數(shù)的基礎(chǔ)上增加了一個IOU損失,IOU損失的計算公式為:
Lossiou=1-IOU
(1)
(2)
Lossnvld=Lossobj+Losscenter+Lossscale+Losscls+Lossiou
(3)
(2)式中,A、B為預(yù)測邊界框和真實邊界框;IOU為預(yù)測邊界框和真實邊界框的交集與并集的比值;σ為很小的正數(shù),保證|A∪B|+σ和Lossiou的值大于0。由定義可以看出,IOU具有尺度不變性,而且與評價標準一致,因此更能精確地表示邊界框預(yù)測是否準確。如(3)式所示,本文的損失函數(shù)Lossnvld是由YOLOv3的損失函數(shù)(Lossobj+Losscenter+Lossscale+Losscls)增加IOU損失函數(shù)Lossiou組成的。
本文用于車標檢測研究的數(shù)據(jù)集是HFUT-VL3,來源于中國高速公路上的卡口系統(tǒng)抓拍的車輛圖像,經(jīng)過篩選并去除背景等處理,只保留整車圖像。車標檢測算法主要用于輔助公安部門進行車輛信息的提取,車輛主要來源于公路上卡口抓拍的圖像,因而本文使用公路卡口系統(tǒng)抓拍的圖像做數(shù)據(jù)集更加符合要求,具有更高的實際意義。
值得注意的是,公路卡口系統(tǒng)中的攝像頭主要抓拍露天圖片,會受到天氣的影響,如遇雨雪、大霧等惡劣天氣,就會出現(xiàn)夜晚整體圖像低光、車燈高光、反射前車燈或者卡口的光導致局部高光等不利情況。這些干擾因素增加了車標檢測的難度,對車標檢測算法的要求更高,更具挑戰(zhàn)性,因此,本文旨在更好地克服這些難題。HFUT-VL3數(shù)據(jù)集的示例圖像如圖3 所示。
HFUT-VL3 車標檢測數(shù)據(jù)集共7 021張,圖片大小從156×232到515×422,總計27類車標,種類如圖4所示。
本次實驗使用4 948張圖像作為訓練集,2 071張圖像作為測試集,每種類別的訓練和測試比例大約為2∶1。
圖3 HFUT-VL3數(shù)據(jù)集示例
圖4 27類車標
本實驗的軟件環(huán)境為MXNet深度學習框架、Cuda10.0,硬件為Intel Core i7-8700 K CPU、32 GiB內(nèi)存和2080Ti顯卡。本文的結(jié)果是在損失函數(shù)趨于穩(wěn)定以后,取后20次迭代的網(wǎng)絡(luò)模型對測試集進行測試,并對所得的結(jié)果求其均值,因此排除了偶然性,更能表現(xiàn)算法的實際效果。
本文計算mAP時設(shè)置IOU的閾值為0.5。當IOU為0.5時,預(yù)測的邊界框和真實的邊界框相交的面積大約是真實邊界框的2/3,一定程度上能夠保證車標定位的準確度。若IOU閾值增大,為滿足預(yù)測框和真實框的交并比不低于閾值,相應(yīng)的預(yù)測框會減少,漏檢的車標會增多;相反,若IOU閾值減小,預(yù)測框定位不準確,誤檢的車標可能會變多。綜上所述,為了滿足實際需求,選擇IOU為0.5計算mAP的值。
基于YOLOv3檢測方法,本文提出的NVLD算法針對車標,一方面改變了提取特征的基礎(chǔ)網(wǎng)絡(luò),使之更快、更加準確地提取特征;另一方面,改變了特征金字塔的上采樣方式,對淺層網(wǎng)絡(luò)進行特征重用,對小目標的檢測更準確;最后增加了IOU損失,使得預(yù)測的邊界框更符合評價標準,提高了檢測的精度。為驗證上述改進的有效性,本文針對改進內(nèi)容進行結(jié)果對比,見表1所列。
表1中,速度為訓練時每秒處理的圖像數(shù)目;OBB(our backbone)是使用本文的骨干網(wǎng)絡(luò)替代YOLOv3的骨干網(wǎng)絡(luò)(Darknet-53)形成的車標檢測網(wǎng)絡(luò);OBB+OFPN(our backbone+our FPN)是在YOLOv3的基礎(chǔ)上使用本文的骨干網(wǎng)絡(luò)和改進的特征金字塔結(jié)構(gòu)形成的車標檢測網(wǎng)絡(luò);OBB+OFPN+IOUloss (our backbone+our FPN+IOUloss)是在YOLOv3的基礎(chǔ)上將本文的骨干網(wǎng)絡(luò)和改進的特征金字塔以及以IOU作為損失函數(shù)組合而成的NVLD車標檢測網(wǎng)絡(luò)。由實驗結(jié)果可以看出,相對于YOLOv3的骨干網(wǎng)絡(luò)Darknet-53,本文的骨干網(wǎng)絡(luò)在稍微提高檢測精度的前提下,在速度上提高了大約2倍;針對車標小目標改進的淺層網(wǎng)絡(luò)信息重用的特征金字塔結(jié)構(gòu)mAP提升了將近1%;針對邊界框回歸設(shè)計的IOU損失函數(shù)也將檢測精度提升了近0.4%。綜合所有的改進,相比于YOLOv3檢測網(wǎng)絡(luò),本文車標檢測網(wǎng)絡(luò)的mAP提升了1.5%,而檢測速度僅僅是YOLOv3的1/2。
表1 改進有效性驗證結(jié)果
為了評估本文提出的車標檢測方法比其他檢測網(wǎng)絡(luò)的檢測具有優(yōu)勢,本文將提出的NVLD與其他檢測方法進行實驗比較。實驗結(jié)果見表2所列。從表2可以看出,針對車標檢測算法任務(wù)提出的NVLD算法具有最高的mAP。對于Two-Stage算法,以Faster-FCNN為代表,本文的NVLD算法在精度上略高于Faster-RCNN,在速度上是Faster-RCNN的近20倍;對于One-Stage算法,如YOLO、SSD和DSSD,其檢測精度mAP均低于NVLD檢測算法,相比于YOLOv3算法(Darknet-53為骨干網(wǎng)絡(luò)),本文車標檢測算法的mAP提升了1.5%;相比于SSD算法(VGG16為骨干網(wǎng)絡(luò)),NVLD算法的mAP提升了近2%;以MobileNetv1為骨干網(wǎng)絡(luò)的YOLOv3速度是最快的,但是mAP比NVLD低了近3%;對于免錨框的One-Stage算法CenterNet,NVLD的mAP也略高于CenterNet,檢測的速度也比CenterNet快;NVLD車標檢測算法的mAP為94.91,比其他檢測算法的mAP都高,檢測速度更是達到了74張/s,表明本文的車標檢測算法NVLD綜合了速度和精度的優(yōu)勢,更適合實際生活中的車標檢測任務(wù)。
表2 NVLD與其他算法的比較
基于YOLOv3檢測算法,本文提出了一種速度更快、精確度更高的車標檢測方法NVLD。首先在借鑒MobileNet和ResNet思想的基礎(chǔ)上,NVLD檢測方法采用一種新的特征提取基礎(chǔ)網(wǎng)絡(luò),用于代替YOLOv3的基礎(chǔ)網(wǎng)絡(luò)Darknet-53,提高了檢測的精度和速度;其次NVLD針對車標小目標修改了YOLOv3中的特征金字塔結(jié)構(gòu),使用反卷積的方式進行上采樣,并用特征值加的方式融合了更多的淺層卷積層信息;最后在損失函數(shù)部分增加IOU損失更加全面精確地進行邊界框回歸。實驗結(jié)果表明本文提出的車標檢測方法在速度和精度上都有很大的提升,更加符合車標檢測的實際需求。