單鵬,李丹
(四川大學錦城學院,四川成都,611731)
目標檢測是計算機視覺領域的一個重要分支,近年來目標檢測的應用越來越廣泛,包括行人檢測、障礙物檢測、人臉檢測、遙感圖像目標檢測等[1],其中障礙物檢測廣泛應用在軌道交通和智能汽車領域。盲人出行主要依靠盲杖或導盲犬,且都是走盲道,但是街道上的盲道往往會有一些障礙物。姚麗[2]等人提出了基于深度視覺和圖像處理的智能導盲系統,所以可將目標檢測應用在輔助盲人的系統上。本文提出通過目標檢測算法來輔助盲人進行障礙物檢測,提高盲人出行的安全性。目標檢測算法主要分為基于錨框和無錨框兩種,目前針對障礙物檢測的研究都是基于有錨框的目標檢測算法,如Faster R-CNN、MR-CNN和YOLOv3等;但原始的算法結構的檢測效果不佳,都需要對網絡框架做一些改進。初帆[3]提出YOLOv3算法的對列車障礙物檢測效果并不理想,所以采用改進的YOLOv3網絡結構,得到了較好的結果。于是本文提出基于無錨框的FCOS目標檢測算法進行障礙物檢測,與原始的Faster R-CNN和MR-CNN網絡結構相比也能夠達到更好的檢測效果,且比有錨框的檢測算法減少了與錨框相關參數數量和計算,針對遠距離的、較小的目標有更好的檢測性能。
FCOS是一種無錨框的單階段檢測算法[4],不用預先定義錨框,由模型自己回歸出錨框來。相比基于錨框的目標檢測算法,FCOS算法大大減少了設計參數的數量,避免了與錨框相關的復雜計算。該算法結構如圖1所示。該結構包括三個部分:主干網絡backbone,特征金字塔FPN以及輸出部分head。其中輸出部分包括分類,回歸,中心度三個分支,分類的維度可根據數據集的目標類別數來確定。本模型選取ResNet50作為主干網絡。輸入圖片的真實框表示為G=(x(i),y0(i),x1(i),y1(i),c(i)),其中(x0(i),y0(i)),(x1(i),y1(i))分別是邊框的左上頂點和右下頂點坐標,c(i)表示邊框內的目標屬于哪一類。用(x,y)表示特征圖上像素點的坐標,每個像素點會映射到原始圖片上直接回歸,回歸目標為一個四維向量:t=l*,t*,r*,b*,分別表示該點到邊框四邊的距離。如果一個位置落入多個邊框的中心區域,則認為它是一個模糊樣本,只需選擇最小面積的邊框作為回歸目標。如果該像素點在真實邊框內,則該位置的l*,t*,r*,b*可表示為:

FCOS的損失函數[4]如下:

圖1 FCOS算法框架

式中Lcls表示Focal Loss,Lreg表示IOU Loss,Npos表示正樣本的個數,px,y表示類別得分,tx,y表示回歸預測框,表示中心度center-ness[4]。由于遠離目標中心的位置會產生的大量低質量的檢測,所以提出中心度的概念來減少低質量的檢測對性能的影響。其計算公式[4]如下:

ResNet是由何凱明[5]等人提出的神經網絡結構,在2015年的ILSVRC比賽中取得了冠軍。ResNet相比于傳統神經網路的創新點在于提出了殘差學習的思想。傳統的深度神經網絡在進行信息傳遞時難免會遇到信息丟失、梯度爆炸等問題,導致網絡訓練效果差或無法訓練;ResNet在一定程度上解決了這個問題。通過直接將輸入數據傳到輸出,即使網絡深度很高,也能有效保護數據的完整性。ResNet的結構可以加快超深神經網絡的訓練,模型準確率也有較好的效果。ResNet有不同的網絡層數,分為ResNet18,ResNet34,ResNet50,ResNet101,ResNet152等幾種不同的網絡結構。本文采用ResNet50作為網絡框架。ResNet50網絡模型由49層卷積層和一層全連接層構成,其結構如圖2所示。

圖2 ResNet50網絡結構圖
stage0主要是對輸入的圖片進行卷積、正則化、激活函數、最大池化的計算操作。stage1到stage4表示殘差塊[6],殘差塊都有三層卷積,總共有49層卷積層,加上最后一層全連接層總共50層。
FCOS算法流程如圖1所示,先對圖片進行預處理,然后通過ResNet50得到 C1,C2,C3,C4,C5五個特征模塊。由于圖片中的真實框重疊在訓練過程中會產生難以處理的歧義,即重疊的位置應該返回哪一個邊框,這將導致性能下降。FCOS采用多級預測[4]可以減少模糊樣本的數量,有效的解決該問題。將C3,C4,C5傳入特征金字塔FPN中,經過上采樣和下采樣,產生五個不同尺寸的特征圖:P3,P4,P5,P6,P7。對基于錨框的算法,不同的特征圖有不同比例的錨框。FCOS只需要關注FPN中每個特征層上目標對象的大小,而不需要設計錨框。與有錨框的算法不同,在FCOS中直接限制每層邊框回歸的范圍,首先計算每層特征圖上的每個像素點的回歸目標l*,t*,r*,b*,判斷該位置是否滿足max(l*,t*,r*,b*)
本文采用Pascal VOC2007+2012數據集進行訓練,VOC2007的測試集進行測試。VOC2007數據集共包含:訓練集(5011張圖片),測試集(4952張圖片),共計9963張圖片,共包含20個種類。其中person、car種類的樣本數較多,訓練集有2008個person樣本,713個car樣本,測試集有2007個person樣本,721個car樣本。VOC2012數據集包含5717張訓練圖片,其中person樣本有4194個,car樣本有1013個。由于盲人出行的障礙物主要包括行人和汽車,所以選取該數據集有較好的參考價值。本實驗在數據集的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的平均值。
本實驗的硬件環境為 :Intel(R)Core(TM)i5-8300H,16G內存,顯卡為NVIDIA GeForce GTX 1050 Ti。軟件環境為 64位 Windows系 統,Python3.7,Pytorch1.9.0,使 用Pycharm作為開發環境。
對VOC2007+2012訓練集進行訓練,本實驗通過改變初始學習率得到三個訓練模型;三個模型均采用SGD優化,動量因子調整為0.9,權重衰減調整為0.0001。模型一初始學習率為0.005;模型二初始學習率為0.001,模型三初始學習率為0.002。訓練所得的模型用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算法的盲人輔助障礙物檢測的應用流程如圖5所示。

圖5 模型應用流程圖
首先在盲人眼鏡上加入攝像頭,通過攝像頭采集盲人當前行走道路的圖片,然后傳入系統進行預處理,再送入模型進行障礙物檢測,得到障礙物的種類大小等信息,最后通過耳機語音提示盲人當前障礙物的相關信息,幫助盲人避開障礙物。
本模型良好的檢測性能為盲人的出行提供了可靠保障,有助于提升殘障人士的生活品質。由圖4可知針對不同大小的障礙物,該模型都能準確識別;且對于高度重疊的、不完整的目標,也有較強的識別能力。所以基于FCOS算法的目標檢測還有很好的應用前景。
本文提出了一種基于FCOS算法的盲人輔助障礙物檢測方法。主干網絡選取ResNet50,并采用多級預測方式進行模型訓練。在VOC2007測試集上的結果表明:
與Faster R-CNN和MR-CNN算法相比,mAP分別提升了3%和1%;對常見的8種障礙物有較高的準確度。因此本文提出的方法是一種可行的障礙物檢測方法,可運用在盲人輔助系統領域。還可對該模型進行優化,比如主干網絡替換為更復雜的ResNet101等,由此應用在更多的領域,如智能汽車障礙物檢測、消防通道障礙物檢測等。但是盲人在出行過程中對障礙物的檢測實時性要求較高,往后的工作還需要研究如何提高檢測速率。