單鵬,李丹
(四川大學(xué)錦城學(xué)院,四川成都,611731)
目標檢測是計算機視覺領(lǐng)域的一個重要分支,近年來目標檢測的應(yīng)用越來越廣泛,包括行人檢測、障礙物檢測、人臉檢測、遙感圖像目標檢測等[1],其中障礙物檢測廣泛應(yīng)用在軌道交通和智能汽車領(lǐng)域。盲人出行主要依靠盲杖或?qū)と?,且都是走盲道,但是街道上的盲道往往會有一些障礙物。姚麗[2]等人提出了基于深度視覺和圖像處理的智能導(dǎo)盲系統(tǒng),所以可將目標檢測應(yīng)用在輔助盲人的系統(tǒng)上。本文提出通過目標檢測算法來輔助盲人進行障礙物檢測,提高盲人出行的安全性。目標檢測算法主要分為基于錨框和無錨框兩種,目前針對障礙物檢測的研究都是基于有錨框的目標檢測算法,如Faster R-CNN、MR-CNN和YOLOv3等;但原始的算法結(jié)構(gòu)的檢測效果不佳,都需要對網(wǎng)絡(luò)框架做一些改進。初帆[3]提出YOLOv3算法的對列車障礙物檢測效果并不理想,所以采用改進的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu),得到了較好的結(jié)果。于是本文提出基于無錨框的FCOS目標檢測算法進行障礙物檢測,與原始的Faster R-CNN和MR-CNN網(wǎng)絡(luò)結(jié)構(gòu)相比也能夠達到更好的檢測效果,且比有錨框的檢測算法減少了與錨框相關(guān)參數(shù)數(shù)量和計算,針對遠距離的、較小的目標有更好的檢測性能。
FCOS是一種無錨框的單階段檢測算法[4],不用預(yù)先定義錨框,由模型自己回歸出錨框來。相比基于錨框的目標檢測算法,F(xiàn)COS算法大大減少了設(shè)計參數(shù)的數(shù)量,避免了與錨框相關(guān)的復(fù)雜計算。該算法結(jié)構(gòu)如圖1所示。該結(jié)構(gòu)包括三個部分:主干網(wǎng)絡(luò)backbone,特征金字塔FPN以及輸出部分head。其中輸出部分包括分類,回歸,中心度三個分支,分類的維度可根據(jù)數(shù)據(jù)集的目標類別數(shù)來確定。本模型選取ResNet50作為主干網(wǎng)絡(luò)。輸入圖片的真實框表示為G=(x(i),y0(i),x1(i),y1(i),c(i)),其中(x0(i),y0(i)),(x1(i),y1(i))分別是邊框的左上頂點和右下頂點坐標,c(i)表示邊框內(nèi)的目標屬于哪一類。用(x,y)表示特征圖上像素點的坐標,每個像素點會映射到原始圖片上直接回歸,回歸目標為一個四維向量:t=l*,t*,r*,b*,分別表示該點到邊框四邊的距離。如果一個位置落入多個邊框的中心區(qū)域,則認為它是一個模糊樣本,只需選擇最小面積的邊框作為回歸目標。如果該像素點在真實邊框內(nèi),則該位置的l*,t*,r*,b*可表示為:
FCOS的損失函數(shù)[4]如下:
圖1 FCOS算法框架
式中Lcls表示Focal Loss,Lreg表示IOU Loss,Npos表示正樣本的個數(shù),px,y表示類別得分,tx,y表示回歸預(yù)測框,表示中心度center-ness[4]。由于遠離目標中心的位置會產(chǎn)生的大量低質(zhì)量的檢測,所以提出中心度的概念來減少低質(zhì)量的檢測對性能的影響。其計算公式[4]如下:
ResNet是由何凱明[5]等人提出的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),在2015年的ILSVRC比賽中取得了冠軍。ResNet相比于傳統(tǒng)神經(jīng)網(wǎng)路的創(chuàng)新點在于提出了殘差學(xué)習(xí)的思想。傳統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)在進行信息傳遞時難免會遇到信息丟失、梯度爆炸等問題,導(dǎo)致網(wǎng)絡(luò)訓(xùn)練效果差或無法訓(xùn)練;ResNet在一定程度上解決了這個問題。通過直接將輸入數(shù)據(jù)傳到輸出,即使網(wǎng)絡(luò)深度很高,也能有效保護數(shù)據(jù)的完整性。ResNet的結(jié)構(gòu)可以加快超深神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,模型準確率也有較好的效果。ResNet有不同的網(wǎng)絡(luò)層數(shù),分為ResNet18,ResNet34,ResNet50,ResNet101,ResNet152等幾種不同的網(wǎng)絡(luò)結(jié)構(gòu)。本文采用ResNet50作為網(wǎng)絡(luò)框架。ResNet50網(wǎng)絡(luò)模型由49層卷積層和一層全連接層構(gòu)成,其結(jié)構(gòu)如圖2所示。
圖2 ResNet50網(wǎng)絡(luò)結(jié)構(gòu)圖
stage0主要是對輸入的圖片進行卷積、正則化、激活函數(shù)、最大池化的計算操作。stage1到stage4表示殘差塊[6],殘差塊都有三層卷積,總共有49層卷積層,加上最后一層全連接層總共50層。
FCOS算法流程如圖1所示,先對圖片進行預(yù)處理,然后通過ResNet50得到 C1,C2,C3,C4,C5五個特征模塊。由于圖片中的真實框重疊在訓(xùn)練過程中會產(chǎn)生難以處理的歧義,即重疊的位置應(yīng)該返回哪一個邊框,這將導(dǎo)致性能下降。FCOS采用多級預(yù)測[4]可以減少模糊樣本的數(shù)量,有效的解決該問題。將C3,C4,C5傳入特征金字塔FPN中,經(jīng)過上采樣和下采樣,產(chǎn)生五個不同尺寸的特征圖:P3,P4,P5,P6,P7。對基于錨框的算法,不同的特征圖有不同比例的錨框。FCOS只需要關(guān)注FPN中每個特征層上目標對象的大小,而不需要設(shè)計錨框。與有錨框的算法不同,在FCOS中直接限制每層邊框回歸的范圍,首先計算每層特征圖上的每個像素點的回歸目標l*,t*,r*,b*,判斷該位置是否滿足max(l*,t*,r*,b*)
本文采用Pascal VOC2007+2012數(shù)據(jù)集進行訓(xùn)練,VOC2007的測試集進行測試。VOC2007數(shù)據(jù)集共包含:訓(xùn)練集(5011張圖片),測試集(4952張圖片),共計9963張圖片,共包含20個種類。其中person、car種類的樣本數(shù)較多,訓(xùn)練集有2008個person樣本,713個car樣本,測試集有2007個person樣本,721個car樣本。VOC2012數(shù)據(jù)集包含5717張訓(xùn)練圖片,其中person樣本有4194個,car樣本有1013個。由于盲人出行的障礙物主要包括行人和汽車,所以選取該數(shù)據(jù)集有較好的參考價值。本實驗在數(shù)據(jù)集的20個種類中選取了8種常見的障礙物:bicycle,bird,bus,car,dog,cat,motorbike,person作為檢測目標。
目標檢測常用性能指標有AP(Average Precision),mAP(Mean Average Precision), 召 回 率Recall,準確率(Precision)等[7],本文采用AP,mAP和召回率來評估模型。AP表示某一種類的平均精度,mAP表示所有種類的AP的平均值。
本實驗的硬件環(huán)境為 :Intel(R)Core(TM)i5-8300H,16G內(nèi)存,顯卡為NVIDIA GeForce GTX 1050 Ti。軟件環(huán)境為 64位 Windows系 統(tǒng),Python3.7,Pytorch1.9.0,使 用Pycharm作為開發(fā)環(huán)境。
對VOC2007+2012訓(xùn)練集進行訓(xùn)練,本實驗通過改變初始學(xué)習(xí)率得到三個訓(xùn)練模型;三個模型均采用SGD優(yōu)化,動量因子調(diào)整為0.9,權(quán)重衰減調(diào)整為0.0001。模型一初始學(xué)習(xí)率為0.005;模型二初始學(xué)習(xí)率為0.001,模型三初始學(xué)習(xí)率為0.002。訓(xùn)練所得的模型用VOC2007測試集進行測試,得到8類障礙物的AP,如圖3所示。
圖3 模型一、模型二和模型三的AP
由圖3可知模型三對8類障礙物的識別AP最好,所以采用模型三進行實驗,得到VOC2007中20類目標的mAP,與文獻[8]中的Faster R-CNN,MR-CNN相比較,如表1所示。
表1 Faster R-CNN/MR -CNN與FCOS算法的mAP比較
由表1可知FCOS算法相比Faster R-CNN和MR-CNN算法在VOC2007的測試集上mAP分別提升了0.03和0.01,相比原始的基于錨框的目標檢測算法有所提高。
同時,實驗得到采用模型三作為障礙物檢測對于所選取8種障礙物的召回率Recall,如表2所示。
表2 8種障礙物的Recall和AP
Motorbike 0.97 0.82 Person 0.98 0.86
圖4 檢測圖片實例,檢測框上方的標注表示該目標的種類和類別得分
由表2可得FOCS目標檢測算法對8種障礙物的識別有良好的性能,有較高的召回率,且對car目標的識別準確率達到了91%,person目標的識別準確率達到了86%;該模型對兩大盲人障礙物都有不錯的準確率。
基于FCOS算法的盲人輔助障礙物檢測的應(yīng)用流程如圖5所示。
圖5 模型應(yīng)用流程圖
首先在盲人眼鏡上加入攝像頭,通過攝像頭采集盲人當(dāng)前行走道路的圖片,然后傳入系統(tǒng)進行預(yù)處理,再送入模型進行障礙物檢測,得到障礙物的種類大小等信息,最后通過耳機語音提示盲人當(dāng)前障礙物的相關(guān)信息,幫助盲人避開障礙物。
本模型良好的檢測性能為盲人的出行提供了可靠保障,有助于提升殘障人士的生活品質(zhì)。由圖4可知針對不同大小的障礙物,該模型都能準確識別;且對于高度重疊的、不完整的目標,也有較強的識別能力。所以基于FCOS算法的目標檢測還有很好的應(yīng)用前景。
本文提出了一種基于FCOS算法的盲人輔助障礙物檢測方法。主干網(wǎng)絡(luò)選取ResNet50,并采用多級預(yù)測方式進行模型訓(xùn)練。在VOC2007測試集上的結(jié)果表明:
與Faster R-CNN和MR-CNN算法相比,mAP分別提升了3%和1%;對常見的8種障礙物有較高的準確度。因此本文提出的方法是一種可行的障礙物檢測方法,可運用在盲人輔助系統(tǒng)領(lǐng)域。還可對該模型進行優(yōu)化,比如主干網(wǎng)絡(luò)替換為更復(fù)雜的ResNet101等,由此應(yīng)用在更多的領(lǐng)域,如智能汽車障礙物檢測、消防通道障礙物檢測等。但是盲人在出行過程中對障礙物的檢測實時性要求較高,往后的工作還需要研究如何提高檢測速率。