吳曉烽, 吳麗君, 吳振輝, 陳志聰, 林培杰, 文吉成
(1.福州大學物理與信息工程學院, 微納器件與太陽能電池研究所, 福建 福州 350116;2.國家電網福州供電公司, 福建 福州 350003)
目前, 我國約有7 500萬視障人群, 他們的生活和出行都因其視力的障礙而受到極大困擾.盲杖等傳統輔盲工具只能通過物體接觸來檢測障礙物, 對空間中較高物體(如樹枝等)難以檢測.近年來, 電子行走輔助[1](electronic travel aids, ETA)系統相繼被提出, 為視障人士帶來了極大便利, 其中障礙物識別與測距是ETA系統中的關鍵技術.文[2]對近年的ETA系統進行了實用性綜合對比, 其中評分最高的Ecole Polytechnique Fédérale de Lausanne(EPFL)系統[3], 采用成對聲吶進行測距, 有著測距精確度高、 易穿戴等特點.評分其次的tactile vision system(TVS)[4]通過成對攝像頭生成視差圖來檢測障礙物的遠近, 其便于穿戴, 檢測范圍廣.現有ETA系統, 雖能較為精確地檢測障礙物離使用者的距離, 卻無法識別障礙物.在實際使用中, 與高精度地對障礙物測距相比, 視障人士更迫切地需要對周圍多障礙物的識別及相應位置的估計.近年提出的wearable mobility aid(WMA)[5]系統是一種采用RGBD攝像頭測距, 并利用LeNet[6]網絡實現障礙物識別, 最后整合信息反饋給盲人的異步實現方式.這種異步識別及測距方式為目前大多能夠識別障礙物的ETA系統采用, 但受限于所采用的測距方式, 只能對離使用者最近的障礙物識別測距, 而對實際應用中多障礙物同時出現的場景, 就會出現難以匹配等問題, 因而難以適用.
隨著深度學習技術的發展, 目標檢測領域出現了RCNN(regions with convolutional neural network)[7]、 Faster-RCNN[8]、 SSD(single shot multibox detector)[9]、 YOLO(you only look once)[10]等算法, 其能夠以較高精度、 魯棒地同時識別多類物體.其中, SSD是一個基于卷積神經網絡目標檢測識別模型, 相比于Faster R-CNN等目標檢測算法, SSD去除了產生候選區域(proposals generation)及像素或特征降采樣(pixel or feature resampling)等階段, 因而可以實時地檢測識別目標.且SSD通過不同層次的特征圖(feature map)進行多段識別, 從而能夠達到較高的目標識別精度.因此, 本研究針對現有ETA系統的不足, 探索基于深度學習算法的多目標快速識別及同步測距方法, 以期實現盲人視覺輔助.提出將各類類別標定框(ground truth box)的高度與距離進行回歸擬合從而訓練出測距模型, 并結合目標檢測算法SSD所識別障礙物類別及檢測框(bounding box)高度, 最終實現對多目標快速識別并同步測距.
提出的目標檢測識別及測距方法的原理如圖1所示.在人工采集的目標圖像和實際距離數據集的基礎上, 整個目標識別及測距方法框架主要分為兩個部分: 其一, 在多段距離下, 人工采集目標圖像并提取每一類標注框(ground truth box)的高度, 根據物體近大遠小的原理, 將所提取的物體高度與實際距離值回歸擬合, 以訓練獲得測距模型; 其二, 首先利用基于VOC2007數據集訓練的SSD模型檢測識別物體, 并提取出物體檢測框(bounding box)的高度, 輸入測距模型從而獲得測距結果.將從不同層級特征圖檢測及目標函數模型兩方面來介紹SSD的原理.

圖1 測距方法整體流程框圖Fig.1 Flow diagram of distance measuring method
SSD利用回歸來識別物體, 如圖2所示.對于每個特征圖, 采用3 px×3 px卷積核(filter)生成若干默認檢測框(default bounding boxes)以及每個檢測框相對標注框的偏移量與置信度, 最后共同識別物體.具體地, 如圖2(b)中, 每個特征圖塊(feature map cell)生成3個默認檢測框.在訓練階段時, 將已標注好的圖片中的標注框與特征圖中的默認檢測框(default bounding boxes)進行匹配.對于圖2(a)中的兩個標注框, 按照尺寸分別與8 cell×8 cell及4 cell×4 cell特征圖中藍色虛線框與紅色虛線框(貓與狗)吻合, 因此將其作為模型訓練的正樣本, 而其他虛線框為負樣本, 采用3 px×3 px的卷積核(filter)生成相對于默認框的4個偏移量: 高度(h)、 寬度(w)以及中心位置(cx,cy)和21個類別置信度(c1,c2, …,cp,p=21)(以VOC2007數據為例, 一共21類).

圖2 不同比例的默認檢測框[9]Fig.2 Different ratio of default boxes
因為較低層特征圖具有較良好的局部特性, 而高層的特征圖具有較好的全局特性, 而好的全局特效能獲取更平滑的結果, 所以SSD在分類網絡(VGG)后額外添加了逐層遞減的卷積層進行預測, 如圖3所示, 由逐層遞減的卷積層來實現多尺度預測以及共享權重.

圖3 SSD網絡模型[9]Fig.3 Network model of SSD[9]
通過在不同層的特征圖上應用默認檢測框機制, 可使SSD有效地離散化輸出框形狀從而大幅度減少檢測框數量, 加快檢測速度.而通過應用從多個特征圖進行預測的方法, 能夠對輸入圖像進行多尺度檢測.
目標函數用來衡量真實值和預測值(默認檢測框以及對應4個預測值和21類置信度)的差距, 通過最小化目標函數來獲取最佳神經網絡權重.如上節所述, SSD目標函數[9]為定位損失(loc)與置信度損失(conf)的加權和:
(1)
其中:Lconf為定位損失, 其衡量檢測框定位與標注框的差距;Lloc(x,l,g)為置信度損失, 表示分類的錯誤率;α為權重;N代表匹配的默認檢測框, 如果N=0, 則設L=0.若設α>1, 則更偏重定位精度, 若設α<1, 則更注重識別精度, 可按需求設置.本實驗視定位損失和識別精度同等重要, 故設α為1.定位損失smoothL1Loss計算如下:
(2)

(3)

(4)
置信度損失計算如下:
(5)
針對對盲人出行影響較大的三類目標(汽車、 自行車、 摩托車)進行圖像采集, 并將其分為三份: 訓練集、 測試集和側面測試集.其中側面測試集用來驗證測距模型對不同角度拍攝圖像的性能.此處, 采用普通手機拍攝(Iphone 6, 3 264 px×2 448 px), 因盲人對過遠物體檢測需求不大, 而過近則攝像頭無法拍全整個物體.因此, 本實驗從4.0 m開始, 以0.5 m的間隔對三類物體的正面進行同時拍攝, 并記錄相應的物距, 共拍攝38組(4.0~22.5 m)作為訓練數據; 然后, 隨機選取不同距離, 以及側面角度對三類物體進行拍攝22組, 作為測試數據; 部分訓練圖片如圖4所示, 其距離分別為6.5、 12.0、 22.0 m.

圖4 訓練數據示例Fig.4 Examples of training data
為選取合適的特征實現測距, 首先對正面采集及側面采集的圖片數據進行一定的分析.分別對每一類的正面及側面圖像進行人工標注, 并記錄標注框的寬與高(單位為像素), 如圖5所示, 其距離都為6 m.
從圖中可以看出, 在相同距離時候, 不同視角會使得目標寬度影響較為嚴重.以汽車為例, 如圖5(a)與圖5(b)所示, 汽車變化影響較為巨大(1 331 px變化為3 074 px), 而高度則變化范圍相對較小(1 038 px變化為1 262 px), 所導致的誤差在視覺可接受范圍之類.其他類別如自行車及摩托車的情況亦是如此.因此, 本實驗采取較為不受視角影響的高度進行測距, 以提高測距算法的魯棒性.

圖5 正面與側面角度圖片的標注示例(拍攝距離: 6 m)Fig.5 Example of side angle image with ground truth boxes (shoot distance: 6 m)
將訓練集中各類別的標定框的高度與距離進行回歸擬合, 從而實現多目標同時測距, 采用的回歸模型為:
y=f(x,β)+ε
(6)
其中:y為距離;x為標定框高度,x=(x1,x2, …,xm)T;m=1;β=(β0,β1, …,βp)T是未知數參數向量;ε為隨機誤差.現對模型做n次觀測, 得到觀測數據為(xi1,xi2, …,xim,yi)T, 即:
yi=f(x(i),β)+εi
x(i)=(xi1,xi2, …,xim)T(i=1, 2, …,n)
(7)

(8)

(9)
步驟1給出β的初值β0;

步驟3計算β*:β*=β0+(xTX)-1xTY*;
步驟4迭代: 以β*代替β0重復步驟2, 3, 直至|β*-β0|或|Q(β*)-Q(β0)|結果達到預先精度為止.
提取2.1節中已標記好的訓練集中標注框的高度, 記為xtrain/px, 距離記為ytrain/m, 顯著值α=0.05, 訓練擬合出測距模型.以下以汽車為例, 旨在利用訓練集擬合出回歸方程, 并用測試集數據(xtext,ytext)對模型進行驗證.訓練集與測試集部分數據列于表1中.

表1 標注框高度與實測距離數據(汽車)
受圖像成像原理的影響, 圖像拍攝距離(x)與物體高度(y)之間的關系并非完全線性的.畫出x,y的散點圖, 如圖6所示.根據其趨勢, 采用指數模型對其進行回歸擬合:y=β0eβ1x.
考慮到高度與距離量綱區別較大, 為了消除其影響, 首先對數據進行預處理, 采用min-max歸一化到0~1范圍.
(10)
其中:xmax、xmin和ymax、ymin分別為樣本中最大值與最小值.

y=0.969 5e-3.666x
(11)
做出回歸曲線, 如圖7所示, 回歸結果如表2所示.

圖6 訓練集與測試集散點圖Fig.6 Scatter plot of training data and testing data

圖7 回歸方程擬合回帶圖Fig.7 Diagram of fitting curve of regression equation

回歸方程指數類型y=0.9695e-3.666x統計量n=38, 自變量數m=1, SE=2.6089, SR=31.6045, ST=34.2134, 統計量F=437.600769??, F0.05=4.121方程檢驗結論因為統計量F>F0.05, 所以認為方程線性相關性顯著

由表3可知, 訓練好的模型能夠較好地擬合測試集, 并且對于側邊角度也能夠較好地反應高度和距離的關系, 距離測量結果基本符合盲人視覺輔助需求.

圖8 回歸方程測試數據擬合回帶圖Fig.8 Diagram of fitting curve of regression equation for testing data

回歸方程指數類型 y=0.9695e-3.666x測試集統計量n=20, 自變量數m=1, SE=2.6713, SR=17.2539, ST=19.9252, 統計量F1=116.261820??, F0.05=4.41側邊測試集統計量n=20, 自變量數m=1, SE=3.5318, SR=22.2950, ST=25.8269統計量F2=113.627612??, F0.05=4.41方程檢驗結論因為統計量F1>F0.05, F2>F0.05. 所以認為方程線性相關性顯著
針對盲人現實使用需求場景, 本實驗通過對不同剖面的物體、 復雜背景及多目標情況下的識別檢出效果及距離估算精度進行驗證, 并對識別測量速率進行驗證.實驗平臺環境配置為: CPU為i7-6700k、 RAM為16 GB、 顯卡為GTX1070, 顯存為8 GB, 運行環境為Ubuntu16.04, PyCharm2016.3.3集成開發環境, 搭載Keras、 TensorFlow框架.
測距結果如圖9所示.其中括號中數值為距離估計值(汽車估計值, 自行車/電動車估計值), 括號前為真實值.

圖9 測距結果(單位: m)Fig.9 Result of measured distance(unit: m)
在圖9不同距離的測試環境中, 汽車相對于其他兩類有著較好的距離測量精確度, 但總體而言, 測量的距離精度基本可以滿足盲人的視覺輔助需求, 且在距離較遠時由于目標較小, 自行車可能存在漏檢情況, 如圖9(b)當距離為7.5 m時自行車被漏檢, 圖9(c)中當距離為9.3 m時摩托車及自行車都被漏檢.出現上述情況有如下3種原因: 1) 尺度變化導致物體特征減弱.為了保證實時性, SSD輸入圖片尺寸為300 px × 300 px, 則原圖(3 264 px×2 448 px)經過尺寸變化(雙線性插值法[11])導致物體尺寸變小, 從而使得較小的目標(自行車、 摩托車)的特征減弱, 產生精度降低甚至漏檢情況.2) 背景干擾.圖9(a)中自行車把手與背景相似, 在物體尺寸較小時, 只能檢測出特征較為明顯的輪子.因此出現“半截”的檢測框, 從而導致測距誤差較大.3) 人工標注框與SSD檢測框具有一定的區別.如圖5(c)所示, 在人工標注摩托車標注框時, 為精確定義車的大小, 摩托車上邊框被標注為右側倒視鏡的一半, 而圖9(b)中SSD檢測框明顯未包含鏡子, 從而導致精度下降, 這將在下一步的工作中進行改進.通常情況下汽車、 摩托車和自行車的行駛速度依次遞減, 因此在可檢出距離上有一定的遞減是符合實際應用需求的.
將基于SSD及回歸擬合的物體識別測距模型應用于側面測試集, 測試結果如圖10所示.

圖10 側面測距結果(實際距離為4 m)Fig.10 Result of measured distance(actual distance is 4 m)
從圖10可以看出, 側面測量結果與正面測量結果基本一致, 攝像頭從不同角度拍攝對物體檢測框高度影響較小, 因而本算法對不同角度有較好的適應能力.對自行車進行測距時, 由于側面的物體特征更加明顯, 距離測量也較為精確, 但在檢測摩托車時出現檢測框未包括整個摩托車從而造成測距誤差明顯的情況, 這有待進一步研究改進.通過上述分析可得出, 對于較大的物體, 由于特征較為明顯, 測距結果較好; 而對于較小物體, 或者物體未被檢測框正確框注, 會導致精度差距較大, 甚至存在漏檢情況.
本方法有較好的遷移性, 且在本實驗平臺環境下能夠進行實時測距.利用普通智能手機錄制的視頻(Iphone6, 分辨率為3 264 px × 2 448 px)進行識別測距, 如圖11所示.圖11(a)為將本方法應用于行人檢測與測距, 其能夠保持大約25 幀 ·s-1的實時多類物體識別測距, 并且測距精度符合盲人實際使用需求.圖11(b)為在復雜馬路識別與測距, 從圖中可以看出, 大多數行人以及車輛都被檢出, 雖有一些物體被遮擋而未被檢出, 但盲人所最關心的, 最接近盲人的幾個目標都被檢出, 因此本方法是符合實際使用需求的.

圖11 復雜環境測距結果Fig.11 Result of complex environment ranging
最后以ETA系統中的障礙物檢測模塊與本方法進行比較, 如表4所示.本方法相對于上述三種方法, 主要優勢在于: 其一, 能夠識別障礙物.“前方有車”和“前方有人”更加值得警惕, 能夠讓盲人知道自己周邊環境, 在一定程度上增加了安全性, 并且相比于WMA識別數量更多.其二, 多個物體同時測距.上述幾個方法僅僅能夠對最靠近盲人的障礙物進行測距, 但盲人往往眼前景物是不斷變化的, 多目標測距可以一定程度上對即將靠近盲人的物體做到實時監測作用.其三, 將識別與測距同步進行, 本方法將上述幾個系統原本獨立的兩個模塊合并在一起, 從而能夠實現多物體同時測距, 并避免了可能造成的不同步問題, 并使多類物體同時測距成為可能.受限于深度學習算法的復雜度, 本算法所需功耗較高, 但鑒于深度學習算法處在飛速發展中, 關于深度學習算法的優化及其權重二值化的研究獲得了越來越多的關注[12], 因此我們相信本方法具有較大發展潛力與實用性.

表4 與經典ETA系統的性能比較
針對盲人視覺輔助需求提出一種基于深度學習的多運動目標快速識別并同時測距方法.該方法使用攝像頭, 利用SSD目標檢測算法識別障礙物, 并利用SSD所生成的檢測框高度輸入測距模型, 從而能夠對多目標快速識別并同步測距.本方法相比于其他ETA系統的障礙物檢測模塊而言, 能夠識別多類物體且識別類別數量可供拓展, 并能夠將測距模塊和障礙物識別模塊同步執行, 從而實現對多個物體實時地同步識別測距.以車輛為例, 通過采集數據、 人工標注、 擬合等步驟, 并以實驗證明: 本方法對于本實驗的車輛類別測距達到盲人現實可供使用的精度, 且未出現識別錯誤情況, 并且檢測速度在本實驗條件下(GTX1070)達到20~25 幀·s-1, 滿足現實使用需求.雖在其他較小物體上檢測效果不理想, 但其主要誤差是由目標檢測算法SSD導致的, 隨著目標檢測算法的發展[12], 本方法將越來越適用.