?

基于深度學習的盲道和盲道障礙物識別算法

2024-03-07 06:37馬文杰張軒雄
電子科技 2024年3期
關鍵詞:盲道障礙物損失

馬文杰,張軒雄

(上海理工大學 光電信息與計算機工程學院,上海 200093)

視覺是人類重要的感官之一,缺失視覺感官對盲人的生活受到較多限制。據統計,中國視障人數目前已超過1 731萬人,隨著盲人數量的增加以及交通的快速發展,其出行問題越來越受到社會的關注。目前盲人主要的出行方式是借助導盲拐杖、盲道和導盲犬。由于部分盲道不規范、盲道占用以及交通環境復雜等原因,導盲杖和盲道在某些情況下并不能較好地發揮作用,而且導盲犬的數量也較少,無法滿足大部分盲人的需要。所以確保盲道位置以及盲道是否有障礙物對盲人出行安全較重要。

隨著科學技術迅速發展,越來越多的新技術應用于導盲領域。在盲道分割方面,文獻[1]提出一種基于顏色信息的提示盲道檢測算法。文獻[2]提出了利用Gabor特性來實現盲道的劃分。傳統的圖像處理方法因其色彩多樣、紋理多變導致準確率低且速度慢。因此,基于深度學習的盲道分割技術應運而生。文獻[3]對SegNet網絡進行了改進,并給出了盲道分割的模型。文獻[4]設計了一個輕量級語義分割網絡用于盲道和人行橫道快速檢測。

關于盲道障礙物檢測,包括超聲波、紅外線以及GPS(Global Position System)等方法。文獻[5]使用飛行時間和觸覺反饋設備為視障用戶提供安全的本地導航。文獻[6]設計了一種基于視覺標記和超聲障礙物檢測的盲人用戶可穿戴式室內導航音頻輔助設備。文獻[7]設計了一種基于GPS和超聲波的導盲拐杖。隨著機器視覺和深度學習的出現,盲道障礙物檢測也有了新方法。相較于傳感器的方法,圖像可以獲得更多有效信息。目標檢測的網絡較多,有R-CNN(Regional-Convolutional Neureal Networks)[8]系列(R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN)、YOLO(You Look Only Once)[9]系列以及SSD(Single Shot MultiBox Detector)[10]等模型。文獻[11]等通過YOLOv4算法對盲道障礙物進行檢測。文獻[12]提出了一種基于YOLO的機械導盲犬視覺識別算法,可以檢測道路中存在的障礙物。

目前的研究局限于盲道分割或盲道障礙物檢測其中的一種,但對于盲人來說兩者缺一不可。單獨實現這兩個任務需要較長時間以及更多的資源,并且這兩個任務具有較多相關信息,所以多任務網絡更適合這種場景,原因主要有:1)可以一次處理多個任務而非逐個處理,可以加快圖像處理進程;2)多個任務間可進行信息共享,從而提高了工作效率[13]。本文提出一種可以同時完成盲道分割和盲道障礙物檢測的多任務網絡模型。該模型由公共特征提取網絡、特征融合網絡、盲道分割網絡和盲道障礙物檢測網絡組成,同時改進損失函數,引入修正損失函數(Rectify_Loss),可以讓盲道分割更加平整、精確。為了提高障礙物檢測召回率,將檢測網絡的NMS替換為Soft-NMS。

1 相關理論

1.1 SegFormer網絡

SegFormer[14]是一個將Transformer與輕量級多層感知器(Multilayer Perceptron,MLP)解碼器統一起來的語義分割框架,網絡框架如圖1所示。

圖1 SegFormer網絡結構Figure 1. The SegFormer network structure

SegFormer由Encoder和Decoder2個主要模塊組成。1個分層的干網絡骨(Transformer Encoder)用于生成高分辨率的粗特征和低分辨率的細特征,1個輕量級的分割網絡(All-MLP Decoder)融合多級特征,產生最終的語義分割掩碼。

SegFormer的優勢在于:1)SegFormer設計了1個新穎的分級結構Transformer Encoder,輸出多尺度特征。它不需要位置編碼,從而避免了位置編碼的插值(當測試分辨率與訓練分辨率不同時會導致性能下降);2)SegFormer避免了復雜的解碼器。SegFormer中的All-MLP Decoder從不同層聚合信息,從而結合局部關注和全局關注來呈現強大的表示。

1.2 RetinaNet網絡

RetinaNet[15]算法是一種基于錨點(Anchor)的單階段目標檢測模型,即直接對圖像進行計算生成檢測結果。其網絡結構如圖2所示。

圖2 RetinaNet網絡結構Figure 2.RetinaNet network structure

RetinaNet檢測網絡由1個主干網絡(Backbone)和2個子網絡(Subnet)組成。其中,Backbone由ResNet[16]和特征金字塔(FPN)[17]共同組成,有ResNet-50-FPN和ResNet-101-FPN這2種形式,區別在于網絡的深度不同。通過命名形式可以發現,Backbone由ResNet和FPN這2個網絡共同構成,FPN通過利用自上而下的路徑和橫向連接的方式擴展了ResNet。因此,RetinaNet可以有效地對輸入圖像構建豐富的多尺度特征金字塔,金字塔中的每一層都可以用來探測不同尺度的物體。

2 本文網絡結構

本文提出一種簡單高效的多任務網絡,可以同時完成盲道分割和盲道附近障礙物的檢測任務。在減少推理時間的同時提高了每項任務的性能,網絡結構如圖3所示。

圖3 本文網絡結構Figure 3. The proposed network structure

網絡組成:1)SegFormer網絡的Transformer Encoder作為整個網絡的Backbone部分,負責整個網絡共享的特征提取;2)本文網絡的Neck主要由空間金字塔(SPP)[18]和特征金字塔(FPN)[17]組成,用于網絡的特征融合;3)分割頭由SegFormer網絡的All-MLP Decoder構成;4)檢測頭由RetinaNet網絡的FCN(Fully Convolutional Networks) Detection Head組成。兩個任務共用一個特征提取器,減少了參數量和計算量。然后改進分割網絡和檢測網絡的損失函數,將檢測網絡的NMS替換為Soft-NMS,進一步優化分割和檢測效果。

2.1 骨干網絡(Backbone)

Backbone網絡用于提取輸入圖像的特征。由于Transformer Block引入自注意力機制,其相比于CNN,可以更好地抓住全局特征,所以本文使用SegFormer網絡的Transformer Encoder作為本文網絡的主干。Transformer Encoder是一個分層的Transformer編碼器,可以生成高分辨率的粗特征和低分辨率的細特征(可用于解碼階段的融合)。對于給定圖像,首先將其劃分為多個較小的Patch,然后輸入到分級Transformer編碼器,以獲得原始圖像分辨率的(1/4,1/8,1/16,1/32)的多級特征[14]。

Transformer Block采用多個疊加的Efficient Self-Attention和Mix-FFN(Feed Forword Networks)加深網絡深度,以提取豐富的細節和語義特征。每一個尺度都在Efficient Self-Attention中進行了自注意力計算。Transformer Block的構成如圖4所示。

Overlapped Patch Embeddings:在VIT(Vision Transformer)中將1個輸入N×N×C的Image,合并為1×1×C的向量。利用這種特性將特征圖的分辨率縮小2倍。由于這個過程不能保持Patch周圍的局部連續性,所以使用Overlapping的圖像來融合,可保證Patch周圍的局部連續性[14]。為此設置3個參數K、S、P。K是Patch Size,S是Stride,P是Padding。在實驗中分別將K、S、P設為(7,4,3)和(3,2,1)來執行Overlapping的圖像的融合過程并得到和Non-overlapping圖像融合一樣大小的Feature。

Efficient Self-Attention:將K和V的特征維度進行縮減。先將K進行Reshape,然后再用Linear做一個特征映射。計算式如下

(1)

(2)

可以把時間由O(N2)縮短到O(N2/R)。

Mix-FFN:采用3×3卷積來學習Leak Location Information,并且采用Depth-Wise卷積來減少參數和計算量,計算式如下

Xout=MLP(GELU(Conv3×3(MLP(Xin))+Xin

(3)

其中,Xin是自注意力模塊的特征。

Mix-FFN的結構如圖5所示。

圖5 Mix-FFN結構Figure 5. Mix-FFN structure

本文模型的編碼器采用MiT-B3,主要的參數如表1所示。

表1 MiT-B3主要參數Table 1. MiT-B3 indicates the main parameters

其中,K是Patch Size,S是Stride,P是Padding,C是每個特征維度,R是每個自注意力機制的縮放因子,N是自注意力機制的Head數量,E是前饋層的膨脹率(MLP中間層維數的縮放系數,后面代碼的mlp_ratios參數,中間層的維數大小為mlp_ratios×embed_dims),L是每個Transformer Block中Encoder(Efficient Self-Attn和Mix-FFN)數量。

2.2 特征融合網絡(Neck)

高分辨率(低層)特征相對與低分辨率(高層)特征有更多的細節信息以及較少的語義信息。為有效利用兩者的信息,本文設計了Neck特征融合網絡,用于融合Backbone產生的不同層次的特征。本文的Neck主要由空間金字塔池(SPP)模塊和特征金字塔網絡(FPN)模塊組成,網絡結構如圖6所示。

圖6 Neck網絡結構 Figure 6. Neck network structure

本文將SPP模塊引入到網絡特征進行池化合并,然后將全局和局部多尺度特征結合起來提高模型的精度[18]。在Backbone輸出的最后一個特征層進行4次不同尺度的最大池化處理,最大池化核大小分別為9×9、5×5、3×3、1×1(1×1即無處理)。SPP能夠增加感受野,豐富圖像的表達能力,對網絡精度有一定的提升。

本文的FPN網絡主要是將特征提取網絡的最后3層特征通過自頂向下的方法,對上層特征圖進行2倍上采樣后生成與下層大小相同的層,再將橫向連接的特征圖經過1×1的卷積后與上采樣的結果相加,融合不同語義層次的特征,使得生成的特征包含多尺度、多語義層次的信息,采用串聯的方法來融合特征[19]。

2.3 盲道分割

2.3.1 盲道分割網絡

分割部分使用All-MLP Decoder。本文網絡的解碼器是將Backbone第1層的輸出和Neck特征融合后的3個輸出(高和寬分別為原圖1/4,1/8,1/16,1/32大小的特征圖)作為輸入,然后經過MLP操作,再進行融合[14],主要包含以下4步:

步驟1將輸出的4個特征圖統一維數;

(4)

(5)

(6)

步驟4使用MLP層進行分類。

M=Linear(C,Ncls)(F)

(7)

圖7 MPL結構 Figure 7. MPL structure

2.3.2 交叉熵損失

分割網絡采用基于深度學習的圖像語義分割領域常用的交叉熵(Cross Entropy,CE)函數作為損失函數,測量預測值和真實標簽之間的相似度,計算式如下

(8)

2.4 盲道障礙物檢測

2.4.1 盲道障礙物檢測網絡

障礙物檢測部分使用全卷積預測頭。預測頭分為2個分支,分別預測每個Anchor所屬的類別以及目標邊界框回歸參數。在最后的KA中,K是檢測目標的類別個數;A是錨點數目。

Subnet對由Backbone得到的特征圖(Feature Map)進行操作,由兩部分組成:一部分負責對目標進行分類,另一部分負責對邊界框進行回歸。其中,分類子網連接FPN中每層的全卷積網絡(FCN),參數在金字塔層間的分類子網中共享,使用4個3×3的卷積層。每個卷積層后接一個ReLU(Rectified Linear Unit)層,之后是通道數為KA的3×3卷積層,最后使用Sigmoid函數進行激活。邊界框回歸子網結構與分類子網基本一致,差別在于最后的3×3卷積層的通道數為4A[15]。Subnet結構如圖8所示。

圖8 Subnet結構Figure 8. Subnet structure

2.4.2 盲道障礙物檢測損失函數

本文盲道障礙物檢測使用Focal Loss作為分類損失函數。Focal Loss通過降低簡單樣本和負樣本的權重可解決正負樣本不均衡問題。本文盲道障礙物檢測損失函數如下所示:

1)分類損失CLS_Loss計算式

(9)

其中,N表示檢測出來的物體個數;通過αt可以抑制正負樣本的數量失衡;通過γ可以控制簡單/難區分樣本數量失衡。在實驗中γ=2,αt=0.25,此時表現最好。

2)回歸損失REG_Loss計算式

(10)

其中,I為指示函數;tx、ty是真實目標中心在水平和垂直方向的平移量;px、py是預測的目標中心在水平和垂直方向的平移量;th、tw是真實檢測框的高度和寬度;ph、pw是預測檢測框的高度和寬度;SmoothL1損失函數計算式如下

(11)

3)總的檢測損失函數DET_Loss計算式

DET_Loss=CLS_Loss+REG_Loss

(12)

2.4.3 引入Soft-NMS

本文實驗的數據集中存在多個同類別距離過近的情況,使用傳統的非極大值抑制(NMS),這些目標置信度低于最大置信度而被抑制可能出現漏檢的情況,對盲人造成安全隱患。為了解決該問題,本文引入Soft-NMS[20]來提高檢測算法的精確度。對于一個與得分最大框的交并比(Intersection over Union,IoU)大于閾值的框,Soft-NMS算法不是將其刪除,而是用較低的分數取代原來較高的分數,取得更好的效果。計算式如下(本文采用高斯加權)

(13)

其中,Si表示保留的預測框結果;A表示得分最大的預測框;Bi表示與得分最大預測框相近的預測框;IoU表示交并比;σ表示標準差;e表示歐拉數。

2.5 改進分割損失函數

經過分割后的盲道區域存在較多凹凸不平的瑕疵區域,導致分割出來的效果并不平整,需要進一步加工??紤]到盲道區域為規整直線組成的區域,可以根據實際框的斜率作為參考,利用SmoothL1損失函數結合Dcie損失函數和原來的交叉熵損失函數形成新的分割損失函數,可以對規整的盲道邊緣做出更精確地分割。

1)修正損失函數Recitify_Loss計算式如下

(14)

其中,I為指示函數;j為分割框的邊緣采樣邊;kj表示采樣邊的斜率。對于一個采樣邊,均勻采樣4個點,并在原分割框邊緣中找到和它們對應的最近4個點d1、d2、d3、d4,k1、k2、k3、k4分別為d1、d2、d3、d4所在邊緣所對應的斜率。

2)交叉熵損失,計算式如下

(15)

3)Dice損失函數,計算式如下

(16)

4)總的分割損失函數Seg_Loss,計算式如下

Seg_Loss=Rectify_Loss+CE_Loss+Dice_Loss

(17)

應用改進的損失函數前后分割效果對比如圖9所示。

圖9 應用損失函數前后對比(a)原圖 (b)原Loss (c)改進后的LossFigure 9. Comparison before and after application of loss function(a)Original image (b)Original Loss (c)Improved Loss

3 實驗與結果分析

3.1 實驗數據集

3.1.1 數據來源

由于并沒有可以直接使用的公開數據集,本文通過相機拍攝和網絡爬取兩種方式一共獲取到1 943張盲道(包含盲道障礙物)圖片建立數據集,數據標注通過Labelme軟件進行標注,部分數據集如圖10所示。

(a)

由于本文網絡需要更多的數據集,但數據獲取有限,不能較好地滿足網絡訓練要求,并且數據獲取較為隨機,圖片中障礙物分布不均衡,所以本文針對數據集偏少、障礙物分布不均問題對數據集進行數據增強。

3.1.2 數據增強

針對盲道數據集偏少問題,本文通過翻轉、旋轉、移位、裁剪、融合、變形、縮放等幾何變換方法對原有盲道數據集進行數據擴充,部分效果如圖11所示。

圖11 盲道數據集部分擴充Figure 11. Partial expansion of the blind roads dataset

針對障礙物分布不均問題,本文通過對障礙物進行復制粘貼、旋轉、縮放以及MIXUP等數據增強方法融合到其他圖片中生成新的數據集的方法來解決,部分效果如圖12所示。

圖12 障礙物數據集部分擴充Figure 12. Partial expansion of obstacle dataset

最終通過數據增強一共得到3 198張512×512分辨率的數據集。

3.2 實驗環境

本文實驗采用Pytorch深度學習框架搭建網絡模型,CPU(Central Processing Unit)采用Intel(R) Core(TM) i7-10700k,GPU(Graphic Processing Unit)采用Nvidia GTX 3090,操作系統為Ubuntu16.04,開發軟件為Pycharm。訓練流程:初始學習率為 1×10-5,之后學習率逐漸預熱到1×10-3。在前5個epoch中不使用Rectify-Loss。使用Step方式在第24個epoch和32個epoch學習率分別設置為1×10-4和1×10-5??偣?6個epoch。

3.3 評價標準

3.3.1 分割指標

本文分割效果評價標準選擇交并比(MIoU)和類平局像素準確度(MPA),計算式如下:

(18)

(19)

其中,k+1表示類別總數;pii表示i類的像素預計屬于i類的個數,即真正;pij、pji分別表示假正和假負像素的個數。

3.3.2 目標檢測指標

本文目標檢測評價標準選擇平均精度(Average Precision,AP),并利用mAP,即所有目標類的AP平均值來衡量目標檢測部分的性能,計算式如下

(20)

(21)

(22)

(23)

其中,n表示檢測目標類別數;R為召回率(Recall),表示樣本中正樣本被預測正確;P為精確度(Precision),表示預測為正的樣本中數量真正的正樣本數量;TP則為被預測正確的正樣本數量;FN為把正樣本錯誤預測為負的數量;FP表示把負樣本錯誤預測為正的數量;TP+FN為全部正樣本數量;TP+FP為全部被分為正樣本的數量。

3.4 實驗結果與對比

3.4.1 盲道分割結果對比

為了驗證本文模型的有效性,盲道分割部分分別與FCN、Unet、DeepLab V3+和SegFormer在本文自建數據集中進行對比實驗,同其他網絡對比結果如表2所示。

表2 不同算法盲道分割結果對比Table 2. Comparison of blind roads segmentation results of different algorithms

由表2可知,改進后的算法盲道分割MIoU可以達到93.25%,MPA可以達到95.29%。相比于直接使用SegFormer,本文的MIoU、MPA分別提高了1.60%、1.66%,相較于其他算法也有一定提升。

3.4.2 盲道障礙物檢測結果對比

盲道障礙物檢測部分分別與Faster R-CNN、SSD、YOLOV3、RetinaNet(Backbone=ResNet-50)、RetinaNet(Backbone=Transformer)進行對比實驗,同其他網絡對比結果如表3所示。

表3 不同算法障礙物檢測結果對比Table 3. Comparison of obstacle detection results of different algorithms

由表3可知,本文的盲道障礙物檢測算法mAP@0.5可以達到91.58%,mAP@0.75可以達到74.82%,mAP可以達到75.85%。相比于直接使用RetinaNet(Backbone=ResNet50)網絡,本文網絡的mAP@0.5、mAP@0.75、mAP分別提升了4.75%、9.27%和8.87%,相較于其他算法也有一定提升。

由上述對比結果可知,在盲道分割和盲道障礙物的檢測方面,相較于對比算法,本文提出的多任務網絡模型在精確度上有一定提升。除此之外,在本文的實驗環境中,相較于分別使用SegFormer算法分割盲道、RetinaNet算法檢測盲道障礙物,本文的多任務模型預測速度可以提高73.72%,FPS達到18.52。實驗結果如圖13所示。

(a)

4 結束語

為了解決獨立的分割網路和檢測網絡不能同時滿足盲人在出行時對盲道分割和盲道障礙物檢測需求的問題,本文提出了以Transformer Encoder為網絡主干、SPP和FPN作為特征融合網絡、All-MLP Decoder作為盲道分割網絡、FCN Detection Head作為盲道障礙物檢測網絡的多任務識別算法。相較于兩個獨立的分割和檢測網絡,由于共享同一個特征提取器,減少了推理時間,顯著節省計算成本,并且加入特征融合網絡融合多尺度的特征,該算法擁有良好的預測效果。同時改進損失函數,引入修正損失函數(Rectify_Loss),可以使盲道分割更加平整、精確。為了提高障礙物檢測召回率,將檢測網絡的NMS替換為Soft-NMS。經過實驗驗證,相較于其他對比方法,本文方法在速度和精度方面都有較大的提升,為盲人出行安全提供了新的解決方案。

通過實驗分析,本文提出的方法在盲道附近區域顏色和紋理區分不明顯的情況下,分割效果會出現一些不足。未來的研究重點在于提高上述特殊情況下的盲道分割精確度,同時本文算法在速度上還需要進一步提升。

猜你喜歡
盲道障礙物損失
胖胖損失了多少元
高低翻越
SelTrac?CBTC系統中非通信障礙物的設計和處理
盲道
玉米抽穗前倒伏怎么辦?怎么減少損失?
盲道上的思考
一般自由碰撞的最大動能損失
損失
請為盲人留出一條道
土釘墻在近障礙物的地下車行通道工程中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合