陳朝陽 高翔森 孫銘悅 董 巖 李澤宇
(1、北京建筑大學 測繪與城市空間信息學院,北京102616 2、北京市建筑遺產精細重構與健康檢測重點實驗室,北京102616)
盲道是專門提供給盲人的道路,盲人可通過凹凸不平的盲道,來判斷前方道路情況。但是僅憑盲道的凹凸反饋,在磨損嚴重、盲道缺失的路段,很容易出現盲人迷路的情況容易造成安全隱患。盲人可通過盲杖、導盲犬和智能導盲設備解決這些問題,但是這些設備存在不宜攜帶、準確度低等問題。
為了能夠更好的解決這些問題,幫助盲人出行,提出了許多新穎的方法,比如通過超聲波傳感器、顏色傳感器等。李子康[1]等人設計了一種借助超聲波與紅外傳感器的障礙物檢測;趙曉軍[2]等人設計了一種基于GPS 的導盲杖,為盲人的出行保駕護航。但是,這些方法都有其局限性。
本文的實驗平臺為Ubuntu-18.04.4 操作系統,使用NVIDIA GeForce GTX 1660 Ti 顯卡,運行內存為16GB,實驗環境完全滿足Yolo V3 算法。在盲道數據集的制作上,由于沒有可供選擇的數據集,采用自制的方式,在互聯網采集了1000 張盲道圖片,還采集了1000 張汽車圖片,以及1000 張行人圖片,通過精靈標注助手標注。其中90%作為訓練集,10%作為測試集。

圖1 盲道

圖2 汽車

圖3 行人
在進行模型訓練時,可供選擇的框架有Tensorflow 框架、Darknet 框架等,本文選擇使用Darknet 框架對YOLO V3 算法進行訓練。Darknet 作為一個開源的輕量型深度學習框架,雖然沒有Tensorflow 強大,但是安裝容易,沒有任何依賴項,移植性高,方便操作。
在開始訓練前,需要對四個文件進行設置,分別是detector.c、my_data.data、my_yolov3.cfg 和myData.names。detector.c 文件是Darknet 框架中自帶的YOLO 配置文件,用于訓練模型和檢測,可以設置每迭代多少次后保存一次權重文件。my_data.data 記錄了訓練模型讀取所需數據的路徑和記錄標注目標的名稱的文件路徑,以及斷點續訓的backup 文件的保存路徑。my_yolov3.cfg文件中是有關卷積網絡的設計,以及輸入圖片的batch、學習率、最大迭代次數等設置,使用者可以通過結合自己訓練的數據模型在此文件中修改參數,使得后續訓練出的權重文件在進行目標檢測時有更好的效果。myData.names 文件中記錄了標注信息的名字,分別為blind sidewalk、people 和car。
本文基于Darknet 框架來訓練Yolo 網絡模型,首先將batchsize 設置為32,subdivision 設置為8,動量參數設置為0.9,動量衰減正則項設置為0.0005,學習率為0.001,max_batches(最大迭代次數)為50200。
在訓練完成后,利用記錄的loss 值的信息,繪制loss 變化曲線,圖4 記錄了模型訓練時loss 值的變化情況。

圖4 loss 曲線
圖4 中的縱坐標表示模型訓練時的損失值(loss),橫坐標表示模型進行的迭代次數。從圖中可以看到訓練開始時loss 值下降的比較迅速,當迭代到10000 次時,loss 值下降的速度就比較緩慢了;當到達17000 次左右,loss 值曲線趨于平緩并上下輕微波動;當達到20000 次后模型loss 值收斂于0.1,最終結束本次訓練。在模型訓練完成后,利用測試集進行了模型對盲道、行人、汽車三類目標識別的準確率以及召回率的測試。測試結果如圖5。

圖5 召回率測試
圖5 中的縱坐標為精確率(Precision),表示預測的正樣本的正確率;橫坐標為召回率(Recall),表示正樣本預測的正確率。平均準確率(AP)是從準確率與召回率這兩個角度去權衡檢測模型的準確性,是模型準確性的檢測的直接評價標準,也可以進行分析模型對單個類別的檢測效果。從圖中可以直接看出模型在測試集中對各目標檢測的準確度,盲道檢測準確性達到了87.46%,汽車檢測的準確性達到了77.47%,行人檢測的準確性達到了97.63%。通過對模型每一類目標識別的AP,又計算了mAP 即對每類的平均準確率再取平均值,圖6 為模型對目標檢測的準確率。

圖6 mAP 準確率
縱坐標表示該模型檢測的三類目標,橫坐標表示平均準確率,由圖中可以看出該模型對行人檢測的準確率最高達到了98%,其次就是對盲道檢測的準確率達到了87%,最后是對汽車檢測的準確率達到77%。
傳統的盲道識別方法存在成本高、速度慢、精度低等問題。本文提出使用YoloV3 算法,對盲道進行識別,制作了盲道數據集,使用Darknet 框架訓練了檢測模型,訓練的模型對盲道的識別準確率達到了87.46%,滿足對盲道的檢測需求,為視覺障礙者出行導航提供了新的思路。