郭瑞香
(閩南師范大學(xué)信息化建設(shè)與管理辦公室,福建漳州363000)
據(jù)英國《柳葉刀·全球衛(wèi)生》新刊載的研究報(bào)告預(yù)計(jì),若不加強(qiáng)盲人的眼疾治療,全球盲人數(shù)量2050年將增至1.15 億,比現(xiàn)有的4 500 萬多1.76 倍.在交通如此發(fā)達(dá)的情況下,盲人由于視覺缺失,無法直接觀察周圍的環(huán)境,必須借助導(dǎo)盲基建和輔助設(shè)備進(jìn)行戶外活動(dòng),但現(xiàn)有導(dǎo)盲輔助設(shè)備對紅綠燈設(shè)備信息獲取能力有限,盲人在單獨(dú)出行時(shí)將隱藏極大的不便性和危險(xiǎn)性.基于深度學(xué)習(xí)提出紅綠燈目標(biāo)檢測方法.利用PaddlePaddle 深度學(xué)習(xí)平臺對紅綠燈目標(biāo)檢測模型進(jìn)行訓(xùn)練并調(diào)整參數(shù)進(jìn)行優(yōu)化,得到紅綠燈準(zhǔn)確檢測結(jié)果.
目標(biāo)檢測算法分為單階段模型和兩階段模型.單階段檢測算法有SSD 和Yolo模型,它們只需要使用一個(gè)網(wǎng)絡(luò)就能在圖像上產(chǎn)生候選區(qū)域,并預(yù)測出候選區(qū)域中包含物體的類別和位置.兩階段RCNN[1]和SPPnet算法則是先在圖像上產(chǎn)生候選區(qū)域,再對候選區(qū)域進(jìn)行分類并預(yù)測目標(biāo)物體位置.2015年,Joseph等提出Yolo(You Only Look Once,Yolo)算法,也被稱為Yolo V1;2016年,他們對算法進(jìn)行改進(jìn),又提出Yolo V2版本;2018年發(fā)展出Yolo V3版本.Yolo V3[2]的推理速度快于SSD 3倍,如表1.基于Yolo V3單階段算法,分別使用DarkNet53、ResNet34單個(gè)網(wǎng)絡(luò)結(jié)構(gòu)提取特征網(wǎng)絡(luò),產(chǎn)生一個(gè)正的候選區(qū)域,比RCNN產(chǎn)生候選框數(shù)量較少,精度速度性價(jià)比較高,能達(dá)到實(shí)時(shí)響應(yīng)的水平.
表1 Yolo MAP&FPSTab.1 Yolo Map&FPS
Yolo V3模型借鑒了金字塔特征圖思想,使用小尺寸特征圖來檢測圖像中大尺寸物體,使用大尺寸特征圖檢測小物體.其算法使用了多個(gè)標(biāo)簽分類方法,根據(jù)候選框與真實(shí)框的接近程度進(jìn)行分類,把足夠接近真實(shí)框的候選區(qū)域標(biāo)注為正樣本,并通過卷積網(wǎng)絡(luò)預(yù)測候選框的位置和類別,同時(shí)獲得真實(shí)框相對預(yù)測框的標(biāo)簽值;把偏離真實(shí)框的候選區(qū)域標(biāo)注為負(fù)樣本.再將網(wǎng)絡(luò)預(yù)測值和標(biāo)簽值進(jìn)行比較建立損失函數(shù).
按一定的規(guī)則在圖像上產(chǎn)生一系列位置固定的錨框[3],錨框中檢測出包含目標(biāo)物體時(shí),這時(shí)錨框轉(zhuǎn)為預(yù)測框,并預(yù)測出預(yù)測框中所包含目標(biāo)物體的類別和位置,預(yù)測出預(yù)測框相對錨框位置需要調(diào)整的幅度大小.
在生成預(yù)測框之前,我們將圖像劃分多個(gè)相同大小的網(wǎng)格,然后以每個(gè)小方塊的中心點(diǎn)生成3個(gè)不同大小的錨框.圖像中物體在哪個(gè)小方塊中心點(diǎn)上,則由這個(gè)小方塊中心點(diǎn)所在的網(wǎng)格負(fù)責(zé)檢測物體.生成的錨框是固定的,且與物體邊界框有一定的偏差,需要在錨框的基礎(chǔ)上根據(jù)預(yù)測出來的幅度大小進(jìn)行位置的微調(diào),并生成預(yù)測框.預(yù)測框相對于錨框會(huì)有不同的中心位置和大小,考慮如何生成其中心位置坐標(biāo).
錨框的大小按規(guī)則預(yù)先設(shè)定好,根據(jù)錨框與邊界框來確定預(yù)測框[4],把圖像320*240 劃分為16*16 大小的網(wǎng)格后,得到m*n個(gè)小區(qū)域,m==20,n==15,即20*15 個(gè)小方塊.小方塊區(qū)域左上角的位置坐標(biāo)是:cx=5cy=11.
此錨框的區(qū)域中心坐標(biāo)是center_x=cx+0.5=5.5,center_y=cy+0.5=11.5.
可以通過下面的方式生成預(yù)測框的中心坐標(biāo):bx=cx+σ(tx)by=cy+σ(ty),
其中tx和ty為實(shí)數(shù),σ(x)[5]是Sigmoid 函數(shù),其定義如下:σ(x)=,由于函數(shù)σ(x)值總是在0~1 之間,所以預(yù)測框中心點(diǎn)總是落在小方塊區(qū)域內(nèi).
當(dāng)tx=ty=0時(shí),bx=cx+0.5by=cy+0.5,預(yù)測框中心與錨框中心重合,都是小區(qū)域的中心.
每個(gè)區(qū)域生成3鐘不同形狀大小的錨框,每個(gè)錨框里都可能包含目標(biāo)物體,這里我們把錨框是否包含了物體看作是一個(gè)二分類問題,使用標(biāo)簽objectness來表示.當(dāng)錨框包含了物體時(shí),確定物體的類別,并使用類別標(biāo)簽Lable 來表示具體所屬的類別,設(shè)置objectness=1,表示預(yù)測框?qū)儆谡?;?dāng)物體不在錨框內(nèi)時(shí),設(shè)置objectness=0,表示錨框?qū)儆谪?fù)類.如果物體在錨框內(nèi),那么需要確定預(yù)測框的中心位置和大小tx,ty,tw,th、objectness和類別標(biāo)簽label.
如圖1,Yolo V3模型使用3個(gè)不同形狀的錨框與真實(shí)框計(jì)算交并比IoU,取IoU值最大的錨框.IoU是兩個(gè)框重疊的部分除以兩個(gè)框的區(qū)域集合部分得出結(jié)果.即
圖1 候選框標(biāo)注流程Fig.1 Annotation process of candidate box
Yolo V3 模型引入了Resnet殘差學(xué)習(xí)方法,減輕原模型深層網(wǎng)絡(luò)訓(xùn)練的困難.在原有設(shè)計(jì)的基礎(chǔ)上,引入了殘差模塊,每個(gè)殘差模塊包含兩條路徑,一條是輸入特征,一條是正對改特征進(jìn)行卷積得到特征的殘差,最后再對特征進(jìn)行相加.模型中網(wǎng)絡(luò)結(jié)構(gòu)包含32個(gè)卷積層、輸入層、全連接層,使用步幅為2的卷積層替代池化層進(jìn)行特征圖的降采樣過程,有效阻止由于池化層導(dǎo)致的低層級特征的損失,最后一層是全連接層,并使用softmax[5-6]函數(shù)進(jìn)行回歸0~1 之間.對于輸出feature map 相同大小的層,有相同數(shù)量的filters,即channel 數(shù)相同;當(dāng)feature map 大小減半時(shí)(池化),filters 數(shù)量翻倍.對于殘差網(wǎng)絡(luò),使用維度匹配的shortcut連接,維度不匹配時(shí),同等映射使用zero padding.其網(wǎng)絡(luò)結(jié)構(gòu)[9]如表2.
表2 Resnet 34架構(gòu)Tab.2 RESNET 34 architecture
續(xù)表2
Resnet 34 網(wǎng)絡(luò)結(jié)構(gòu)中添加了恒等映射后,神經(jīng)網(wǎng)絡(luò)訓(xùn)練的函數(shù)[7-9]變?yōu)镕(X)+X,F(xiàn)(X)為殘差[10],即修正的幅度,這里把網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)為H(X)=F(X)+X,F(xiàn)(X)=H(X),若F(X)=0,H(X)=X就構(gòu)成同等映射,擬合網(wǎng)絡(luò)殘差更加容易些.殘差網(wǎng)絡(luò)結(jié)構(gòu)如圖2.
圖2 殘缺網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Incomplete network structure
Yolo v3 的網(wǎng)絡(luò)結(jié)構(gòu)包含基礎(chǔ)特征提取網(wǎng)絡(luò)、multi-scale 特征融合層和輸出層組成.整個(gè)模型算法步驟如下:
1)數(shù)據(jù)集分析.構(gòu)建數(shù)據(jù)集,包含annotations和JPEGImages兩個(gè)文件夾.采用標(biāo)注軟件對圖片進(jìn)行標(biāo)注,annotations/xmls 目錄下存放圖片的標(biāo)注.每個(gè)xml 文件是對一張圖片的說明,包括圖片尺寸、包含的紅綠燈名稱、在圖片上出現(xiàn)的位置等信息.
2)數(shù)據(jù)預(yù)處理.對本地圖片數(shù)據(jù)做預(yù)處理,采用按一定比例隨機(jī)分組,一部分用于訓(xùn)練,一部分用于驗(yàn)證,并產(chǎn)生圖片對應(yīng)的標(biāo)簽文件.模型訓(xùn)練時(shí)將圖片壓縮為224*224,并對圖像做一些隨機(jī)的變化處理,如外接矩形框、旋轉(zhuǎn)、顏色增強(qiáng)、隨機(jī)裁剪等,產(chǎn)生不同角度且相似但又不完全相同的樣本,擴(kuò)大訓(xùn)練數(shù)據(jù)集,抑制過度擬合,提升模型的泛化能力.
3)特征提取網(wǎng)絡(luò).模型中引入了殘差網(wǎng)絡(luò)思想,使用Resnet殘差網(wǎng)絡(luò)結(jié)構(gòu),使用shortcut保持轉(zhuǎn)換輸入和輸出一致,采用壓縮方式先降維,卷積后再升維,在Resnet 34通過淺層網(wǎng)絡(luò)函數(shù)F(X)+X構(gòu)造同等映射深層模型,用步長為2的卷積層下采樣對圖像進(jìn)行提取特征,通過轉(zhuǎn)換結(jié)構(gòu)將輸入圖片轉(zhuǎn)成瓶頸卷積一樣的尺寸大小,再進(jìn)行逐位相加,完成鏈接.
4)特征融合層.Yolo v3 采用了3 種不同尺度大小的特征圖來進(jìn)行目標(biāo)檢測,分別為13*13,26*26,52*52,特征融合層選取3 種尺度特征圖作為輸入,通過一系列的卷積層和上采樣對各尺度的特征圖進(jìn)行融合,骨干網(wǎng)絡(luò)輸出的特征圖與預(yù)測框?qū)?yīng)起來.
5)輸出層.通過網(wǎng)絡(luò)結(jié)構(gòu)提取的特征融合,每個(gè)網(wǎng)格預(yù)測B 個(gè)邊界框和這個(gè)邊界框是物體的概率Objectness,每個(gè)邊界框預(yù)測出5個(gè)值x、y、w、h和置信度Pr*IoU[11-12],并輸出2個(gè)類的概率.
實(shí)驗(yàn)使用的是全國大學(xué)生智能車競賽線上組賽題紅綠燈數(shù)據(jù)集,采用PaddlePaddle X、AI STUDIO平臺對數(shù)據(jù)進(jìn)行訓(xùn)練,首先使用官方配置修改后得出best 模型,并使用best model 作為下一次的預(yù)訓(xùn)練模型,調(diào)用detection release0.3 中余弦learning_rate 進(jìn)行學(xué)習(xí),學(xué)習(xí)后再使用best作為新一輪預(yù)訓(xùn)練模型,迭代輪數(shù)減半,learning_rate、批次大小適度調(diào)整.
這里直接采用34層的殘差網(wǎng)絡(luò)ResNet,并且采用預(yù)訓(xùn)練模式.用預(yù)訓(xùn)練模型能夠較快地得到較好的準(zhǔn)確度,如表3.
表3 紅綠燈對象框信息Tab.3 Traffic light object box information
Resnet 34網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練過程打印出來的參數(shù)信息,如表4.
表4 Resnet 34 網(wǎng)絡(luò)結(jié)構(gòu)部分參數(shù)信息Tab.4 Parameter information of RESNET 34 network structure
續(xù)表4
由上可知,模型訓(xùn)練參數(shù)Total params:21,302,722,Trainable params:21,268,674,Non-trainable params:34,048訓(xùn)練參數(shù)得到較大的優(yōu)化.訓(xùn)練中對圖像進(jìn)行裁剪,經(jīng)過數(shù)據(jù)增強(qiáng),采用Mixup策略、圖像填充、隨機(jī)裁剪、隨機(jī)水平翻轉(zhuǎn)、多尺度訓(xùn)練、隨機(jī)亮度等優(yōu)化策略,具體裁剪輸入?yún)?shù)訓(xùn)練圖見圖3.
圖3 圖像裁剪訓(xùn)練輸入?yún)?shù)Fig.3 Input parameters of image clipping training
實(shí)驗(yàn)中使用平均精準(zhǔn)率(MAP)、準(zhǔn)確率P、召回率R評估檢測模型的準(zhǔn)確性.準(zhǔn)確率為P,Tp為模型正確檢測到的紅或綠燈數(shù)量;Tf為模型錯(cuò)誤檢測到的紅或綠燈數(shù)量,F(xiàn)n為模型檢測錯(cuò)誤、漏檢的數(shù)量.準(zhǔn)確率公式[11-12]如下:
召回率R如下:
根據(jù)式(1)-式(2),以DarkNet53 網(wǎng)絡(luò)結(jié)構(gòu)的YOLO V3 模型進(jìn)行訓(xùn)練,得出紅綠燈檢測評估結(jié)果如表5.
表5 紅綠燈檢測結(jié)果Tab.5 Test results of traffic lights
平均精準(zhǔn)率(MAP)為0.865 9.
實(shí)驗(yàn)中通過改變Yolo V3的網(wǎng)絡(luò)結(jié)構(gòu),以ResNet34作為Yolo V3模型的網(wǎng)絡(luò)結(jié)構(gòu),通過對圖片進(jìn)行裁剪,學(xué)習(xí)率為0.000 015 63,置信度閾值設(shè)為0.6,交并比(IoU)閾值設(shè)為0.5,整體檢測評估結(jié)果達(dá)到最優(yōu),如表6.
表6 紅綠燈檢測結(jié)果Tab.6 Test results of traffic lights
模型在第8個(gè)eporch時(shí),bbox_map達(dá)到最優(yōu)值為89.664 7,平均精準(zhǔn)率的均值(MAP)達(dá)到0.896 6.
在訓(xùn)練時(shí),最初使用較小的學(xué)習(xí)率來啟動(dòng),并很快切換到大學(xué)習(xí)率.Warm up初始學(xué)習(xí)率為0,訓(xùn)練在Warm up步數(shù)為800前,逐步增大學(xué)習(xí)率為0.000 015 63,具體學(xué)習(xí)率變化如圖4所示.
圖4 學(xué)習(xí)率變化Fig.4 Changes in learning rate
在訓(xùn)練時(shí),保存各輪模型bbox_map變化曲線,如圖5.
圖5 各輪模型bbox_map變化Fig.5 The bbox of each round model_Map changes
bbox_map變化T0017-Metrics/Training(Step):loss,如圖6.
圖6 模型訓(xùn)練集Loss變化Fig.6 Loss change of model training set
圖片測試見圖7-圖8.
圖7 綠燈檢測結(jié)果Fig.7 Green light detection results
圖8 紅燈檢測結(jié)果Fig.8 Red light detection results
在模型算法中,通過改變Yolo V3模型的網(wǎng)絡(luò)結(jié)構(gòu),從實(shí)驗(yàn)結(jié)果看,模型的精度得到了提高,模型性能得到了優(yōu)化,模型平均精準(zhǔn)率從原來的0.865 9提高到0.896 6,提升了3個(gè)百分點(diǎn).實(shí)驗(yàn)證明通過改變網(wǎng)絡(luò)結(jié)構(gòu)來提取特征網(wǎng)絡(luò)可以提升模型的精度,縮短訓(xùn)練時(shí)間.
本實(shí)驗(yàn)使用Yolo V3 模型,引入殘差網(wǎng)絡(luò)學(xué)習(xí)方法,采用Resnet 34殘差網(wǎng)絡(luò)結(jié)構(gòu),對模型裁剪進(jìn)行改進(jìn),優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)的深度,不斷優(yōu)化參數(shù)進(jìn)行訓(xùn)練,平均精準(zhǔn)率(MAP)由0.865 9 提高到0.896 6,同時(shí)縮短了訓(xùn)練時(shí)間.殘差網(wǎng)絡(luò)結(jié)構(gòu)更容易優(yōu)化,通過增加網(wǎng)絡(luò)的深度來提高準(zhǔn)確率.下一步實(shí)驗(yàn)將使用zero padding 的同等映射,不斷優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),加深網(wǎng)絡(luò)結(jié)構(gòu),如resnet50、resnet101、resnet152,優(yōu)化模型性能,提高紅綠燈模型檢測準(zhǔn)確率,保障盲人弱勢群體更加安全地過馬路.