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