梁曉妮 楚朋志 肖雄子彥 冷春濤
(上海交通大學(xué)學(xué)生創(chuàng)新中心,上海 200240)
根據(jù)世界衛(wèi)生組織統(tǒng)計(jì),全世界約有 2.17億人飽受視覺受損的困擾,其中約有3 600萬人完全失明[1],失去視覺的他們?cè)谌粘3鲂兄忻媾R諸多不便。傳統(tǒng)的出行輔助方式主要包括盲杖和導(dǎo)盲犬等,然而盲杖的探測(cè)距離有限,導(dǎo)盲犬的價(jià)格昂貴,不能完全滿足視障人士獨(dú)立安全出行的需求[2]。隨著近十幾年來計(jì)算機(jī)視覺和深度學(xué)習(xí)技術(shù)的發(fā)展,智能設(shè)備逐漸從實(shí)驗(yàn)室走向大眾生活,越來越多的學(xué)者和工程師嘗試?yán)糜?jì)算機(jī)視覺和可穿戴設(shè)備解決視障人士出行中遇到的問題。
本文提出一種基于計(jì)算機(jī)視覺的視障輔助系統(tǒng)設(shè)計(jì)方案,采用intel Realsense D455深度攝像頭進(jìn)行數(shù)據(jù)采集,應(yīng)用YoloV5s預(yù)訓(xùn)練模型進(jìn)行目標(biāo)物體檢測(cè),檢測(cè)出物體位置并根據(jù)深度攝像頭提供的深度信息判斷物體距離,實(shí)時(shí)語音播報(bào)前方障礙物的分布情況來輔助視障人群避障,合理規(guī)劃行進(jìn)路線。
本系統(tǒng)硬件主要包括視覺傳感器模塊、計(jì)算模塊、語音輸出模塊等硬件單元。其中視覺傳感器模塊采用intel Realsense D455深度攝像頭,該攝像頭采用紅外雙目立體攝影,攝像頭內(nèi)集成了實(shí)感視覺處理器IMU,可以在攝像頭移動(dòng)的情況下加大深度感知能力,并實(shí)時(shí)捕捉物體的色彩、計(jì)算物體深度和運(yùn)動(dòng)軌跡。攝像頭采用全局快門,有助于顏色和深度信息對(duì)齊,更準(zhǔn)確地判斷物體距離信息。攝像頭采集的圖像分辨率為1280×720@30 FPS,支持的距離檢測(cè)范圍為0.2 m~6 m。以上這些特點(diǎn)均有助于提升視障輔助系統(tǒng)精準(zhǔn)性,幫助視障人群在不斷變化的環(huán)境中輕松、安全地避障。
計(jì)算模塊采用的是Intel的AlxBoard開發(fā)板,該開發(fā)板是一款I(lǐng)A架構(gòu)的人工智能嵌入式開發(fā)板,板載一顆英特爾4核處理器,最高運(yùn)行頻率可達(dá)2.9 GHz,內(nèi)置核顯(iGPU),板載64 GB eMMC存儲(chǔ)及LPDDR4×2 933 MHz(4 GB/6 GB/8GB),內(nèi)置藍(lán)牙和Wi-Fi模組,支持USB 3.0、HDMI視頻輸出、3.5 mm音頻接口,1 000 Mbps以太網(wǎng)口。AlxBoard體積小巧功能強(qiáng)大,借助OpenVINO工具套件,CPU、iGPU都具備強(qiáng)勁的AI推理能力,可以實(shí)現(xiàn)實(shí)時(shí)目標(biāo)檢測(cè)功能。本實(shí)驗(yàn)系統(tǒng)采用AlxBoard搭載Ubuntu22.04系統(tǒng),安裝OpenVino 2023.1軟件包。
本文的視障輔助系統(tǒng)軟件主要是由Python語言基于OpenCV、OpenVino、pyttsx3、pyrealsense2庫實(shí)現(xiàn)。整體軟件方案流程圖如下:
深度視覺傳感模塊采集的圖像如圖4所示,左圖為RGB圖像,右圖為深度圖像熱力圖,使用全局快門盡量保證二者的一致性。
有了傳感器采集的原始數(shù)據(jù),接下來將通過深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)的方法對(duì)環(huán)境中的物體進(jìn)行檢測(cè),達(dá)到幫助視障人群避障的目的。
目標(biāo)檢測(cè)作為計(jì)算機(jī)視覺領(lǐng)域的核心問題,近十幾年來,受到廣大學(xué)者和研究人員的關(guān)注,產(chǎn)生了大量目標(biāo)檢測(cè)算法。主要分為兩類算法,一類是兩階段檢測(cè)器,以SPPNET、RCNN及其改進(jìn)版本為代表算法;一類是一階段檢測(cè)器,一階段檢測(cè)器無須尋找建議框直接確定物體的類別概率和位置坐標(biāo)值, 經(jīng)過單次檢測(cè)即可直接得到最終的檢測(cè)結(jié)果, 具有模型小、速度快的特點(diǎn),更適合在邊緣計(jì)算場(chǎng)景中使用。YOLOv5作為一階段檢測(cè)器的代表算法,做了很多工程化的改進(jìn),既能滿足實(shí)時(shí)性要求, 又能保持較高的檢測(cè)精度,故本文所設(shè)計(jì)的視障輔助系統(tǒng)選擇Yolov5目標(biāo)檢測(cè)算法進(jìn)行環(huán)境中障礙物檢測(cè)。YOLOv5 按照模型由大到小又可細(xì)分為 YOLOv5x、YOLOv5l、YOLOv5m、 YOLOv5s。由于 YOLOv5s 模型結(jié)構(gòu)的深度和寬度最小使得其網(wǎng)絡(luò)結(jié)構(gòu)的計(jì)算量以及參數(shù)量最小,本系統(tǒng)選擇YoloV5s作為目標(biāo)檢測(cè)模型。
YoloV5原生模型包含了80類別常見物體的分類與位置信息檢測(cè),能夠涵蓋視障人群生活中遇到的障礙物,故本文沒有針對(duì)特別場(chǎng)景進(jìn)行數(shù)據(jù)采集與模型遷移學(xué)習(xí)。后續(xù)可以針對(duì)特定的室內(nèi)、室外場(chǎng)景進(jìn)行圖像類別的擴(kuò)充與訓(xùn)練。
雖然YoloV5s經(jīng)過了各種算法優(yōu)化與模型優(yōu)化,但模型大小還是有14 MB,7.2 M個(gè)參數(shù),在AlxBoard上經(jīng)過測(cè)試,推理速度僅有9 FPS~10 FPS,這會(huì)使用戶感到卡頓,并且存在的推理延時(shí)會(huì)導(dǎo)致視障人群不能及時(shí)避障,造成人身傷害。所以本文采用基于OpenVino的異步推理方式進(jìn)行YoloV5s模型推理優(yōu)化,經(jīng)過優(yōu)化后的模型推理幀率可達(dá)30 FPS,滿足實(shí)時(shí)目標(biāo)檢測(cè)的場(chǎng)景需求。
OpenVino工具包是英特爾公司開發(fā)的高性能計(jì)算機(jī)視覺和深度學(xué)習(xí)視覺應(yīng)用工具包,具有模型優(yōu)化器、推理引擎和開放模型庫三大基礎(chǔ)功能[4]。
該工具包提供的模型優(yōu)化器(Model Optimizer)可以將通用深度學(xué)習(xí)框架(如:TensorFlow、Caffee、Pythorch、ONNX等)訓(xùn)練出來的模型優(yōu)化成統(tǒng)一的中間模型(.xml和.bin文件),在優(yōu)化的過程中,OpenVino底層架構(gòu)會(huì)用到模型剪枝、量化、權(quán)值共享等技術(shù)手段,在確保推理精度的情況下,提升模型在英特爾硬件上的推理速度。OpenVino提供了基于intel計(jì)算單元的統(tǒng)一推理引擎接口(Inference Engine Interface),只需要基于原框架推理代碼做非常小的修改,便可以在英特爾的多種硬件設(shè)備上運(yùn)行推理,簡(jiǎn)單快速。
通過實(shí)驗(yàn),在AlxBoard上安裝OpenVino 2023.1版本工具包后,經(jīng)過模型轉(zhuǎn)換后進(jìn)行推理的幀率可達(dá)18 FPS~19 FPS,推理速度顯著提升,但尚未達(dá)到實(shí)時(shí)檢測(cè)的目標(biāo)。圖中檢測(cè)出兩個(gè)目標(biāo)物體:人和花瓶,即時(shí)推理速度為18.12 FPS。
為達(dá)到實(shí)時(shí)檢測(cè)的目標(biāo),進(jìn)一步采用OpenVino異步推理方法進(jìn)行優(yōu)化。異步推理方法是指當(dāng)CPU發(fā)送第一幀推理請(qǐng)求給AI硬件之后,不用等待推理完成,CPU可以繼續(xù)準(zhǔn)備下一幀。當(dāng)推理請(qǐng)求沒有阻塞時(shí),我們不斷地準(zhǔn)備幀進(jìn)行輸入,且并行實(shí)施推理操作。這樣可以充分利用系統(tǒng)異構(gòu)計(jì)算單元,帶來吞吐量的巨大提升。
在AlxBoard上通過引入OpenVino 異步推理機(jī)制,合理使用create_infer_request()與start_async()、wait()等接口,可將推理幀率提升至30 FPS~35 FPS,達(dá)到實(shí)時(shí)處理視頻流的效果,滿足視障輔助系統(tǒng)實(shí)時(shí)處理需求。圖中檢測(cè)出三個(gè)目標(biāo)物體:人、花瓶和杯子,即時(shí)推理結(jié)果達(dá)到33.21 FPS。
通過YoloV5s目標(biāo)檢測(cè)算法,在經(jīng)過OpenVino提速之后,可以在RGB圖像上實(shí)時(shí)定位出場(chǎng)景中的障礙物,包括障礙物種類以及在平面圖像中的位置。由二維位置信息結(jié)合深度圖的深度信息,可以計(jì)算出障礙物距攝像頭的平均距離。具體計(jì)算流程如下通過這種隨機(jī)采樣、計(jì)算平均的方法可以在保證計(jì)算速度的同時(shí)兼顧整體距離的準(zhǔn)確性。圖11中檢測(cè)出三個(gè)目標(biāo)物體:人、杯子和花瓶,并且計(jì)算出人距攝像頭的距離為0.82 m,杯子距攝像頭的距離為0.58 m,花瓶距攝像頭的距離為0.64 m,這與真實(shí)場(chǎng)景相差無幾。圖中藍(lán)色點(diǎn)為隨機(jī)選取randnum=24個(gè)中心點(diǎn)附近點(diǎn)計(jì)算出的平均距離作為最終距離測(cè)算。
圖1 系統(tǒng)使用的視覺傳感模塊—intel D455深度攝像頭
圖2 系統(tǒng)使用的AI計(jì)算單元—AlxBoard
圖3 整體方案流程圖
圖4 RealSense采集的彩色圖與深度圖像
圖5 YoloV5s算法原理圖[3]
圖6 OpenVino工作原理圖
圖7 經(jīng)過模型優(yōu)化后的目標(biāo)檢測(cè)結(jié)果圖
圖8 異步推理與同步推理對(duì)比圖
圖9 采用異步推理后的目標(biāo)檢測(cè)結(jié)果圖
圖10 目標(biāo)物體距離計(jì)算流程圖
圖11 目標(biāo)物體距離檢測(cè)效果圖
為了更好地輔助視障人士對(duì)周圍環(huán)境的感知,在目標(biāo)檢測(cè)與距離定位之后,本系統(tǒng)增加語音播報(bào)模塊,通過聲音將感知到的物體類別、方位和距離信息播報(bào)給視障人士,幫助他們及時(shí)避障。語音播報(bào)的流程圖如圖12所示,當(dāng)YoloV5網(wǎng)絡(luò)返回的目標(biāo)物體有變化(物體種類或物體位置)時(shí),便會(huì)觸發(fā)語音播報(bào),播報(bào)當(dāng)前所檢測(cè)障礙物的類別、方位和距離。其中方位信息根據(jù)中心點(diǎn)在圖像中的位置確定:圖像左側(cè)1/3處判斷為左前方,中間1/3處判斷為前方,右側(cè)1/3處判斷為右前方。
圖12 語音播報(bào)模塊流程圖
本文闡述了一種基于OpenVino與深度攝像頭的實(shí)時(shí)視障輔助系統(tǒng)設(shè)計(jì)方案。該方案過程簡(jiǎn)單、易于實(shí)現(xiàn),在AlxBoard邊緣端經(jīng)過OpenVino加速處理后可達(dá)到實(shí)時(shí)處理性能。后續(xù)為了更好地服務(wù)于視障人群,可以基于YoloV5s網(wǎng)絡(luò)進(jìn)行更多室內(nèi)、室外場(chǎng)景的數(shù)據(jù)采集和遷移學(xué)習(xí),提高網(wǎng)絡(luò)識(shí)別的準(zhǔn)確率。本文提出的相關(guān)方法不僅可以用于視障出行輔助領(lǐng)域,還可以在機(jī)器人、自動(dòng)駕駛等領(lǐng)域發(fā)揮作用。