齊永康
(華南師范大學(xué) 計(jì)算機(jī)學(xué)院,廣州 510631)
隨著移動(dòng)網(wǎng)絡(luò)和智能設(shè)備的不斷發(fā)展,越來越多的年輕人喜歡邊行走邊玩手機(jī).這導(dǎo)致了他們的注意力分散,進(jìn)而遇到路面障礙發(fā)生危險(xiǎn)[1].
因此,我們設(shè)計(jì)了一個(gè)希望能在智能手機(jī)上應(yīng)用的基于深度學(xué)習(xí)方法的路面障礙實(shí)時(shí)檢測模型,用來及時(shí)提醒行人在行走時(shí)遇到的障礙,這樣可以有效減少邊走邊使用手機(jī)帶來的危險(xiǎn).其中智能手機(jī)能夠?qū)崟r(shí)識(shí)別路面障礙的本質(zhì)要求是在保證檢測路障圖像高精度值的前提下,檢測速度也要足夠快.對(duì)比傳統(tǒng)的移動(dòng)端路障檢測方法,本文提出的基于深度學(xué)習(xí)的Mobile-YOLOv3 模型在提高了精度值的前提下,也能達(dá)到實(shí)時(shí)檢測的最低要求[2].
傳統(tǒng)的目標(biāo)檢測方法和近年來使用深度學(xué)習(xí)來進(jìn)行目標(biāo)檢測的方法大相徑庭.傳統(tǒng)的目標(biāo)檢測方法典型代表有AdaBoost和Cascaded 人臉檢測算法[3],HOG和SVM 行人檢測算法[4],DPM 檢測算法[5].傳統(tǒng)的目標(biāo)檢測方法大致可分為3 個(gè)步驟,包括選定目標(biāo)區(qū)域、特征提取和特征分類.傳統(tǒng)方法先將目標(biāo)圖像區(qū)域像素遍歷一遍,然后使用人工設(shè)計(jì)好的特征提取器來分析這些特征區(qū)域提取特征,最后利用類別分類器對(duì)這些目標(biāo)特征區(qū)域分類,已獲得預(yù)期的分類結(jié)果.傳統(tǒng)的目標(biāo)檢測方法存在較多的局限性,例如像素窗口冗余,以及檢測結(jié)果的不穩(wěn)定性.隨著復(fù)雜神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的出現(xiàn),這些局限性得到了一定程度上的解決.因此,以深度學(xué)習(xí)為基礎(chǔ)的目標(biāo)檢測技術(shù)逐漸代替了傳統(tǒng)的目標(biāo)檢測方式.以深度學(xué)習(xí)為基礎(chǔ)的目標(biāo)檢測網(wǎng)絡(luò)分為兩種,one-stage 網(wǎng)絡(luò)和two-stage 網(wǎng)絡(luò).Onestage 網(wǎng)絡(luò)以SSD[6],YOLO[7]系列算法為代表,twostage 網(wǎng)絡(luò)常見的有RCNN[8],Faster-RCNN[9],RFCN[10].Two-stage 類算法輸入圖像后首先會(huì)生成目標(biāo)對(duì)象候選區(qū)域,然后會(huì)將生成的目標(biāo)對(duì)象候選區(qū)域輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類和回歸.而one-stage 類算法輸入圖像后會(huì)直接利用卷積神經(jīng)網(wǎng)絡(luò)提取特征進(jìn)行分類和回歸.兩種算法的流程不同導(dǎo)致的結(jié)果就是onestage 類網(wǎng)絡(luò)的檢測速度要比two-stage 類網(wǎng)絡(luò)快很多,而檢測的準(zhǔn)確性要比two-stage 類網(wǎng)絡(luò)低.
One-stage 類網(wǎng)絡(luò)YOLOv3 提取特征的骨干網(wǎng)絡(luò)Darknet53 是為在VOC 等目標(biāo)種類多的大型數(shù)據(jù)集上訓(xùn)練而設(shè)計(jì)的深層卷積神經(jīng)網(wǎng)絡(luò),而本文應(yīng)用的路面障礙檢測場景目標(biāo)種類并沒有那么復(fù)雜,淺層特征提取網(wǎng)絡(luò)MobileNetv1 已經(jīng)足夠適用,使用YOLOv3 原始的骨干網(wǎng)絡(luò)Darknet53 訓(xùn)練反而增加了參數(shù)優(yōu)化空間的復(fù)雜度,降低了訓(xùn)練效果.所以在本文中,我們基于one-stage 網(wǎng)絡(luò)YOLOv3 網(wǎng)絡(luò)和MobileNetv1 網(wǎng)絡(luò)提出了一個(gè)精確率較高且具有一定實(shí)時(shí)性的輕量級(jí)道路障礙檢測模型:
1)拍攝制作了所需要的路面障礙數(shù)據(jù)集,因?yàn)槁访嬲系K種類多樣化,且需要使用特定的手持角度拍攝,因此無法通過網(wǎng)絡(luò)爬蟲進(jìn)行搜集,需要在現(xiàn)實(shí)生活中實(shí)地拍攝.數(shù)據(jù)集圖片由作者在廣州市各街道,公園等地拍攝,路面障礙數(shù)據(jù)集分類有井蓋,減速帶,樓梯臺(tái)階3 類.
2)將YOLOv3的骨干網(wǎng)絡(luò)Darknet53 替換為了MobileNetv1,提出了輕量級(jí)網(wǎng)絡(luò)Mobile-YOLOv3.
3)使用了4 個(gè)改進(jìn)訓(xùn)練速度和提高訓(xùn)練精度的方法.首先是訓(xùn)練時(shí)的改進(jìn),通過對(duì)IOU 局限性的分析,利用回歸損失函數(shù)CIOU 更全面地學(xué)習(xí)了真實(shí)框與預(yù)測框之間的位置及形狀關(guān)系,提升了模型的訓(xùn)練深度,速度及檢測精度.之后使用類別損失函數(shù)Focal 替換了交叉熵?fù)p失函數(shù)使得訓(xùn)練更關(guān)注于難分類樣本,并在一定程度上解決了正負(fù)樣本不均衡的問題.最后,通過加入不包含目標(biāo)路障的負(fù)樣本背景圖片進(jìn)行訓(xùn)練,進(jìn)一步提升了模型的精度.而對(duì)于檢測時(shí)的改進(jìn),利用Soft-NMS 算法替換NMS 算法,更加科學(xué)合理地處理冗余預(yù)測框,減少了對(duì)密集目標(biāo)的漏測誤刪情況.
本文實(shí)地拍攝制作了一個(gè)路障數(shù)據(jù)集,將YOLOv3骨干網(wǎng)絡(luò)替換為MobileNetv1,設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)道路障礙檢測模型Mobile-YOLOv3,并使用了4 個(gè)改進(jìn)方法來提升模型的檢測性能.最終模型在路面障礙數(shù)據(jù)集上取得了98.84%的檢測精度,相比于YOLO3 在路面障礙數(shù)據(jù)集上所取得的91.98%的檢測精度,提升了約7%.而且模型規(guī)模較YOLOv3 訓(xùn)練出來的模型減小了約2.5 倍,使用CPU 進(jìn)行檢測的速度提升了1.8 倍,使用GPU 進(jìn)行檢測的速度提升了1.3 倍.
YOLO (you only look once),是Redmon 等于2016年提出的一種one-stage 目標(biāo)檢測算法[7].在YOLO 算法出現(xiàn)之前,目標(biāo)檢測算法通常都是將檢測問題轉(zhuǎn)化為分類問題,而YOLO 算法將目標(biāo)檢測問題轉(zhuǎn)化成為了回歸問題,用一個(gè)卷積神經(jīng)網(wǎng)絡(luò)就可以直接從輸入圖像上預(yù)測目標(biāo)對(duì)象所在位置和概率,實(shí)現(xiàn)了從端到端(end-to-end)的目標(biāo)檢測算法.本文使用的網(wǎng)絡(luò)以YOLO 系列第3 代算法YOLOv3為基礎(chǔ)構(gòu)建,YOLOv3在YOLOv1和YOLOv2的基礎(chǔ)上主要改進(jìn)了骨干網(wǎng)絡(luò)結(jié)構(gòu),損失函數(shù)的計(jì)算方式,以及使用了多尺度預(yù)測融合特征的檢測方法[11].
為了讓神經(jīng)網(wǎng)絡(luò)模型在小型移動(dòng)和嵌入式設(shè)備上快速實(shí)時(shí)地運(yùn)行,Google 公司減小了神經(jīng)網(wǎng)絡(luò)模型規(guī)模并設(shè)計(jì)出了模型MobileNetv1.它在保證了模型的精確性和檢測速度的基礎(chǔ)上,極大地減小了模型的規(guī)模和計(jì)算量[12].MobileNetv1 是專門為移動(dòng)和嵌入式設(shè)備提出的高效輕量級(jí)模型,它基于流線型架構(gòu),使用深度可分離卷積來替代普通的卷積方式來構(gòu)建輕量級(jí)神經(jīng)網(wǎng)絡(luò).深度可分離卷積方式和傳統(tǒng)的卷積方式不同的地方在于它將傳統(tǒng)的卷積方式分為了深度卷積和點(diǎn)卷積,通過這種方式能夠在一定程度上達(dá)到和傳統(tǒng)的卷積方式一樣的卷積效果,同時(shí),參數(shù)量會(huì)大幅減少.
本節(jié)從YOLOv3 特征提取網(wǎng)絡(luò)骨干網(wǎng)絡(luò)的替換,CIOU和Focal 損失函數(shù),預(yù)測框篩選算法Soft-NMS和負(fù)樣本訓(xùn)練4 個(gè)方面來詳細(xì)地闡述改進(jìn)的網(wǎng)絡(luò)模型.
本文最終的目的是設(shè)計(jì)出一個(gè)能夠落地于便攜設(shè)備上的輕量級(jí)路面障礙檢測算法.YOLOv3 雖然是目前最常用的one-stage 目標(biāo)檢測算法之一,在很多場景下也能夠精確的檢測出目標(biāo)物體,但是其網(wǎng)絡(luò)結(jié)構(gòu)過于龐大,計(jì)算參數(shù)也十分巨大,最終導(dǎo)致訓(xùn)練出來的網(wǎng)絡(luò)模型規(guī)模太大,不適用于在運(yùn)算能力和內(nèi)存容量不夠充足的移動(dòng)設(shè)備上運(yùn)行.
MobileNetv1 是一個(gè)輕量級(jí)神經(jīng)網(wǎng)絡(luò),它基于一個(gè)可深度分離的卷積方法,將標(biāo)準(zhǔn)卷積分解為深度卷積和卷積核大小為1×1的點(diǎn)卷積.深度卷積將每個(gè)卷積應(yīng)用于輸入圖像的每個(gè)通道,而點(diǎn)卷積用于組合通道卷積輸出[12].這種深度可分離卷積方法可以有效地減少計(jì)算量,減少模型的規(guī)模.
因此,為了結(jié)合YOLOv3的目標(biāo)檢測結(jié)構(gòu)和MobileNetv1 網(wǎng)絡(luò)輕量化的特點(diǎn),我們將YOLOv3的骨干網(wǎng)絡(luò)Darknet53 替換為MobileNetv1.這樣,新的目標(biāo)檢測網(wǎng)絡(luò)的參數(shù)量和運(yùn)算量都將大大降低,使得該網(wǎng)絡(luò)可以在移動(dòng)設(shè)備上運(yùn)行.本文改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)Mobile-YOLOv3 如圖1所示.其中,y1,y2,y3為3 個(gè)不同圖像尺寸的輸出矩陣.DBL 塊是YOLOv3的基本組件,由標(biāo)準(zhǔn)卷積層(Conv)、批標(biāo)準(zhǔn)化層(Batchnormalization)、激活函數(shù)Leaky_ReLU 層組成.Concat是向量拼接操作,用于將MobileNetv1的中間層和深層網(wǎng)絡(luò)的上采樣特征向量進(jìn)行拼接.MPWBR 塊是MobileNetv1的基本組件之一,由卷積核大小為1×1的點(diǎn)卷積層、批標(biāo)準(zhǔn)化層、激活函數(shù)ReLU 層組成.MDWBR/S1 塊是MobileNetv1的基本組件之一,由步長為1的深度卷積層、批標(biāo)準(zhǔn)化層、ReLU 層組成.MDWBR/S2 塊是MobileNetv1的基本組件之一,由步長為2的深度卷積層、批標(biāo)準(zhǔn)化層、ReLU 層組成,用于縮放圖像尺寸.MBR/S2 塊由步長為2的標(biāo)準(zhǔn)卷積層、批標(biāo)準(zhǔn)化層、ReLU 層組成.MDWS/S2 塊由零填充層(zeropadding)、MDWBR/S2 塊、MPWBR 塊組成.MDWS/S1 塊由MDWBR/S1塊、MPWBR 塊組成.
圖1 Mobile-YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3 算法中使用交并比損失函數(shù)IOU_Loss(intersection over union)作為邊框回歸損失函數(shù),IOU是為了評(píng)價(jià)預(yù)測框?qū)δ繕?biāo)物體的預(yù)測效果而定義的一個(gè)指標(biāo).假設(shè)預(yù)測框?yàn)锳,真實(shí)框?yàn)锽,則對(duì)于圖2所示的預(yù)測框A和B的IOU_Loss運(yùn)算公式如式(1)所示:
圖2 交并比IOU
IOU有兩個(gè)缺陷,一是當(dāng)預(yù)測框和真實(shí)框不相交時(shí),IOU的值等于0,無論兩個(gè)框之間的位置如何,都不可能知道預(yù)測框和真實(shí)框之間的相對(duì)位置關(guān)系.第二點(diǎn)是,當(dāng)真實(shí)框包含預(yù)測框時(shí),若不同的預(yù)測框大小相同,但此時(shí)IOU值相等,IOU值無法反映不同的預(yù)測框和真實(shí)框之間相對(duì)位置的不同.針對(duì)IOU存在的問題,我們使用CIOU(complete intersection over union)函數(shù)替換了IOU作為本文模型的回歸損失函數(shù).
歐氏距離交并比DIOU(distance intersection over union)被提出用來解決IOU存在的兩個(gè)問題[13],如圖3,圖4所示.DIOU添加了一個(gè)同時(shí)包含真實(shí)框和預(yù)測框的最小外接矩形C,并且DIOU還考慮了兩個(gè)框的重疊面積和中心點(diǎn)距離,DIOU_Loss的運(yùn)算公式如式(2)所示,DIOU引入了一個(gè)懲罰項(xiàng),用來最小化真實(shí)框和預(yù)測框之間的距離.這樣無論是當(dāng)預(yù)測框和真實(shí)框不相交時(shí),還是真實(shí)框包含預(yù)測框時(shí),DIOU的值都可以反映出預(yù)測框和真實(shí)框之間的相對(duì)位置關(guān)系.
圖3 真實(shí)框包含預(yù)測框DIOU 圖
圖4 真實(shí)框與預(yù)測框不相交DIOU 圖
雖然上述方法已經(jīng)解決了IOU存在的兩個(gè)問題,但是當(dāng)真實(shí)框包含預(yù)測框時(shí),如圖3,圖5所示,若預(yù)測框的長寬大小不一定但面積和中心點(diǎn)位置不變時(shí),也無法確定不同的預(yù)測框與真實(shí)框的相對(duì)位置.針對(duì)這個(gè)問題,完整交并比CIOU和DIOU被同步提出用來解決這個(gè)問題[13],CIOU在保留了DIOU懲罰項(xiàng)的前提下,選擇添加了一個(gè)反映預(yù)測框與真實(shí)框的長寬比關(guān)系的參數(shù)項(xiàng)來進(jìn)一步解決這個(gè)問題,CIOU_Loss的運(yùn)算公式如式(3)–式(5)所示.
圖5 預(yù)測框被真實(shí)框包含時(shí)長寬比不一致DIOU 圖
其中,ɑ是用來平衡比例的參數(shù),v用來衡量預(yù)測框和真實(shí)框之間長寬比例一致性的參數(shù),wgt,hgt是真實(shí)框的長度和寬度,wp,hp是預(yù)測框的長度和寬度.
在YOLOv3 算法中,使用的是二分類交叉熵(binary cross entropy)作為模型的分類損失函數(shù).然而,交叉熵?fù)p失函數(shù)并沒有對(duì)模型訓(xùn)練時(shí)的難易樣本進(jìn)行區(qū)分,這導(dǎo)致了模型的訓(xùn)練效果不太理想.因此為了解決這個(gè)問題,我們使用Focal 損失函數(shù)替代了YOLOv3 中的二分類交叉熵函數(shù)作為本文模型的分類損失函數(shù).
在二分類問題中,y表示目標(biāo)的類別標(biāo)簽值,取值為{0,1},0為負(fù)樣本,1為正樣本.y′是輸入樣本經(jīng)過激活函數(shù)后預(yù)測屬于正樣本的概率,取值在0–1之間.二分類交叉熵?fù)p失函數(shù)如式(6)所示.若目標(biāo)為正樣本,則當(dāng)預(yù)測概率y′越接近1 時(shí)越容易分類,損失值越小,若目標(biāo)為負(fù)樣本,則預(yù)測概率y′越接近0 時(shí)越容易分類,損失值越小,說明在二分類交叉熵?fù)p失函數(shù)中易分類樣本對(duì)損失函數(shù)的數(shù)值影響不大.而在實(shí)際訓(xùn)練過程中,訓(xùn)練樣本主要由大量易分類樣本組成,若采用交叉熵?fù)p失函數(shù)進(jìn)行訓(xùn)練,會(huì)導(dǎo)致?lián)p失函數(shù)在訓(xùn)練過程中迭代較慢,且可能無法得到最優(yōu)的結(jié)果.
針對(duì)這個(gè)問題,Focal 損失函數(shù)[14]在交叉熵?fù)p失函數(shù)的基礎(chǔ)上引入了一個(gè)權(quán)重系數(shù),通過控制易分類樣本和難分類樣本的權(quán)重,使得模型在訓(xùn)練時(shí)更加專注于困難樣本.Focal 損失函數(shù)如式(7)所示:
Focal 損失函數(shù)首先在二分類交叉熵的基礎(chǔ)上加了一個(gè)因子γ,其中γ>0.若目標(biāo)為正樣本,則當(dāng)預(yù)測概率y′越接近1 越容易分類時(shí),(1–y′)γ的值會(huì)逐漸減小接近0,Focal 損失函數(shù)的值相比二分類交叉熵?fù)p失也會(huì)大量減少.同樣若目標(biāo)為負(fù)樣本,則當(dāng)預(yù)測概率y′越接近0 越容易分類時(shí),(y′)γ的值也會(huì)逐漸減小接近0,Focal 損失函數(shù)的值相比于二分類交叉熵?fù)p失也會(huì)大量減少.這樣Focal 損失函數(shù)通過添加了一個(gè)干擾因子γ,使得模型可以降低易分類樣本的權(quán)重,更加關(guān)注于難以分類的樣本,此外還加入了平衡因子ɑ,用來平衡數(shù)據(jù)集中正負(fù)樣本的比例.在本文經(jīng)過對(duì)比實(shí)驗(yàn)得出當(dāng)ɑ=0.75,γ=2 時(shí)實(shí)驗(yàn)效果最優(yōu).
YOLOv3 算法中使用非最大值抑制NMS (nonmaximum suppression)來刪除檢測時(shí)的冗余框,NMS的本質(zhì)是尋找局部最大值,去除非極大值元素,找到最接近真實(shí)框的預(yù)測框位置,NMS 流程如算法1 所示.NMS 算法先對(duì)所有可能包含了同一個(gè)檢測對(duì)象的預(yù)測框B的檢測得分S進(jìn)行排序,然后將得分最高的預(yù)測框作為目標(biāo)真實(shí)框M,并計(jì)算該框和其他預(yù)測框的IOU 值,如果該值高于預(yù)先設(shè)置的閾值Nt,則刪除此預(yù)測框并重復(fù)此過程,直到所有預(yù)測框都被選中或被刪除.NMS 處理結(jié)果如圖6所示.
圖6 NMS 處理結(jié)果
根據(jù)NMS 算法設(shè)計(jì),如果兩個(gè)目標(biāo)對(duì)象都處于預(yù)先設(shè)置的重疊閾值中,則NMS 算法可能會(huì)無法檢測到所有的目標(biāo)對(duì)象.當(dāng)兩個(gè)目標(biāo)對(duì)象的預(yù)測框靠的太近時(shí),如果重疊區(qū)域的IOU 值高于預(yù)先設(shè)置的閾值,那么檢測得分低的目標(biāo)對(duì)象預(yù)測框就會(huì)被刪除,這樣就導(dǎo)致了一些目標(biāo)對(duì)象的預(yù)測框被誤刪從而無法被檢測出來.針對(duì)誤檢的問題,我們使用Soft-NMS 函數(shù)替代了NMS 作為本文模型的目標(biāo)框篩選算法.
為了解決NMS 會(huì)誤刪距離太近,重疊區(qū)域過大的目標(biāo)物體預(yù)測框的問題,Bodla 等人提出了軟化非極大值限制Soft-NMS[15].Soft-NMS 處理流程如算法2,對(duì)于初始預(yù)測框列表B中的某一預(yù)測框bi也是先計(jì)算其和檢測得分最高框M的IOU 值,但Soft-NMS 不是像NMS 一樣當(dāng)IOU 值高于預(yù)設(shè)閾值Nt,在預(yù)測框列表B和檢測得分列表S中直接暴力刪除該預(yù)測框bi及其得分si.而是將該預(yù)測框bi和目標(biāo)真實(shí)框M的IOU 值和預(yù)測框bi的檢測得分si相乘重新作為該預(yù)測框bi的檢測得分進(jìn)行檢測.通過這種方式可以降低改該預(yù)測框bi的檢測得分,不會(huì)像NMS 中直接被刪除.
一是要在設(shè)計(jì)、工藝、生產(chǎn)環(huán)節(jié)深耕細(xì)作,優(yōu)化設(shè)計(jì)、生產(chǎn)流程,改變傳統(tǒng)的作坊式生產(chǎn)為自動(dòng)化、智能化流水線生產(chǎn);改變傳統(tǒng)的二維圖紙?jiān)O(shè)計(jì)為三維設(shè)計(jì)、數(shù)字化設(shè)計(jì);改變傳統(tǒng)的工藝聯(lián)系單為標(biāo)準(zhǔn)作業(yè)。
算法1.NMS 處理步驟Input:B={b1,…,bn},S={s1,…,sn},Nt B 是初始預(yù)測框的表S 列表包含預(yù)測框列表B 對(duì)應(yīng)的檢測得分Nt 是 NMS 預(yù)設(shè)閾值begin D ← {}While B≠empty do m ← argmax S M ← bm D ← D ∪ M;B ← B? M for bi in B do if IOU(M,bi) ≥ Nt then B ← B? bi;S ← S? si end end end return D,S end算法2.Soft-NMS 處理步驟Input:B={b1,…,bn},S={s1,…,sn},Nt B 是初始預(yù)測框的列表S 列表包含預(yù)測框列表B 對(duì)應(yīng)的檢測得分Nt 是 NMS 預(yù)設(shè)閾值begin D ← {}While B≠empty do m ← argmax S M ← bm D ← D ∪ M;B ← B? M for bi in B do si← sif(IOU(M,bi))end end end return D,S end
傳統(tǒng)的NMS 計(jì)算公式如式(8)所示:
在圖像上具有連續(xù)性的高斯加權(quán)的Soft-NMS 計(jì)算公式如式(9)所示:
其中,σ是n個(gè)預(yù)測框的計(jì)算復(fù)雜度.
負(fù)樣本是一種不包含識(shí)別目標(biāo)的圖像,負(fù)樣本訓(xùn)練的意義是為了減少模型錯(cuò)誤檢測的概率.我們通過對(duì)原始訓(xùn)練集圖像的研究,發(fā)現(xiàn)了一個(gè)可能會(huì)導(dǎo)致模型誤檢的負(fù)樣本場景,該場景包括具有直線特征的背景如斑馬線、直線等.另外,在對(duì)正樣本進(jìn)行標(biāo)注的時(shí)候,難免會(huì)有一部分路面和目標(biāo)路面障礙同時(shí)被標(biāo)記,而這些路面的特征也會(huì)被模型學(xué)習(xí)到.所以,我們在收集負(fù)樣本時(shí)側(cè)重收集了具有直線特征的非典型路面障礙背景圖像.通過在訓(xùn)練數(shù)據(jù)集中添加負(fù)樣本,模型檢測的錯(cuò)誤率將會(huì)得到一定程度的緩解.
本文以原始模型訓(xùn)練中常見誤測的對(duì)象為重點(diǎn),在廣州所有地區(qū)的街道上隨機(jī)收集和篩選了500 張負(fù)樣本,再結(jié)合1 500 張正樣本,一共得到了包含2 000張樣本的數(shù)據(jù)集A.我們將Mobile-YOLOv3 網(wǎng)絡(luò)分別在數(shù)據(jù)集A 與只有2 000 張正樣本的數(shù)據(jù)集B 上進(jìn)行了訓(xùn)練,得到的檢測精度對(duì)比如表1所示,實(shí)驗(yàn)結(jié)果證明在數(shù)據(jù)集中添加負(fù)樣本可以提升模型訓(xùn)練的效果.
表1 添加負(fù)樣本測試精度對(duì)比
實(shí)驗(yàn)的模型訓(xùn)練和檢測的軟硬件環(huán)境為Intel(R)Xeon(R) CPU E5-2620 v4 @ 2.10 GHz,128 GB 內(nèi)存,Nvdia GeForce GTX 1080ti 顯卡.操作系統(tǒng)為Ubuntu 16.04.6 LTS.開發(fā)環(huán)境為Python 3.6.10,TensorFlow 1.10.0,CUDA9.0,CUDNN7.6.4,IDE 平臺(tái)為Visual Studio Code,數(shù)據(jù)標(biāo)注軟件為labelImg.
由于本文應(yīng)用的場景是行人在行走時(shí)低頭使用手機(jī)所遇到的道路障礙,因此對(duì)數(shù)據(jù)集的拍攝角度和形狀等方面存在特殊性要求,而現(xiàn)有的開源數(shù)據(jù)集沒有此類型的圖像.路面障礙數(shù)據(jù)集是一個(gè)模擬行人低頭使用手機(jī)角度所拍攝的照片,我們拍攝了廣州各區(qū)具有代表性的道路障礙,這些圖片可以用來代表在日常生活中許多場景可能遇到的路面障礙.在拍攝了一系列的路障圖像,我們進(jìn)行篩選并去除了難以用肉眼識(shí)別的圖像之后,總共收集了2 000 張路面障礙數(shù)據(jù)集,路面障礙分類有井蓋,減速帶,樓梯臺(tái)階3 類各500 張,為了降低誤檢率,還拍攝了不含目標(biāo)障礙的負(fù)樣本500 張.我們將路障圖像批量標(biāo)號(hào),并使用labelImg 軟件進(jìn)行標(biāo)注,生成了對(duì)應(yīng)的XML 文件.本文將數(shù)據(jù)集劃分為1 620 張訓(xùn)練集,180 張驗(yàn)證集,200 張測試集.部分?jǐn)?shù)據(jù)集如圖7所示.
圖7 部分?jǐn)?shù)據(jù)集示例
在目標(biāo)檢測中,如果預(yù)測框與真實(shí)框的交并比IOU大于預(yù)設(shè)的閾值,則認(rèn)為此預(yù)測框預(yù)測正確,否則認(rèn)為此預(yù)測框預(yù)測錯(cuò)誤.假如給定一張A類別的圖像,則此圖的預(yù)測精度PA如式(10)所示:
即一個(gè)A類圖像預(yù)測的平均精度等于測試集上A類圖像的預(yù)測精度值之和除以A類圖像的總數(shù)量.而一個(gè)數(shù)據(jù)集中會(huì)有多個(gè)類別的圖像,因此需要一個(gè)統(tǒng)一的概念來衡量一個(gè)網(wǎng)絡(luò)在此數(shù)據(jù)集上訓(xùn)練最后得到的模型表現(xiàn)如何,則均值平均精度MAP(mean average precison)定義如式(12)所示:
∑
即MAP等于數(shù)據(jù)集中所有類別圖像預(yù)測的平均精度值之和除以該數(shù)據(jù)集中類別的總數(shù)量.MAP值越高,代表模型在此數(shù)據(jù)集上訓(xùn)練的效果越好.
在對(duì)收集到的圖片進(jìn)行預(yù)處理并標(biāo)注生成數(shù)據(jù)集之后,將數(shù)據(jù)集放入Mobile-YOLOv3 模型中進(jìn)行訓(xùn)練,其中重要的參數(shù)設(shè)置如表2所示.
表2 訓(xùn)練參數(shù)設(shè)置
ReduceLRONPlateau 參數(shù)設(shè)置為如果訓(xùn)練持續(xù)5 個(gè)epoch 后,驗(yàn)證損失沒有下降,則將學(xué)習(xí)率調(diào)小0.1倍.EarlyStopping 參數(shù)設(shè)置為如果訓(xùn)練持續(xù)10 個(gè)epoch 后,驗(yàn)證損失沒有下降,則提前結(jié)束訓(xùn)練.
本實(shí)驗(yàn)使用了遷移學(xué)習(xí),深度學(xué)習(xí)中的遷移學(xué)習(xí)是將已經(jīng)訓(xùn)練好學(xué)習(xí)完數(shù)據(jù)集特征的模型參數(shù)遷移到新模型中,幫助新模型進(jìn)行訓(xùn)練的一種方法.因?yàn)閹缀跛械臄?shù)據(jù)和特征基本上都是有相關(guān)關(guān)系的,所以通過遷移學(xué)習(xí)的方式,新模型可以直接學(xué)習(xí)已經(jīng)訓(xùn)練好的模型參數(shù),從而加快模型的學(xué)習(xí)效率,加速模型優(yōu)化速度,不需要像大多數(shù)網(wǎng)絡(luò)一樣重新開始學(xué)習(xí).
本文訓(xùn)練分為兩個(gè)階段進(jìn)行,第1 階段采用了遷移學(xué)習(xí)的方式,凍結(jié)了MobileNetv1 模型的前160 層,并使用在ImageNet 數(shù)據(jù)集上預(yù)訓(xùn)練的MobileNetv1 模型進(jìn)行遷移學(xué)習(xí),訓(xùn)練次數(shù)為300 個(gè)epoch.第2 階段將第1 階段凍結(jié)的所有卷積層解封進(jìn)行訓(xùn)練,訓(xùn)練次數(shù)為150 個(gè)epoch.訓(xùn)練過程中設(shè)置了早停和學(xué)習(xí)率自動(dòng)衰減參數(shù),防止無效訓(xùn)練.Mobile-YOLOv3的訓(xùn)練過程如圖8,圖9所示,檢測精度如圖10所示,其中,SpeedBump,WellLid,Stairs為路面障礙數(shù)據(jù)集中的3 類路障標(biāo)簽.
圖8 Mobile-YOLOv3 第一階段訓(xùn)練圖像
圖9 Mobile-YOLOv3 第二階段訓(xùn)練圖像
圖10 Mobile-YOLOv3 訓(xùn)練檢測精度圖
本文對(duì)YOLOv3,YOLOv3 網(wǎng)絡(luò)的精簡版Tiny-YOLOv3和Mobile-YOLOv3 網(wǎng)絡(luò)分別進(jìn)行了訓(xùn)練,訓(xùn)練參數(shù)設(shè)置和數(shù)據(jù)集預(yù)處理均和第4.3 節(jié)一致,訓(xùn)練結(jié)果如表3所示.由表3可以看到,雖然Tiny-YOLOv3訓(xùn)練出來的模型規(guī)模只有YOLOv3 原模型的1/7 左右,但是MAP下降了將近11%.對(duì)比之下,Mobile-YOLOv3訓(xùn)練出來的網(wǎng)絡(luò)模型規(guī)模為原來的0.4 倍,使用CPU檢測圖像的速度比YOLOv3 提升了將近一倍,使用GPU 檢測圖像的速度也比YOLOv3 提升了26%,而且MAP也提升了將近3%,我們考慮到可能是因?yàn)閅OLOv3是針對(duì)大型數(shù)據(jù)集檢測而設(shè)計(jì)的目標(biāo)檢測模型,對(duì)于具有直線,圓形等平面特征的小型路障數(shù)據(jù)集沒有很好的效果.實(shí)驗(yàn)結(jié)果證明Mobile-YOLOv3 網(wǎng)絡(luò)更適用于基于移動(dòng)設(shè)備的路障檢測問題.
表3 各網(wǎng)絡(luò)性能對(duì)比
本文將Mobile-YOLOv3 模型的邊框回歸損失函數(shù)替換為了CIOU,分類損失函數(shù)替換為了Focal,目標(biāo)框篩選算法替換為了Soft-NMS,數(shù)據(jù)集添加了負(fù)樣本進(jìn)行訓(xùn)練.作為對(duì)照組分別將Mobile-YOLOv3的邊框回歸損失函數(shù),分類損失函數(shù),目標(biāo)檢測框篩選算法替換為YOLOv3 原來的算法,數(shù)據(jù)集添加負(fù)樣本訓(xùn)練,最后訓(xùn)練得到的結(jié)果如表4所示.由表4可以看出,本文改進(jìn)的3 種優(yōu)化算法都可以提升Mobile-YOLOv3 模型對(duì)路面障礙數(shù)據(jù)集的檢測速度和精度,最終使用了3 種優(yōu)化算法和增加了負(fù)樣本訓(xùn)練機(jī)制的模型Mobile-YOLOv3 檢測精度為98.84%,MAP相比原始Mobile-YOLOv3 模型的94.77% 提升了約4.1%.改進(jìn)后的Mobile-YOLOv3 模型相比于YOLOv3 模型,均值平均精度MAP提升了約7%,模型規(guī)模也縮小了約2.5 倍,使用CPU 檢測圖像的速度提升了80%,使用GPU 檢測圖像的速度也提升了30%.
表4 各優(yōu)化方法消融實(shí)驗(yàn)
本文自行設(shè)計(jì)標(biāo)注了一個(gè)包含各類道路障礙特征的數(shù)據(jù)集,用于模型效果的性能評(píng)估.我們在基于YOLOv3的基礎(chǔ)上分別對(duì)其骨干網(wǎng)絡(luò)和邊框回歸損失函數(shù),分類損失函數(shù),預(yù)測框篩選算法進(jìn)行了改進(jìn),并在數(shù)據(jù)集中添加了負(fù)樣本訓(xùn)練,提出了一種針對(duì)行人使用便攜移動(dòng)設(shè)備走路時(shí)遇到路面障礙的目標(biāo)檢測算法.實(shí)驗(yàn)結(jié)果表明,本文提出的Mobile-YOLOv3道路障礙檢測輕量化算法對(duì)日常生活場景經(jīng)常遇到的具有樓梯,井蓋,減速帶等幾何特征的道路障礙的檢測,具有良好的實(shí)時(shí)性和精確度,且模型性能相比于YOLOv3 網(wǎng)絡(luò),模型規(guī)模縮減了約2.5 倍,平均均值精度MAP提升了約7%,識(shí)別的精度值達(dá)98.84%.