劉宇宸,石 剛,崔 青,劉明輝,鄭秋萍
(新疆大學(xué)信息科學(xué)與工程學(xué)院,新疆 烏魯木齊 830046)
隨著現(xiàn)代科技的飛速發(fā)展,無(wú)人駕駛技術(shù)已經(jīng)成為現(xiàn)實(shí),其中交通標(biāo)志檢測(cè)是無(wú)人駕駛和輔助駕駛的重要組成部分.然而交通標(biāo)志識(shí)別容易受到天氣變化、遮擋、光照強(qiáng)度變化等影響,這給無(wú)人駕駛的應(yīng)用帶來(lái)了很大的安全風(fēng)險(xiǎn)[1].因此,需要設(shè)計(jì)一種實(shí)時(shí)性強(qiáng)、精度高的方法來(lái)解決上述問(wèn)題.
自2012年文獻(xiàn)[2]在Imagenet大規(guī)模視覺(jué)識(shí)別挑戰(zhàn)賽取得巨大的成功后,越來(lái)越多的深度學(xué)習(xí)模型被提出并應(yīng)用于交通標(biāo)志牌的識(shí)別.目前交通標(biāo)志牌識(shí)別的主流算法主要以Faster R-CNN(Faster Region-CNN)[3]和YOLO(You Only Look Once)[4]兩大類(lèi)為主,其中Faster R-CNN為雙階段模型,其檢測(cè)精度高,但是檢測(cè)速率略慢,YOLO為單階段模型,其檢測(cè)速率快,但是精度有所下降.
為了提高交通標(biāo)志牌的檢測(cè)精度,文獻(xiàn)[5]首先提出改進(jìn)的YOLOv2算法,但是其檢測(cè)準(zhǔn)確度與精度都很低,隨后提出了多尺度融合的Cascaded R-CNN 算法,檢測(cè)準(zhǔn)確度雖然有所上升,但其存在檢測(cè)速率慢的問(wèn)題.為了更好契合實(shí)時(shí)性的特點(diǎn),李旭東等[6]基于YOLOv3-Tiny提出了基于三尺度嵌套殘差結(jié)構(gòu)的交通標(biāo)志快速檢測(cè)算法,在CCTSDB上其檢測(cè)速度高達(dá)200 f/s,但是精度卻有所下降.陳昌川等[7]基于YOLOv3融合殘差網(wǎng)絡(luò)、下采樣并且舍棄通用池化層而改用卷積層等操作,提出了T-YOLO算法,在CCTSDB上檢測(cè)精度高達(dá)97.3%,但檢測(cè)速率每秒傳輸幀數(shù)(FPS)只有19.3,最新的算法YOLOv5s雖然檢測(cè)速度很快,但是檢測(cè)準(zhǔn)確度與檢測(cè)精度卻很低.
綜上所述,為了減少算法的計(jì)算量,提高對(duì)目標(biāo)的定位精度,本文提出了一種改進(jìn)的MobileNetv3-YOLOv3算法,該算法與最新的算法比較,本文所提出的算法準(zhǔn)確度和平均精度最好.
YOLOv3算法是對(duì)YOLOv2算法的改進(jìn),其借鑒殘差網(wǎng)絡(luò)(ResNet)[8]的思想,并增加了快捷鏈路(shortcut connections)、融合特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network,F(xiàn)PN)[9],相比較之前的算法,YOLOv3在小目標(biāo)的檢測(cè)上有了顯著的提升.
YOlOv3是端到端的網(wǎng)絡(luò)結(jié)構(gòu),以DarkNet-53為基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu),由53層卷積而組成,從不同尺度來(lái)提取對(duì)應(yīng)的特征,可以減少計(jì)算量并且降低低級(jí)特征在池化層中的丟失.YOLOv3算法處理流程如圖1所示.
圖1 YOLOv3算法處理流程
聚焦(Focus)模塊的概念,最先應(yīng)用于YOLOv5,聚焦(Focus)模塊的作用是在圖片進(jìn)入骨干網(wǎng)絡(luò)(backbone)前,對(duì)圖片進(jìn)行切片操作,將圖片的每一個(gè)像素值進(jìn)行下采樣處理,經(jīng)過(guò)一系列卷積操作后就可以得到?jīng)]有信息丟失的特征圖,可以有效地減少計(jì)算量加快處理速度.聚焦(Focus)模塊處理流程如圖2所示.
圖2 聚焦(Focus)模塊處理流程
空間金字塔池化網(wǎng)絡(luò)(Spatial Pyramid Pooling Network,SPPNet)[10]模塊可以將任意分辨率的feature map轉(zhuǎn)換為與全連接層相同維度相匹配的特征向量,使得特征向量不再是單一尺度,其有效避免圖像因?yàn)榭s放、剪裁等一系列操作而導(dǎo)致圖像失真的問(wèn)題,SPPNet試圖通過(guò)增強(qiáng)圖像處理,將圖像像素映射到特征圖的感受野中心,增強(qiáng)感受野,提高處理結(jié)果的準(zhǔn)確性.
圖片左上角映射公式為
x′=[x/S]+1.
(1)
圖片右下角映射公式為
x′=[x/S]-1.
(2)
SSPNet也解決了神經(jīng)網(wǎng)絡(luò)中特征重復(fù)提取的問(wèn)題,可以提高候選框的速度,從而大大降低了成本.SSPNet模塊處理流程如圖3所示.
圖3 SSPNet模塊處理流程
跨階段局部網(wǎng)絡(luò)(Cross Stage Partial Network,CSPNet)[11]結(jié)構(gòu)在YOLO算法中最先應(yīng)用于YOLOv4,CSPNet提出CSPNet是因?yàn)樽髡哒J(rèn)為網(wǎng)絡(luò)優(yōu)化中梯度重復(fù)導(dǎo)致算法推理速度慢,CSPNet起到的作用是將梯度變化全部集成到要處里的特征圖中,CSPNet常常用于與ResNet[12]模塊結(jié)合,這樣可以大大減少計(jì)算量,保證實(shí)驗(yàn)結(jié)果的準(zhǔn)確性.
2.1.1 MobileNet模型
MobileNet系列因其檢測(cè)快速、精準(zhǔn)度高而被廣泛應(yīng)用于目標(biāo)檢測(cè),它已經(jīng)成為輕量級(jí)網(wǎng)絡(luò)的代表.MobileNet使用的是深度可分離卷積,它相較于經(jīng)典的CNN模型,其主要是將部分的全連接層來(lái)進(jìn)行替換,以達(dá)到降低計(jì)算量的效果.深度可分離卷積和標(biāo)準(zhǔn)卷積結(jié)構(gòu)如圖4所示.
深度可分離卷積的計(jì)算成本為
DK×DK×M×DF×DF.
(3)
逐點(diǎn)卷積的計(jì)算成本為
M×N×DF×DF.
(4)
深度可分離卷積與逐點(diǎn)卷積的計(jì)算成本為
(5)
圖4 深度可分離卷積和標(biāo)準(zhǔn)卷積結(jié)構(gòu)
2.1.2 MobileNetv3-YOLOv3模型
MobileNetv3-YOLOv3是將YOLOv3的骨干網(wǎng)絡(luò)DarkNet替換為MobileNetv3,利用了MobileNetv3的特性,保證模型為輕量型,其中MobileNetv3對(duì)多通道的3×3深度可分離卷積的卷積核進(jìn)行操作,然后經(jīng)過(guò)1×1的點(diǎn)卷積操作來(lái)完成特征圖的融合,這樣可以縮小模型的大小.MobileNetv1和MobileNetv2都具有32個(gè)濾波器的常規(guī)3×3卷積層,然而實(shí)驗(yàn)表明,這是一個(gè)相對(duì)耗時(shí)的層,只要16個(gè)濾波器就足夠完成對(duì)224×224特征圖的濾波.雖然這樣并沒(méi)有節(jié)省很多參數(shù),但確實(shí)降低了計(jì)算量,利用YOLOv3處理數(shù)據(jù)快的特性,可以加快模型的訓(xùn)練速度,以達(dá)到實(shí)時(shí)處理數(shù)據(jù)的目的,MobileNetv3-YOLOv3算法流程如圖5所示.
圖5 MobileNetv3-YOLOv3算法流程
2.1.3 MobileNetv3-YOLOv3模型的局限性
MobileNetv3-YOLOv3在YOLOv3的基礎(chǔ)上降低了計(jì)算量,但是仍然存在著一些缺點(diǎn).實(shí)驗(yàn)表明[9],深度可分離卷積在3×3的規(guī)模的時(shí)候,其計(jì)算量比標(biāo)準(zhǔn)卷積少了很多,使得模型的體積縮小,降低了計(jì)算量和成本,但其在大規(guī)模的特征處理中,仍然存在著特征提取不足的問(wèn)題,在輸入一幀的情況下,多尺度特征圖在YOLOv3下定義為:
Fn=tn(Fn-1)=tn(tn-1(…t1(I)));
(6)
D=fn(dn(Fn),…,dn-k(Fn-k)),n>k>0.
(7)
其中:Fn表示第n層特征圖,t1(I)表示輸入圖像的第一層與特征圖之間的非線性關(guān)系,在經(jīng)過(guò)一系列卷積操作后就會(huì)得到相對(duì)應(yīng)n值的非線性函數(shù)的檢測(cè)結(jié)果.從以上的公式不難看出,輸入的n值不同,特征圖對(duì)應(yīng)特征層的檢測(cè)結(jié)果也會(huì)發(fā)生改變,為了保證檢測(cè)結(jié)果的準(zhǔn)確度,需要保證特征圖中每一層特征層包含的信息足夠多,MobileNetv3-YOLOv3雖然采用了深層卷積網(wǎng)絡(luò),但是在特征提取的過(guò)程中,容易忽視淺層的一些特征信息,從而導(dǎo)致獲取到的小目標(biāo)信息過(guò)少,最終檢測(cè)結(jié)果也會(huì)以顯示大目標(biāo)為主要部分.從這點(diǎn)不難看出,MobileNetv3-YOLOv3對(duì)于小目標(biāo)的檢測(cè)并不精準(zhǔn),而本文所要檢測(cè)的物體是交通標(biāo)志牌,其屬于小目標(biāo)檢測(cè)的范疇.
MobileNetv3-YOLOv3雖然縮短了計(jì)算量,但也存在一些缺陷,對(duì)于小目標(biāo)的檢測(cè)精度不高,由于分辨率低,小目標(biāo)物體占用的像素低、攜帶的信息少、容易導(dǎo)致特征丟失,這是因?yàn)樵谶M(jìn)入MobileNetv3骨干網(wǎng)絡(luò)之前沒(méi)有對(duì)圖像進(jìn)行預(yù)處理可能導(dǎo)致圖像特征的丟失,以及在處理過(guò)程中可能存在圖像失真的問(wèn)題,所以本文為了解決這些問(wèn)題引用了聚焦(Focus)模塊來(lái)進(jìn)行圖片的預(yù)處理,用來(lái)防止圖像特征的丟失,以及引用空間金字塔池化網(wǎng)絡(luò)(Spatial Pyramid Pooling Network,SPPNet)防止圖像失真,引入這兩個(gè)模塊會(huì)增強(qiáng)了小目標(biāo)檢測(cè),但是也增加了計(jì)算量,所以最后引入跨階段局部網(wǎng)絡(luò)(Cross Stage Partial Network,CSPNet)消除在計(jì)算過(guò)程中產(chǎn)生的重復(fù)特征以及消除計(jì)算瓶頸,可以保證模型的準(zhǔn)確率以及訓(xùn)練速度,同時(shí)也能縮小模型的體積,本文算法CCTSDB數(shù)據(jù)集中與YOLOv3的比較,模型體積縮小了26%,其中YOLOv3訓(xùn)練好的模型體積為123.3 MB,本文算法訓(xùn)練好的模型體積為89.9 MB,改進(jìn)的MobileNetv3-YOLOv3骨干網(wǎng)絡(luò)的結(jié)構(gòu)如表1所示.
表1 改進(jìn)MobileNetv3-YOLOv3骨干網(wǎng)絡(luò)結(jié)構(gòu)
改進(jìn)的MobileNetv3-YOLOv3算法流程如圖6所示,該網(wǎng)絡(luò)可接受任意RGB色彩的圖像格式的輸入,然后經(jīng)過(guò)聚焦(Focus)模塊的處理,對(duì)圖片進(jìn)行切片操作,將圖片的每一個(gè)像素值進(jìn)行下采樣處理,經(jīng)過(guò)一系列卷積操作后得到?jīng)]有信息丟失的特征圖,然后將其經(jīng)過(guò)深度可分離卷積的操作后,傳入空間金字池化網(wǎng)絡(luò)(Spatial Pyramid Pooling Network,SPPNet),可以使得特征圖轉(zhuǎn)換為與全連接層相同維度相匹配的特征向量,可以加強(qiáng)網(wǎng)絡(luò)層,更進(jìn)一步確定特征圖信息的準(zhǔn)確率,最后進(jìn)入跨階段局部網(wǎng)絡(luò)(Cross Stage Partial Network,CSPNet)消除在計(jì)算過(guò)程中產(chǎn)生的重復(fù)特征以及消除計(jì)算瓶頸,達(dá)到模型的最優(yōu)化.
圖6 改進(jìn)的MobileNetv3-YOLOv3算法流程
改進(jìn)的MobileNetv3-YOLOv3采用CIoU為損失函數(shù).IoU表示交并比,是目標(biāo)檢測(cè)的常用指標(biāo),用預(yù)測(cè)檢測(cè)框與真實(shí)檢測(cè)框進(jìn)行比較,比較值越趨于1說(shuō)明效果越好,越接近真實(shí)值,IoU計(jì)算公式為
(8)
IoU作為損失函數(shù)也會(huì)出現(xiàn)一些問(wèn)題,如目標(biāo)檢測(cè)框與正式檢測(cè)框沒(méi)有相交,那么IoU的值為0,不能反應(yīng)兩者的重合度,同時(shí)loss的值也為0,沒(méi)有進(jìn)行梯度回傳的問(wèn)題,那么模型將無(wú)法進(jìn)行訓(xùn)練.GIoU的提出就是為了解決框值不重疊而導(dǎo)致無(wú)法進(jìn)行梯度回傳的問(wèn)題,GIoU的公式為
LGIoU=1-IoU(A,B)+|C-A∪B|/|C|.
(9)
其中:A表示預(yù)測(cè)框,B表示真實(shí)框,C是A和B的最小包圍框,但是GIoU存在著收斂速度慢的問(wèn)題,因此,DIoU被提出,并且DIoU在IoU損失中增加了一個(gè)懲罰項(xiàng),用來(lái)最小化兩個(gè)檢測(cè)框之間的距離,DIoU的公式為
LDIoU=1-IoU(A,B)+p2(Actr,Bctr)/c2.
(10)
其中:A表示預(yù)測(cè)框,B表示真實(shí)框,Actr表示預(yù)測(cè)檢測(cè)框中心的點(diǎn)坐標(biāo),Bctr表示真實(shí)檢測(cè)框中心的點(diǎn)坐標(biāo),p(·)表示歐式距離的計(jì)算公式.CIoU是DIoU的加強(qiáng)版,在DIoU的基礎(chǔ)上將長(zhǎng)寬比引入進(jìn)來(lái).CIoU的損失值不在單一化,而是包含中心點(diǎn)的距離、長(zhǎng)寬比以及重疊面積,其公式為:
LCIoU=1-IoU(A,B)+
p2(Actr,Bctr)/c2+αυ;
(11)
(12)
(13)
其中:A表示預(yù)測(cè)框,B表示真實(shí)框,Actr表示預(yù)測(cè)檢測(cè)框中心的點(diǎn)坐標(biāo),Bctr表示真實(shí)檢測(cè)框中心的點(diǎn)坐標(biāo),wgt和hgt表示真實(shí)檢測(cè)框的寬和高,w和h表示預(yù)測(cè)檢測(cè)框的寬和高.
本文所采用的數(shù)據(jù)集來(lái)自文獻(xiàn)[13](CSUST Chinese Traffic Sign Detection Benchmark,CCTSDB),是在2018年由文獻(xiàn)[5]制作完成,總共包含3大類(lèi):禁止、警告、指示,如圖7所示.為了保證結(jié)果的準(zhǔn)確率,需要龐大的數(shù)據(jù)量的支持,該數(shù)據(jù)集有16 123張圖片,其中15 000張圖片作為訓(xùn)練集,400張圖片作為測(cè)試集.
(a)禁止標(biāo)志(紅色) (b)警告標(biāo)志(黃色) (c)指示標(biāo)志(藍(lán)色)
實(shí)驗(yàn)是在Ubuntu18.04.4LTS系統(tǒng)下進(jìn)行的,采用的是pytorch1.8.1深度學(xué)習(xí)框架,CUDA10.0,硬件配置為NVIDIA RTX 2080Ti顯卡,12 GB顯存.訓(xùn)練時(shí)的參數(shù)配置:輸入為640×640像素比例的圖像,lr0為0.01,lrf為0.2,momentum為0.937,weight_decay為0.000 5,訓(xùn)練批次為110,批量大小為12.
實(shí)驗(yàn)使用多個(gè)指標(biāo)來(lái)對(duì)算法進(jìn)行評(píng)估,包括精確度(P),召回率(R),平均精度值(mAP)以及FPS,它們的計(jì)算過(guò)程如公式(14)—(17)所示,其中TP表示預(yù)測(cè)正確的正樣本的數(shù)量,F(xiàn)N表示預(yù)測(cè)失敗的正樣本的數(shù)量,p(rc)表示在召回率為rc的情況下的p值.
(14)
(15)
(16)
(17)
為了對(duì)本次提出的算法進(jìn)行有效的驗(yàn)證,本文在公開(kāi)數(shù)據(jù)集CCTSDB上進(jìn)行了消融對(duì)比實(shí)驗(yàn),其檢測(cè)結(jié)果如表2所示.表2列出了P,R,mAP 3種評(píng)價(jià)指標(biāo),在(CIoU取值為0.6)的情況下,對(duì)比baseline可以得出,本文所提出的算法P提升了8.6%,R值提升了0.5%,mAP值提升了3.3%.根據(jù)上述消融實(shí)驗(yàn)的對(duì)比可以得出本文所提出的算法有了明確的提升,本文算法在CCTSDB數(shù)據(jù)集下的P,R,PR的曲線分別如圖8所示,測(cè)試集的測(cè)試效果如圖9所示,以YOLOv3與本文的算法對(duì)比為例,其中0表示警告類(lèi)交通標(biāo)志,1表示指示類(lèi)交通標(biāo)志,2表示禁止類(lèi)交通標(biāo)志,值越接近1效果越好.
表2 改進(jìn)的MobileNetv3-YOLOv3在CCTSDB數(shù)據(jù)集上消融實(shí)驗(yàn)結(jié)果
(a)P值曲線;(b)R值曲線;(c)PR值曲線
(a)YOLOv3算法1 (b)本文的算法1
(c)YOLOv3算法2 (d)本文的算法2
為了驗(yàn)證本文所提出的算法的有效性,將本文的算法與最新文獻(xiàn)所提出的算法在CCTSDB公開(kāi)數(shù)據(jù)集上進(jìn)行了對(duì)比,對(duì)比結(jié)果如表3所示.從表3可以看出,YOLOv3以及T-YOLO均不是最優(yōu)解,YOLOv3的準(zhǔn)確度很低,而T-YOLO雖然準(zhǔn)確度上升了,但是FPS卻下降到了極低的水平,根本無(wú)法滿(mǎn)足實(shí)時(shí)檢測(cè)的目的,改進(jìn)的YOLOv3-Tiny雖然R得到最優(yōu)的結(jié)果,但是最關(guān)鍵的指標(biāo)mAP卻很低,無(wú)法滿(mǎn)足精準(zhǔn)測(cè)量的目標(biāo),最新的算法YOLOv5s雖然FPS是最高的,但是P、R以及mAP均不如本文所提出的算法,綜上對(duì)比可知,本文的算法在交通標(biāo)志牌檢測(cè)方面具有很好的效果.
表3 不同算法在CCTSDB數(shù)據(jù)集中的表現(xiàn)
為了改進(jìn)目前主流算法對(duì)交通標(biāo)志牌檢測(cè)精度低、處理速度慢的問(wèn)題,本文提出了改進(jìn)的MobileNetv3-YOLOv3算法,引入SSPNet去除重復(fù)特征,可以提高候選框的速度,加快模型的推理速度,引入CSPNet消除計(jì)算瓶頸,節(jié)省了計(jì)算量,引入Focus層防止特征圖信息丟失,保證模型的準(zhǔn)確度.從CCTSDB的對(duì)比實(shí)驗(yàn)可以看出,本文的P以及mAP值均取得了最優(yōu)的結(jié)果,與YOLOv3算法相比,本文的P、R、mAP值、FPS都得到了有效的提升,分別提升了6%,1.8%,1.8%以及15%,雖然FPS比YOLOv3以及T-YOLO高,但還不是最好的,未來(lái)還會(huì)在檢測(cè)速度方面進(jìn)行提升以達(dá)到最優(yōu)的效果.