楊玲倩
(西南民族大學(xué)電子信息學(xué)院,成都 610041)
當(dāng)今社會(huì)高速發(fā)展,汽車的保有量不斷增加,交通系統(tǒng)也在不斷發(fā)展。對(duì)于道路上行駛的車輛來(lái)說(shuō),其最明顯的身份標(biāo)識(shí)就是車牌。在智能交通系統(tǒng)中,車牌檢測(cè)技術(shù)可以提供實(shí)用、高效的管理辦法,是其重要組成部分。它不僅能應(yīng)用到收費(fèi)站系統(tǒng)中進(jìn)行檢測(cè),也能應(yīng)用到城市交通中各種場(chǎng)景的智能監(jiān)控。除了上述應(yīng)用場(chǎng)景會(huì)產(chǎn)生一些固定視角的檢測(cè)圖片外,還有一些需要檢測(cè)的車牌圖像需通過(guò)無(wú)人機(jī)或手機(jī)等便攜式設(shè)備進(jìn)行拍攝,但這類設(shè)備拍攝的圖像通常會(huì)出現(xiàn)質(zhì)量低、容易模糊等缺點(diǎn)。正因如此,算法也需要應(yīng)對(duì)更加復(fù)雜的自然場(chǎng)景,不僅要求算法能夠迅速檢測(cè)到圖片中的內(nèi)容,達(dá)到實(shí)時(shí)檢測(cè)的效果;也要求算法能夠?qū)Σ煌瑘?chǎng)景的圖片進(jìn)行檢測(cè),提高其魯棒性。因此,對(duì)于自然場(chǎng)景下實(shí)時(shí)車牌檢測(cè)算法的研究存在很高的應(yīng)用價(jià)值。
自然場(chǎng)景下的車牌檢測(cè)任務(wù)需要達(dá)到精度高、實(shí)時(shí)性好的要求,并且網(wǎng)絡(luò)應(yīng)該具有較少的參數(shù)量,從而網(wǎng)絡(luò)可以搭建在移動(dòng)端口,同時(shí)也要求網(wǎng)絡(luò)能夠?qū)崿F(xiàn)高精度的檢測(cè)。因此,本文專注于在輕量級(jí)網(wǎng)絡(luò)構(gòu)建的基礎(chǔ)上提高車牌檢測(cè)精度,搭建單階段的目標(biāo)檢測(cè)網(wǎng)絡(luò)框架,通過(guò)引入輕量級(jí)的功能模塊來(lái)提高車牌的檢測(cè)精度以提高檢測(cè)的實(shí)時(shí)性。本文主要貢獻(xiàn)如下:
(1)設(shè)計(jì)了一種基于單階段anchor-free的輕量化目標(biāo)檢測(cè)框架,網(wǎng)絡(luò)不再分階段提取特征,不再需要錨框計(jì)算,減少了模型參數(shù)量,提高了檢測(cè)速度。
(2)利用神經(jīng)結(jié)構(gòu)搜索(NAS)改進(jìn)了模型中的特征金字塔關(guān)鍵部分,在不損失模型性能的前提下,提高了模型的學(xué)習(xí)能力并優(yōu)化了特征提取方式。
當(dāng)前基于深度學(xué)習(xí)的自然場(chǎng)景文本檢測(cè)算法可以分為以下兩類:分別是基于目標(biāo)檢測(cè)(object detection)和基于語(yǔ)義分割(semantic segmet)的自然場(chǎng)景文本檢測(cè)方法。
這類方法通常是建立在經(jīng)典目標(biāo)檢測(cè)算法的 基 礎(chǔ) 上,例 如R-CNN、Faster R-CNN、SSD、YOLO等,它們都擁有提取圖像特征的優(yōu)點(diǎn),有著很好的檢測(cè)效果。這其中具有代表 性 的 算 法 包 括CTPN、TextBoxes、Seg-Link、TextBoxes++等。Tian等提 出 的CTPN是將文本區(qū)域看作若干組件連接構(gòu)成的序列,并使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)提取用于回歸預(yù)測(cè)的編碼特征,以實(shí)現(xiàn)對(duì)文本序列的檢測(cè)。Liao等提出的TextBoxes是文本檢測(cè)算法中較早將目標(biāo)檢測(cè)技術(shù)融入文本檢測(cè)技術(shù)的模型之一,通過(guò)卷積層提取特征后,該網(wǎng)絡(luò)能夠有效檢測(cè)出圖像中不同大小的文本。Shi等提出的SegLink算法,通過(guò)增加組件之間的連接屬性參數(shù)預(yù)測(cè),實(shí)現(xiàn)了對(duì)文本組件的連接檢測(cè),對(duì)于各種大小的文本檢測(cè)都有很好的魯棒性。而Liao等在TextBoxes的基礎(chǔ)上進(jìn)行改進(jìn),提出了TextBoxes++,增加了文本方向角度的預(yù)測(cè),以實(shí)現(xiàn)對(duì)傾斜文本的預(yù)測(cè)。
該方法主要借鑒了經(jīng)典語(yǔ)義分割算法的思路,利用深度卷積和上采樣的方法進(jìn)行多級(jí)特征融合,對(duì)圖像中的每個(gè)像素點(diǎn)進(jìn)行預(yù)測(cè)并分類。其中代表性的模型包括EAST、Pixel-Link、TextField等。Zhou等提出的EAST算法利用全卷積神經(jīng)網(wǎng)絡(luò)(FCN)提取到圖像的高維特征,并直接對(duì)圖像中的每個(gè)像素點(diǎn)進(jìn)行預(yù)測(cè),判斷其是否屬于文本區(qū)域以及所在四邊形的頂點(diǎn)坐標(biāo)。而對(duì)于復(fù)雜形狀的復(fù)雜區(qū)域,Deng等提出了PixelLink,該算法在圖像中像素文本與背景分類的結(jié)果上利用像素之間的連接關(guān)系劃分像素集合,進(jìn)一步區(qū)分圖像中的不同文本。Xu等提出深度方向場(chǎng)文本檢測(cè)方法TextField,該方法通過(guò)圖像內(nèi)的文本方向場(chǎng)來(lái)學(xué)習(xí)表示文本中的區(qū)域特性。
本節(jié)主要介紹本文提出的一種單階段的輕量級(jí)車牌檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu),如圖1所示,并對(duì)該結(jié)構(gòu)中的每個(gè)階段網(wǎng)絡(luò)進(jìn)行了介紹。
圖1 單階段車牌檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)
本文所使用的網(wǎng)絡(luò)是一種基于anchor-free的單階段目標(biāo)檢測(cè)算法,因此不存在進(jìn)行多次特征提取的操作以及與錨框相關(guān)的復(fù)雜運(yùn)算,因此減少了一定的參數(shù)計(jì)算量。該算法可以分為以下幾部分:用于特征提取的骨干網(wǎng)絡(luò)、用于特征優(yōu)化的頸部網(wǎng)絡(luò)以及包含了三個(gè)分支(Classification、Regression、Center-ness)的頭部檢測(cè)網(wǎng)絡(luò)。
首先通過(guò)MobileNetV2網(wǎng)絡(luò)后與新的特征金字塔(NAS-FPN)網(wǎng)絡(luò)結(jié)合,通過(guò)對(duì)不同層的特征進(jìn)行提取并融合得到特征圖(feature map);后續(xù)每層特征圖分別通過(guò)三個(gè)分支得到回歸坐標(biāo)、類別以及Center-ness的向量值?;貧w過(guò)程與Center-ness共同由一組4個(gè)卷積層進(jìn)行計(jì)算,分類分支單獨(dú)經(jīng)歷一組4個(gè)卷積層進(jìn)行計(jì)算。
本文使用了輕量級(jí)網(wǎng)絡(luò)模型MobileNetV2,它不僅繼承了MobileNetV1的深度可分離卷積來(lái)代替?zhèn)鹘y(tǒng)卷積,還在其中加入了Linear Bottlenecks和Inverted residuals。
深度可分離卷積可以分為深度卷積(depthwise convolution)和 點(diǎn) 卷 積(pointwise convolution)。圖2展示了傳統(tǒng)卷積和深度可分離卷積的不同之處,其中上方為傳統(tǒng)卷積,下方為深度可分離卷積。假設(shè)兩者的輸入特征圖大小都為D×D×,輸出特征圖大小都為D×D×,那么傳統(tǒng)卷積的計(jì)算量為:
圖2 標(biāo)準(zhǔn)卷積和深度可分離卷積
而深度可分離卷積的計(jì)算量為:
由此可以得出,當(dāng)網(wǎng)絡(luò)采用了深度可分離卷積后,減少的計(jì)算量可表示為:
MobileNetV2使 用Linear Bottlenecks是 因 為每當(dāng)卷積從高維度轉(zhuǎn)向低維度時(shí),使用ReLU激活函數(shù)可能會(huì)造成信息丟失或破壞,因此MobileNetV2沒(méi)有在第二個(gè)點(diǎn)卷積處使用非線性激活函數(shù)(ReLU),而使用了線性激活函數(shù),這樣可以防止破壞過(guò)多的信息。
而當(dāng)tensor的維度很低時(shí),卷積層的計(jì)算量就會(huì)很小,但低維度的tensor不能提取到足夠多的特征信息。因此MobileNetV2提出了一個(gè)反轉(zhuǎn)殘差塊(inverted residuals)結(jié)構(gòu)來(lái)解決這一問(wèn)題,以圖3為例。從圖3可以看到,首先通過(guò)點(diǎn)卷積擴(kuò)張數(shù)據(jù)使卷積升到高維度,然后使用深度卷積提取特征,最后經(jīng)過(guò)點(diǎn)卷積壓縮數(shù)據(jù)使卷積降到低維度,實(shí)現(xiàn)了高維度提取特征、低維度輸出特征,降低網(wǎng)絡(luò)參數(shù)量的目的。
圖3 反轉(zhuǎn)殘差塊
在特征金字塔的部分,本文沒(méi)有使用傳統(tǒng)的特征金字塔FPN結(jié)構(gòu),而是使用了一種與神經(jīng)結(jié)構(gòu)搜索(neural architecture search,NAS)類似的方法,通過(guò)一個(gè)新的可擴(kuò)展空間去搜索合適的結(jié)構(gòu)以優(yōu)化特征金字塔。該過(guò)程考慮到特征金字塔中自頂向下和自底向上的所有連接組合,從而實(shí)現(xiàn)跨范圍的特征融合。
NAS-FPN在 特 征 金 字 塔 上 使 用 了7個(gè)basic block,而每個(gè)basic block的運(yùn)算流程是從樣本層X(jué)中選擇兩層x1和x2,然后將兩個(gè)操作op1和op2分別應(yīng)用于這兩層,最后使用聚集運(yùn)算agg將兩個(gè)輸出合并為一個(gè)特征。最后取三個(gè){x5,x6,x7}作為特征金字塔的{P3,P4,P5},而{P6,P7}由P5進(jìn)行下采樣獲得。通過(guò)該搜索策略進(jìn)行網(wǎng)絡(luò)搭建,最后搜索得到的最優(yōu)結(jié)構(gòu)如圖4所示。
圖4 NAS-FPN結(jié)構(gòu)
基于NAS的思想,優(yōu)化后的特征金字塔結(jié)構(gòu)能夠進(jìn)一步提高網(wǎng)絡(luò)的精度,使得網(wǎng)絡(luò)在輕量級(jí)的環(huán)境下也能夠取得較好的效果。
網(wǎng)絡(luò)中增加了一個(gè)新的分支用于預(yù)測(cè)位置的中心角(Center-ness),它主要用于計(jì)算該位置到其對(duì)應(yīng)目標(biāo)中心的歸一化距離。
對(duì)于一個(gè)隨機(jī)的位置目標(biāo)(*,*,*,*),Center-ness可以定義為:
通過(guò)一個(gè)平方根的計(jì)算后,Center-ness的值被定義在0到1之間,越接近1就代表越靠近對(duì)象中心;反之,越接近0就離對(duì)象中心越遠(yuǎn)。在訓(xùn)練時(shí),Center-ness分支會(huì)使用交叉熵?fù)p失進(jìn)行訓(xùn)練,而在測(cè)試過(guò)程中,會(huì)通過(guò)Centerness與對(duì)應(yīng)的分類相乘得到每個(gè)像素點(diǎn)最終的分類分?jǐn)?shù)。
本文中損失函數(shù)的計(jì)算分別來(lái)自于分類分支和回歸分支,其公式如下:
其中,表示分類分支的損失函數(shù),采用了Focal Loss計(jì)算損失;而則表示回歸分支的損失函數(shù),采用了GIOU Loss。Npos表示正樣本的數(shù)量,負(fù)責(zé)平衡分類分支和回歸分支的損失函數(shù)。
本文構(gòu)建好單階段的網(wǎng)絡(luò)模型后在數(shù)據(jù)處理中還使用了以下方法提升網(wǎng)絡(luò)精度。
在模型訓(xùn)練時(shí),由于特征提取的過(guò)程中會(huì)生成許多特征圖,它們有些比原圖小了數(shù)十倍,因而小目標(biāo)的特征可能被忽略,并且難以被網(wǎng)絡(luò)檢測(cè)到,同時(shí)模型的性能也會(huì)受到輸入圖片尺寸的影響。因此,通過(guò)多尺度圖像進(jìn)行訓(xùn)練,不僅可以提高網(wǎng)絡(luò)的精度,也可以提高檢測(cè)模型對(duì)物體尺寸的魯棒性。
實(shí)驗(yàn)中會(huì)使用兩個(gè)固定的輸入尺度,在每個(gè)訓(xùn)練批次時(shí)都會(huì)隨機(jī)選擇一個(gè)輸入尺度進(jìn)行訓(xùn)練。
在訓(xùn)練過(guò)程中,我們使用了圖像擴(kuò)充和隨機(jī)裁剪的方法。圖像擴(kuò)充是將圖片長(zhǎng)寬擴(kuò)大一定比例,然后將原圖放置進(jìn)去,擴(kuò)大后的其他區(qū)域采用均值填充。這樣可以將大目標(biāo)變成小目標(biāo),增加了小目標(biāo)的樣本數(shù)量。而隨機(jī)裁剪是通過(guò)裁剪patch和bbox,這使兩者在裁剪后都具有最小的IoU,通過(guò)擴(kuò)充和隨機(jī)裁剪的方法,擴(kuò)大了樣本的尺度,提高了網(wǎng)絡(luò)對(duì)于目標(biāo)尺度的魯棒性。
本文實(shí)驗(yàn)基于Pytorch(1.8)框架實(shí)現(xiàn);GPU計(jì)算設(shè)備型號(hào)NVIDIA GeForce GTX 2080Ti;CUDA版本為10.2;編程語(yǔ)言為Python3.7;使用了隨機(jī)梯度下降(SGD)訓(xùn)練迭代,初始學(xué)習(xí)率設(shè)置為0.01,動(dòng)量因子momentum設(shè)置為0.9,權(quán)重衰減因子設(shè)置為0.0005,使用了目標(biāo)檢測(cè)工具箱MMDetection。
在數(shù)據(jù)集上使用了中科大發(fā)布的CCPDGreen數(shù)據(jù)集。由于傳統(tǒng)的車牌檢測(cè)與識(shí)別任務(wù)都是在小規(guī)模數(shù)據(jù)集上進(jìn)行訓(xùn)練和測(cè)試,無(wú)法勝任當(dāng)前復(fù)雜多變的交通環(huán)境,因此中科大在2018年提出了CCPD數(shù)據(jù)集以解決這一困境。該數(shù)據(jù)集均拍攝于合肥的停車場(chǎng),由工作人員手持Android POS機(jī)在早上7:30到晚上10:00之間隨機(jī)進(jìn)行拍攝并手工標(biāo)注這些照片。本文使用的是2019年提出的新能源數(shù)據(jù)集,該數(shù)據(jù)集包含了1.1萬(wàn)張左右的新能源汽車車牌圖像,且每張照片中只包含一個(gè)bounding box框。
表1展示了本文提出的網(wǎng)絡(luò)模型與當(dāng)前主流的常規(guī)檢測(cè)算法在CCPD-Green數(shù)據(jù)集上的計(jì)算量、參數(shù)量以及精度比較結(jié)果。從表1可以看出,改進(jìn)后的網(wǎng)絡(luò)模型相較于其他網(wǎng)絡(luò)而言,在減少網(wǎng)絡(luò)參數(shù)量的同時(shí),精度也得到了有效提升。
表1 不同模型對(duì)比
其中,@256表示FPN的輸出和Head中的卷積通道數(shù)都為256;@128-256表示FPN的輸出通道數(shù)為128,Head中的卷積通道數(shù)為256;@128表示FPN的輸出和Head中的卷積通道數(shù)都為128。
表2和表3展示了在網(wǎng)絡(luò)中對(duì)不同的主干網(wǎng)絡(luò)和特征金字塔結(jié)構(gòu)分別進(jìn)行訓(xùn)練所得到的測(cè)試結(jié)果,從表中可以看出MobileNetV2和NASFPN結(jié)構(gòu)能夠在減少參數(shù)量的情況下提高檢測(cè)精度。
表2 不同主干網(wǎng)絡(luò)下的模型性能和精度對(duì)比
表3 不同特征金字塔網(wǎng)絡(luò)下的模型性能和精度對(duì)比
表4展示了本文提出的方法在加入數(shù)據(jù)增強(qiáng)后的對(duì)比結(jié)果。在多尺度訓(xùn)練部分,使用了(320,320)和(416,416)兩個(gè)輸入尺度進(jìn)行訓(xùn)練。通過(guò)多尺度訓(xùn)練后,檢測(cè)精度相比于只使用了(320,320)進(jìn)行訓(xùn)練的模型來(lái)說(shuō),mAP提升接近1;而加入圖像擴(kuò)充和隨機(jī)裁剪之后,模型mAP提升接近2。從表4可以看出,圖像擴(kuò)充和隨機(jī)裁剪對(duì)模型性能的提升效果較為明顯,在加入多尺度訓(xùn)練后,兩者的共同作用效果更為優(yōu)異。
表4 加入數(shù)據(jù)增強(qiáng)后的模型性能和精度對(duì)比
本文通過(guò)重新構(gòu)建了一種基于單階段目標(biāo)檢測(cè)網(wǎng)絡(luò)的框架,將MobileNetV2作為主干網(wǎng)絡(luò),并基于NAS的思想優(yōu)化特征金字塔網(wǎng)絡(luò)結(jié)構(gòu)。相比于傳統(tǒng)的單階段目標(biāo)檢測(cè)算法,該網(wǎng)絡(luò)在降低網(wǎng)絡(luò)參數(shù)的同時(shí),一定程度上提升了檢測(cè)精度。