楊晉生,楊雁南,李天驕
(天津大學(xué) 微電子學(xué)院,天津030072)
隨著信息時代的到來,在科學(xué)研究、互聯(lián)網(wǎng)應(yīng)用、電子商務(wù)、自由駕駛等諸多應(yīng)用領(lǐng)域?qū)τ谌斯ぶ悄艿男枨笕找嫫惹衃1]。在這種情況下,基于機器學(xué)習(xí)和人工智能的研究必將成為今后計算機和通信技術(shù)發(fā)展中最重要的一部分[2]。
交通標志是現(xiàn)代公路交通環(huán)境中最重要的組成部分,隨著社會的進步,路面交通變得多樣化、立體化,交通標志也因此變得多種多樣。自動駕駛作為時下最熱門的內(nèi)容,包括路面感知、路徑規(guī)劃、決策等技術(shù)。其中,作為車輛行駛的指揮者,交通標志的識別是自動駕駛和車輛輔助駕駛技術(shù)中最核心的技術(shù)之一。受天氣狀況、光照變化和硬件設(shè)施的限制,在車輛行駛過程中所捕獲到的圖像常常受到圖像模糊、路標褪色、背景掩蓋等問題的影響,如何快速準確地識別交通標志成為了當前研究的一個重要方向。
目前對于交通標志的識別主要可分為傳統(tǒng)圖像處理方法和基于卷積神經(jīng)網(wǎng)絡(luò)兩個大的研究方向。采用傳統(tǒng)圖像處理方法進行目標識別多采用經(jīng)典的基于HOG-SVM[3]的方法進行目標識別。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)的出現(xiàn)為目標識別提供了一種全新的處理方法。采用深度學(xué)習(xí)進行目標識別大致分為兩類:基于候選區(qū)域目標檢測器的網(wǎng)絡(luò)如AlexNet[4]、R-CNN[5]、Fast R-CNN[6]、Faster R-CNN[7]、R-FCN[8]、FPN[9]等;基于端到端的不需要提供候選區(qū)域的網(wǎng)絡(luò)如SSD[10]、YOLO[11]等?;诤蜻x區(qū)域目標檢測采用選擇性搜索算法進行評估相鄰圖像間的相似度,將相似度高的合并,進而選出合適的子圖進行特征提取。基于候選區(qū)域目標檢測的算法具有較高的精度,但同時由于其龐大的計算量,其檢測速度并不能滿足交通標志識別所需要的時效性。如Ren等人提出的Faster R-CNN,其在VOC2012[12]數(shù)據(jù)集上的檢測速度只有5 f/s。由于基于候選區(qū)域的檢測算法普遍存在運算速度慢、訓(xùn)練復(fù)雜的特點,YOLO創(chuàng)造性地提出了將物體定位和物體分類合二為一的算法,大大提高了對物體識別速度的要求,使識別速度提升到了45 f/s,滿足了對檢測實效性的要求。但同時YOLO系列算法也存在識別精度較差的缺陷,在對COCO數(shù)據(jù)集中20類物體的檢測中僅獲得平均精度(mAP)63%的結(jié)果,其在小目標檢測上更有著明顯的缺陷。盡管如此,其在檢測速度上的優(yōu)勢,使其在移動端部署有著得天獨厚的優(yōu)勢。
近年來,在保證檢測速度的同時提升檢測精度已經(jīng)成為了當下目標檢測算法中最熱門的研究領(lǐng)域。SSD綜合了檢測精度最高的Faster-RCNN和檢測速度最快的YOLO的優(yōu)勢,在識別精度和速度上進行了平衡。2017年,Redmon[13]在YOLO的基礎(chǔ)上進行了優(yōu)化形成了YOLOv2,全新的YOLOv2在VOC2017數(shù)據(jù)集上獲得了76.8 mAP,優(yōu)于使用ResNet的SSD和Faster-RCNN,2018年Redmon在YOLOv2的基礎(chǔ)上引入了多尺度預(yù)測產(chǎn)生了YOLOv3,對小目標的檢測進行了優(yōu)化,同時基于YOLOv3也設(shè)計了更簡化的版本YOLOv3-tiny,有利于其在移動端上的應(yīng)用。
本文所做的貢獻有:
(1)針對YOLv3-tiny檢測精度低的問題,采用深度可分離卷積(Depthwise Separable Convolution[14])搭建主干網(wǎng)絡(luò),相較于普通的卷積運算,大量減少計算量,從而在相同的計算量條件下搭建更多層次的網(wǎng)絡(luò),提取更高層次的語義特征。
(2)優(yōu)化深度可分離卷積計算模塊,采用swish[15]函數(shù)的簡化版本h-swish做為激活函數(shù),在保證激活函數(shù)計算量小的同時保留更多的特征,減少因網(wǎng)絡(luò)層數(shù)增加而造成的隨機梯度消失,進而提高檢測的精度。
(3)在YOLOv3-tiny的多尺度特征融合網(wǎng)絡(luò)基礎(chǔ)上,增加8倍下采樣融合,構(gòu)建更多尺度的特征融合網(wǎng)絡(luò),提高對小目標的檢測精度。
YOLO(You Only Look Once)是目前最先進的端對端目標檢測的算法之一。YOLO將多目標檢測轉(zhuǎn)換成一個回歸問題,去除了以往結(jié)構(gòu)中提取待檢測區(qū)域(Proposal)的步驟,通過一次回歸運算完成目標位置、目標種類及其目標置信度的工作。通過調(diào)整網(wǎng)絡(luò)最終輸出種類的數(shù)量控制最后輸出的檢測矢量大小,進而實現(xiàn)對多類物體的檢測。
YOLOv3作為目前YOLO系列最新的一代算法,是在吸取了Faster R-CNN采用預(yù)測Anchor box偏移值代替直接預(yù)測目標框中心位置坐標值、借鑒Resnet加入殘差模塊、增加FPN[16](Feature pyramid networks)等方法后提出的最新的網(wǎng)絡(luò)結(jié)構(gòu)。YOLOv3網(wǎng)絡(luò)由骨干的Darknet-53網(wǎng)絡(luò)和基于FPN的多尺度融合的檢測網(wǎng)絡(luò)構(gòu)成。通過在13×13、26×26、52×52三種不同尺度的YOLO層上進行預(yù)測,極大的改善了對不同尺度大小問題和被遮擋物體的效果。在針對多目標檢測問題上,使用Logistic分類器取代了Softmax分類器,采用多尺度隨機訓(xùn)練來增強網(wǎng)絡(luò)的魯棒性。
(1)
YOLO系列從YOLOv2開始使用Anchor box的思想進行預(yù)測框的迭代逼近,對預(yù)測框的逼近算法進行了更新,每一個預(yù)測框返回值參數(shù)為(bx,by,bw,bh),其具體計算方式如公式(2)所示:
(2)
YOLOv3的損失函數(shù)如公式(3)所示:
(3)
YOLOv3-Tiny作為YOLOv3的簡化版本,在犧牲了一部分檢測精度的情況下將檢測速度的優(yōu)勢進一步發(fā)揮。YOLOv3-Tiny的主干網(wǎng)絡(luò)由7層的類Darknet-19網(wǎng)絡(luò)構(gòu)成,輸出13×13和26×26兩種不同尺度的特征進行檢測特征回歸,預(yù)測出多個預(yù)測框和其相應(yīng)的置信度得分,通過使用非極大抑制(Non-maximum suppression,NMS)算法剔除掉低置信度的預(yù)測結(jié)果,保留高置信度的預(yù)測框輸出。
對于傳統(tǒng)的卷積計算,在進行卷積運算時需要同時將對應(yīng)圖像區(qū)域中的所有通道進行考慮。深度可分離卷積提出了一種將圖像的對應(yīng)區(qū)域和通道分開進行處理,先考慮區(qū)域特征,然后再考慮通道特征,將傳統(tǒng)的卷積運算分解成Depthwise 和Pointwise兩個過程。
對于傳統(tǒng)的卷積運算,有N×H×W×C的輸入與k個n×n的卷積核進行卷積運算,在pad=1和stride=1的情況下輸出為N×H×W×k。
對于深度可分離卷積,在Depthwise過程中,將輸入的N×H×W×C劃分成C組,對于每一組做n×n的卷積運算,收集卷積運算中的每個channel的空間特征。
圖2 Depthwise卷積過程Fig.2 Depthwise convolution process
在Pointwise過程中,對Depthwise中的結(jié)果進行k個1×1的卷積運算,收集每個point上的特征,也就是卷積運算中的位置特征,經(jīng)過Pointwise和Depthwise兩個步驟,最終輸出的結(jié)果也是N×H×W×k。
圖3 Pointwise卷積過程Fig.3 Pointwise convolution process
對于N×H×W×C和k×n×n的卷積運算,普通的卷積運算運算量為H×W×C×k×n×n,對于深度可分離卷積運算,在Depthwise階段計算量為H×W×C×n×n;在Pointwise階段計算量為H×W×C×k,總的計算量為H×W×C×(k+n×n)。
相較于普通的卷積計算,其計算量壓縮P如公式(4)所示:
(4)
為了實現(xiàn)對交通標志的動態(tài)識別,解決現(xiàn)在YOLOv3-tiny等YOLO系列輕型網(wǎng)絡(luò)檢測精度低的問題,采用可分離深度卷積重新構(gòu)建了特征提取網(wǎng)絡(luò),代替YOLOv3-tiny中的類Darknet-19網(wǎng)絡(luò),提取更高層次的圖像特征信息。
相較于普通的卷積運算模塊,基礎(chǔ)的深度可分離卷積模塊如圖4所示。
圖4 標準卷積與深度可分離卷積模塊Fig.4 Standard convolution and depth separable convolution module
與普通的卷積模塊相似,深度可分離卷積模塊在Depthwise和Pointwise層后增加BN層和激活函數(shù)層。但是采用ReLU作為激活函數(shù),因為其對負值取0的特性,會丟失掉部分的特征信息的問題,所以在Depthwise Conv模塊后選擇Leaky ReLU代替ReLU作為激活函數(shù)。同時在1×1的Conv層中,選擇使用h-swish函數(shù)來代替Relu作為激活函數(shù),來減少由于網(wǎng)絡(luò)層數(shù)增加造成的網(wǎng)絡(luò)梯度消失的影響。
h-swish函數(shù)是swish激活函數(shù)的簡化版,swish的計算方法如公式(5)所示:
(5)
其中:β是個常數(shù)或可訓(xùn)練的參數(shù)。swish 具備無上界有下界、平滑、非單調(diào)的特性。
相較于ReLU激活函數(shù)及其衍生激活函數(shù),在深層網(wǎng)絡(luò)中,swish激活函數(shù)可以很好的提高神經(jīng)網(wǎng)絡(luò)的準確性。h-swish函數(shù)的計算方式如公式(6)所示:
(6)
兩種激活函數(shù)圖像對比如圖5所示。相較于swish函數(shù)需要計算Sigmoid從而計算時間長的特點,在圖像上h-swish函數(shù)在保持swish激活函數(shù)具備無上界有下界、平滑、非單調(diào)的特點外,其函數(shù)只由ReLU函數(shù)構(gòu)成外,極大的減少了swish函數(shù)的運算時間,實現(xiàn)了精度和運算速度上的兼容。
圖5 h-swish函數(shù)與swish函數(shù)對比圖Fig.5 Comparison of h-swish function and swish function
優(yōu)化后的基礎(chǔ)深度可分離卷積模塊結(jié)構(gòu)如下圖6所示。
圖6 優(yōu)化的深度可分離卷積模塊Fig.6 Optimized deep separable convolution module
采用優(yōu)化后的深度可分離卷積模塊搭建主體網(wǎng)絡(luò)提取圖像特征。對于實時的交通路標檢測,其重點是對于中遠距離交通路標的檢測,也就是對圖像中中小目標的檢測,為了提高對中遠距離交通標志的檢測,給予駕駛員足夠的反應(yīng)時間。為減少中小尺度的目標語義損失、更好的提取中小目標的特征,同時避免高分辨率特征提取增加較大的計算量。在網(wǎng)絡(luò)設(shè)置中減少對32倍下采樣的特征提取層設(shè)置,在8倍下采樣和16倍下采樣設(shè)置更多層次網(wǎng)絡(luò)進行的特征提取。特征提取主體網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。
表1 特征提取主體網(wǎng)絡(luò)Tab.1 Feature extraction subject network
續(xù) 表
YOLOv3-tiny采用16倍下采樣和32倍下采樣的兩個尺度的特征融合,這意味著當輸入的檢測目標小于16 pixel×16 pixel時,就喪失了對該目標的檢測能力。為提高網(wǎng)絡(luò)對小目標的檢測精度,提高對目標位置信息的判斷,使得網(wǎng)絡(luò)獲得更多小目標的特征信息。在YOLOv3-tiny的基礎(chǔ)上增加對網(wǎng)絡(luò)8倍下采樣的尺度融合,將原本16倍下采樣融合后的輸出結(jié)果進行上采樣,與主體網(wǎng)絡(luò)中輸出的8倍下采樣結(jié)果進行融合,建立8倍下采樣的融合特征檢測層,收集8 pixel×8 pixel尺度的特征,提高對小目標的檢測和位置信息判斷。
網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖7所示。
圖7 網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.7 Schematic diagram of the network structure
本文采用中國交通標志檢測數(shù)據(jù)集(CCTSDB[17])作為實驗數(shù)據(jù)集,實驗使用Ubuntu 16.04 操作系統(tǒng)、Darknet深度學(xué)習(xí)框架、CUDA9.0進行加速,硬件配置為:CPU Intel Core i7-9750H、GPU Nvidia GTX 1080。本次實驗中,我們將從網(wǎng)絡(luò)計算量大小、模型檢測速度、檢測準確度和召回率等多個指標與將本文算法與目前最主流的輕型網(wǎng)絡(luò)YOLOv3-tiny、YOLOv2-tiny以及YOLO系列的最新版本YOLOv3進行對比。
中國交通標志檢測數(shù)據(jù)集(CCTSDB)是在原中國中國交通標志數(shù)據(jù)集(CTSD)數(shù)據(jù)集的基礎(chǔ)上擴充得到的。數(shù)據(jù)集包含15 734張由攝像機拍攝而成的現(xiàn)實路況圖片。數(shù)據(jù)集由正樣本和負樣本構(gòu)成,正樣本中包含一個或多個交通標志,負樣本不包含交通標志,所有圖像橫縱尺寸均大于416 pixel。數(shù)據(jù)集采用PASCAL VOC格式進行標注,標注數(shù)據(jù)依據(jù)交通標志的作用分為警告標志(Warining)指示標志(Mandatory)、禁止標志(Prohibitory)3類。本次訓(xùn)練選取前2 000張為驗證集,剩余圖片作為訓(xùn)練集對數(shù)據(jù)集中標注的3類交通標志進行檢測,訓(xùn)練集與驗證集比例約為7∶1。
本次實驗訓(xùn)練階段初始學(xué)習(xí)率為 0.001,衰減系數(shù)為0.000 5,在訓(xùn)練迭代次數(shù)為40 000次和 45 000次時,分別將學(xué)習(xí)率降低為0.000 1和 0.000 01。使損失函數(shù)進一步收斂,在訓(xùn)練階段利用增加對比度、調(diào)整曝光量和旋轉(zhuǎn)圖像方法對訓(xùn)練集中圖像進行擴充。
從YOLOv2開始引入anchor box的思想,YOLO系列中設(shè)置的初始anchor box是作者使用K-means聚類方法在COCO數(shù)據(jù)集上聚類的結(jié)果,對本次訓(xùn)練所檢測的交通標志并不適用,因此需要重新設(shè)置anchor box。在本次實驗中使用平均重疊度(Avg IOU)這一指標作為初始anchor box的聚類指標,其計算公式如公式(7)所示:
(7)
其中:B表示 ground truth 中標注好的目標框位置。C表示設(shè)置anchor的中心,nk表示第k個anchor box樣本的個數(shù),n表示樣本的總個數(shù),k表示anchor box的個數(shù),IIOU(B,C)表示簇的中心框和聚類框的交并比。
對本文中數(shù)據(jù)進行Avg IOU聚類,綜合網(wǎng)絡(luò)結(jié)構(gòu)和Avg IOU后,選擇k=6,設(shè)置6個初始anchor box,各個anchor對應(yīng)長寬分別為:(7,9),(14,18),(23,30),(26,41),(41,62),(74,106)。
本文算法模型及各對比算法模型的損失函數(shù)下降圖如圖8所示。
圖8 損失函數(shù)下降圖Fig.8 Loss function decline graph
由損失函數(shù)曲線可以看出,對比4種算法,YOLOv3-tiny收斂最快,在40 000次迭代后趨于穩(wěn)定,但損失函數(shù)下降波動相較本文算法波動較大,本文算法損失函數(shù)由于采用深度可分離卷積搭建特征提取網(wǎng)絡(luò),因此收斂速度較普通卷積相比較慢在70 000次左右損失函數(shù)趨于平穩(wěn),但由于增加了更多層次的特征提取網(wǎng)絡(luò)和三尺度的特征融合,訓(xùn)練平穩(wěn)后的損失函數(shù)更小,精度更高。YOLOv3作為大型網(wǎng)絡(luò),其下降趨勢平穩(wěn)且波動最小,但由于YOLOv3網(wǎng)絡(luò)層數(shù)多且訓(xùn)練參數(shù)復(fù)雜,因此迭代收斂速度較慢,在80 000次迭代后才趨于平穩(wěn),但訓(xùn)練平穩(wěn)后損失函數(shù)最小,精度也最高。YOLOv2-tiny雖然網(wǎng)絡(luò)結(jié)構(gòu)最簡單,訓(xùn)練速度快,但其收斂最慢,在100 000次訓(xùn)練之后才趨于穩(wěn)定,且穩(wěn)定后的收斂函數(shù)數(shù)值最大,精度最低。
為進一步驗證本模型能有效的降低了卷積運算中的計算量和參數(shù)數(shù)量,本文采用浮點數(shù)計算量BFLOPs(Billion Floating Point Operations)對傳統(tǒng)的卷積模型和本文所提出的基于深度可分離卷積的計算量分析。在本文中52×52,26×26,13×13三個尺度上的基于傳統(tǒng)卷積和基于深度可分離卷積的運算次數(shù)對比如表2所示。
表2 浮點數(shù)計算量對比表Tab.2 Comparison of floating point calculation amount
由此可見,對于3個尺度上的計算,相較于傳統(tǒng)的卷積運算,基于深度可分離卷積的運算模塊均有效的減少了運算的計算量。
為進一步評價本算法效果,類別檢測平均精準度(Average Precision,AP)、平均精度(Mean Average Precision,mAP)、每秒幀數(shù)(Frames Per Second,fps)作為評價標準,將本文網(wǎng)絡(luò)結(jié)構(gòu)與YOLOv3-tiny、YOLOv2-tiny和YOLOv3進行對比。
平均精準度及平均精度計算方式如公式(8)所示:
(8)
其中:APc采用VOC2007[18]的計算方式進行計算,將召回率曲線中劃分共11個等距點(0,0.1,0.2,…,0.9,1)后,求其最大精度的平均值可獲得平均精度AP,即各類物體的平均準確率。N為網(wǎng)絡(luò)中物體類別的數(shù)量,mAP為各類物體AP的平均數(shù)。
本文使用法每秒處理的圖像數(shù)量f/s作為評價網(wǎng)絡(luò)檢測速度的指標。
將本文算法與YOLOv3-tiny、YOLOv2-tiny、YOLOv3的結(jié)果進行對比,所有算法均采用上文設(shè)置的anchor box,將其在2000張驗證集上檢測,其各項性能對比如表3所示。
從表3可以看出,本文提出的算法在驗證集上獲得mAP為97.54%、Warining類準確率98.57%、Mandatory類準確率96.03%、Prohibitory類準確率98.17%、檢測速度為201.5 f/s,相較于YOLOv3-tiny分別提高了14.01%,9.74%,12.43%、19.86%,相較于YOLOv2-tiny分別提高了39.15%,30.62%,36.99%,49.84%,檢測速度指標上3種算法基本持平,均穩(wěn)定在200 f/s以上。其主要原因是本文方法和YOLOv3-tiny均采用特征圖像金字塔搭建多尺度特征融合,將多個尺度的特征融合進行檢測,因此在檢測精度上較YOLOv2-tiny有了較大提升。本文算法較YOLOv3-tiny使用優(yōu)化后的深度可分離卷積搭建了27層特征提取網(wǎng)絡(luò),較YOLOv3-tiny原本的7層的特征提取網(wǎng)絡(luò)有了明顯的提升,同時加入了8倍的下采樣,便于采集中小型目標的特征,使用h-swish函數(shù)作為激活函數(shù)有利于保留更多的特征信息,提高了檢測精度。本文算法作為輕型網(wǎng)絡(luò),在mAP值較YOLOv3上較YOLOv3這樣的大型網(wǎng)絡(luò)下降了1.33%,但在檢測速度上提高了167.7 f/s。同時相較YOLOv3在檢測過程中參數(shù)多、泛化能力弱的缺點有了長足的進步。
表3 不同算法性能對比表Tab.3 Performance comparison of different algorithms
續(xù) 表
圖9 各種算法的檢測效果圖Fig.9 Detection effect chart of various algorithms
圖9為本文算法與YOLOv3、YOLOv3-tiny、YOLOv2-tiny對交通標志的檢測效果對比圖。其中圖(a)、(b)、(c)、(d)中,本文算法、YOLOv3、和YOLOv3-tiny均可有效對交通標志進行檢測,但YOLOv2因為沒有采用多尺度檢測,所以檢測精度最差,對部分交通標志沒有辦法進行識別。圖(e)、(f)、(g)、(h)中,面對交通標志褪色的現(xiàn)象,本文算法、YOLOv3均可正確識別交通標志,但YOLOv3-tiny因為只有兩個層次的檢測,沒有進行小目標的融合,因此沒有辦法很好地識別交通標志,YOLOv2-tiny除了沒有辦法識別交通標志外還出現(xiàn)了明顯的預(yù)測位置偏移。圖(h)、(i)、(j)、(k)中當面對天氣變暗的條件下,本文算法、YOLOv3和YOLOv3-tiny均能準確識別交通標志,YOLOv2-tiny并不能準確檢測。
本文根據(jù)目前針對交通標志識別的算法難以兼顧檢測速度和檢測精度的問題,提出了一種基于深度可分離卷積的輕量級交通標志識別網(wǎng)絡(luò)。分析了目標識別算法的發(fā)展過程,對YOLO系列算法和深度可分離卷積思想進行了介紹。使用深度可分離卷積搭建了特征提取網(wǎng)絡(luò)代替YOLOv3-tiny的特征提取網(wǎng)絡(luò),同時為更好地識別中小目標,增加了8倍下采樣的尺度融合,在搭建網(wǎng)絡(luò)過程中使用h-swish激活函數(shù)代替ReLU激活函數(shù),保留了更多的特征信息。實驗結(jié)果表明,本文提出的算法相較于YOLOv3-tiny有了較大的提升,交通標志的識別平均精度由83.53%提高到了97.54%,檢測速度達到了201.5 f/s,同時相較YOLO系列網(wǎng)絡(luò)具有更好的泛化能力,有效滿足了自動駕駛中對于交通標志檢測準確性和時效性的需求。