王巖,田會峰
(江蘇科技大學電氣與信息工程學院,江蘇張家港 215600)
設(shè)計的系統(tǒng)采用Raspberry Pi(樹莓派)作為主控制器,其小巧經(jīng)濟,廣泛應用于嵌入式與物聯(lián)網(wǎng)領(lǐng)域。利用Raspberry Pi 自帶的CSI 接口(相機串行接口)驅(qū)動Pi Camera(樹莓派攝像頭)捕捉實時畫面,通過Frp(快速反向代理)內(nèi)網(wǎng)穿透上傳至華為云服務器ECS,兩個USB 接口攝像頭則分別進行照片的拍攝與物體的檢測識別,照片將自動存儲于云存儲空間。語音交互綜合利用了百度智能云語音技術(shù)以及圖靈機器人。其余各功能模塊,如HC-SR04 模塊、MPU6050 模塊、GPS 模塊,經(jīng)配置分別完成距離測量、狀態(tài)檢測、位置讀取。整個系統(tǒng)使用Button Switch 按鍵模塊作為控制開關(guān)。
系統(tǒng)以Raspberry Pi 作為控制核心,硬件電路由ReSpeaker2-Mics Pi HAT 語音模塊、HC-SR04 模塊、MPU6050 模塊、GPS 定位模塊、Button Switch 按鍵模塊、USB 攝像頭、Pi Camera 以及擴音器組成,智能手杖總體硬件框圖如圖1 所示。
圖1 總體硬件框圖
第一,系統(tǒng)能夠自動測量前方障礙物的距離,HC-SR04 模塊工作原理如圖2 所示。距離計算公式為:
圖2 HC-SR04模塊工作原理
式中,L為模塊與障礙物的距離,t2為返回信號接收時間,t1為發(fā)出信號時間[1]。一旦距離超過安全閾值,系統(tǒng)及時輸出語音警報,以便使用者迅速作出反應[2];
第二,系統(tǒng)能夠傳輸攝像頭捕捉到的視頻流,并且將實時畫面共享至云服務器中,通過設(shè)置一定權(quán)限保證指定的第三方用戶能夠訪問此監(jiān)視畫面;
第三,系統(tǒng)能夠在用戶與前方障礙物保持較大距離時滿足語音交互需求,用戶通過按動按鍵進行錄音后即可享受天氣預報、自由對話等多種服務;
第四,手杖能夠充當相機,可供使用者隨時隨地進行拍攝,只需按下按鍵,系統(tǒng)便自動將照片上傳至云存儲空間中;
第五,系統(tǒng)能夠?qū)z像頭捕捉畫面中的各物體進行檢測與識別,并給出各自的識別結(jié)果及準確率;
第六,系統(tǒng)可對使用者的人體姿態(tài)進行檢測,如若發(fā)現(xiàn)異常,可及時發(fā)出求救信息并保持發(fā)送狀態(tài)直至危險解除;
第七,系統(tǒng)定時采集GPS 模塊返回的經(jīng)緯度數(shù)據(jù),將其轉(zhuǎn)換為地理位置發(fā)送至指定接收方。
涂裝是現(xiàn)代產(chǎn)品制造工藝中的重要環(huán)節(jié)之一,它包括涂裝前對被涂物表面的處理、涂布工藝和干燥三個基本工序以及設(shè)計合理的涂層系統(tǒng)。傳統(tǒng)涂裝工藝中,在噴漆、烘干工段會產(chǎn)生大量的有機溶劑氣體,其主要成分是甲苯、二甲苯、苯等,這些有害物質(zhì)外排不僅影響大氣環(huán)境,而且有火災和爆炸的環(huán)境風險。涂裝工藝產(chǎn)生的環(huán)境污染與涂料選擇、作業(yè)環(huán)境條件、質(zhì)量及工藝管理各方面息息相關(guān)[1]。
由于系統(tǒng)所需實現(xiàn)的功能包括語音交互、按鍵拍照,因而,為滿足控制條件的需求,這里選用了兩個Button Switch 按鍵模塊。在距離測量方面,選用HC-SR04 超聲波測距模塊[3]。而對于狀態(tài)檢測,則選用MPU6050 陀螺儀模塊,通過設(shè)置加速度閾值以保證跌倒即時求救。由于該系統(tǒng)功能模塊較多,為避免I/O 口接線混亂,這里選用TTL 轉(zhuǎn)USB 模塊將GPS 模塊連接到Raspberry Pi 的USB 接口上。
除上述模塊選擇外,由于Raspberry Pi 沒有自帶的語音輸入通道,因而為滿足智能語音交互功能的需求,選用ReSpeaker2-Mics Pi HAT 語音模塊作為錄音載體。此外,為便于警報語音能夠有效反饋至用戶處[4],這里選用了音量可調(diào)節(jié)的擴音器。系統(tǒng)I/O接線圖如圖3 所示。
圖3 I/O接線圖
系統(tǒng)開啟后,Pi Camera 以及兩個USB 攝像頭獨立工作,分別完成物體檢測與識別及實時遠程監(jiān)控任務,其余各功能模塊相互協(xié)調(diào),在具體的控制策略下共同實現(xiàn)按鍵控制、智能語音交互、拍照存云、摔倒自動求救以及地址定時上報等。系統(tǒng)整體控制流程圖如圖4 所示。
圖4 系統(tǒng)整體控制流程圖
實時遠程監(jiān)控涉及到的過程有Mjpg-streamer(視頻流編碼格式傳送程序)與Frp 反向代理軟件的安裝、ini 文件的編輯以及華為云服務器ECS 安全組的配置。安裝編譯Mjpg-streamer 的目的是在局域網(wǎng)內(nèi)傳輸視頻流,實行小范圍內(nèi)的畫面共享。而其余步驟的操作是為了在執(zhí)行Frp 內(nèi)網(wǎng)穿透指令后,Raspberry Pi 的IP 地址能夠順利搭載到公網(wǎng)IP 上,進而,在任一可供上網(wǎng)的設(shè)備中輸入相應網(wǎng)址便可隨時隨地查看遠程畫面。
語音交互關(guān)系到語音文件及文本文件的互相轉(zhuǎn)換、機器人回復等過程[5]。前者主要依賴百度智能云語音技術(shù),調(diào)用相應API 即可實現(xiàn),后者則是依賴圖靈機器人對轉(zhuǎn)換后的文本作出答復,將其轉(zhuǎn)為mp3文件后便可通過mplayer 語音輸出至用戶處。
這里的拍照本質(zhì)上是攝像頭畫面的截取,依靠的是Raspberry Pi 小程序fswebcam,以Button Switch模塊作為拍攝鍵。在此基礎(chǔ)上,調(diào)用七牛云存儲空間的API 接口即可實現(xiàn)照片自動存云。
定位功能依賴GPS 模塊以及minicom 串口通信工具,運行AT 指令并進行篩選,可從GPS 返回的大量數(shù)據(jù)中得到經(jīng)緯度信息。調(diào)用百度開放平臺的AK 密鑰將此經(jīng)緯度轉(zhuǎn)換成地理位置,開啟SMTP 協(xié)議后即可定時將其發(fā)送至指定郵箱。
該系統(tǒng)選用的是COCO 數(shù)據(jù)集,COCO 數(shù)據(jù)集是一個大型的、豐富的物體檢測數(shù)據(jù)集,其擁有80個不同的物體類別,包含超過33萬張圖像。由于COCO 數(shù)據(jù)集是以json 格式存儲的,經(jīng)過必要的轉(zhuǎn)換方可得到訓練模型所需的各種圖片以及txt 文件。利用labelimg軟件對選用的圖片進行標簽標注后可得到xml文件。
通過YoloV3 算法對上述文件進行訓練,經(jīng)過一段時間可得到損失率最低的h5 權(quán)重模型,將此模型轉(zhuǎn)換成TensorFlow的pb模型即可在OpenCV中調(diào)用。
該系統(tǒng)的物體檢測應用OpenCV 對圖像進行采集與預處理。圖像處理包括將RGB 圖像轉(zhuǎn)換為灰度圖像,然后將其二值化。處理步驟涉及將對象與背景和其他對象區(qū)分開,在此步驟中,使用了非常通用的圖像處理方法,即邊界檢測(Canny 算法)、閾值化以與背景隔離、高斯模糊以柔化細節(jié)、從彩色到黑白和二值圖像的轉(zhuǎn)換以及輪廓檢測。
其中,閾值化采用Otsu算法,使用一個閾值將像素劃分為兩類,其定義為每個群集的方差的加權(quán)和[6-7],如式(2):
式中,nB與no分別是閾值以下與之上的像素數(shù),而δB與δo分別是它們的方差,T是閾值。這樣,對既有物體又有背景的圖像塊進行閾值化、二值化、填充孔洞等處理便可將每個物體很好地分割出來。
物體的識別模型采用的算法是卷積-神經(jīng)網(wǎng)絡[8-9],其依賴的是TensorFlow Lite 學習框架[10-11]。卷積神經(jīng)網(wǎng)絡的神經(jīng)元模型如圖5 所示。
其數(shù)學表達式為:
式中,x為輸入;w為權(quán)重;b為偏置值;f為激活函數(shù)。
卷積神經(jīng)網(wǎng)絡主要包括輸入層、卷積層、池化層、全連接層、輸出層[12]。卷積和池化過程是為了更好地提取圖像特征。輸入層即輸入的原始圖像;卷積層一般使用一個正方形卷積核遍歷圖像上的每一個像素點,圖片與卷積核重合區(qū)域中的每一個像素值乘上卷積核內(nèi)相對應點的權(quán)重,求和后再加上偏置即可得到輸出圖片中的一個像素值,如圖6 所示。
圖6 卷積過程
池化層的目的是進一步降低維度,通過聚合卷積層收集的值進行降維。它們遵循與卷積層相同的滑動窗口思想,但不是計算所有值,而是選擇其輸入的最大值或平均值,這分別稱為最大池化和平均池化。池化處理過程如圖7 所示。
圖7 池化處理過程
池化層得到的結(jié)果需要進行壓縮后送入全連接網(wǎng)絡,再使用神經(jīng)元模型公式進行計算,即每個輸入值乘以不同的權(quán)重并加入偏置,激活后經(jīng)過多次神經(jīng)網(wǎng)絡連接,在訓練過程中舍棄一定的神經(jīng)元節(jié)點,通過Softmax 函數(shù)回歸,即可得到輸出層。
系統(tǒng)啟動后,使能攝像頭,在Linux 命令行中運行相應指令以啟用Mjpg-streamer[13]。確定Mjpgstreamer 有效運行的情況下,分別在ECS 云服務器終端以及系統(tǒng)命令行下輸入Frp 內(nèi)網(wǎng)穿透命令,提示連接成功后實時視頻流即可源源不斷地傳送至公網(wǎng)服務器[14]。遠程監(jiān)控實現(xiàn)流程圖如圖8 所示。
圖8 遠程監(jiān)控實現(xiàn)流程圖
順利執(zhí)行以上各流程后,在任一可上網(wǎng)的設(shè)備中輸入網(wǎng)址http://公網(wǎng)IP 地址:端口號port/javascript_simple.html,便可進行實時遠程監(jiān)控[15]。經(jīng)觀察,此頁面中的畫面延遲保持在1 s 以內(nèi),延遲時間隨云服務器ECS 的不同而發(fā)生微小變化。
系統(tǒng)開啟后,首先確保tflite1-env 虛擬環(huán)境處于活動狀態(tài),從/home/pi/tflite1 目錄中發(fā)出python3 TFLite_detection_webcam.py--modeldir=Sample_TFL ite_model 命令來指定識別模型并運行物體檢測識別代碼[16]。通過觀察,物體檢測識別畫面的傳輸速率為1 fps 左右,受制于Raspberry Pi 本身的性能約束,此幀數(shù)上下波動但變化幅值不大,一般隨后臺程序數(shù)量的減少而有所提升,總體而言,并不影響觀感。
該系統(tǒng)在實際測試運行時,各功能模塊之間相互協(xié)調(diào),在具體的控制策略下保持有效運作。系統(tǒng)能夠及時反饋距離預警,提供自由對話、天氣預報等功能,供使用者便捷管理拍攝的照片,保證跌倒后及時且持續(xù)地發(fā)送求救信息,在正常使用過程中地理位置也可按照設(shè)定定時上報。
此外,在遠程監(jiān)控的第一次調(diào)試過程中,即使在確保Raspberry Pi 與云服務器ECS 成功連接的情況下,輸入網(wǎng)址后也不能夠訪問實時畫面。經(jīng)查找,出現(xiàn)這個問題的原因是Raspberry Pi和云服務器ECS的設(shè)定時間不一致。該問題的解決方法是通過Python進行網(wǎng)絡爬蟲,請求一臺可以響應的服務器,利用其中的date 屬性獲取實際時間,再調(diào)用os.system()函數(shù)執(zhí)行終端命令,強制設(shè)置Raspberry Pi 時間。為實際操作的方便,這里編寫了一個Shell 腳本,將此Python文件設(shè)為開機自啟,這樣就省去了每次開機后手動校準時間的麻煩。
該手杖的開發(fā)不但結(jié)合了現(xiàn)有智能手杖的優(yōu)點,還充分調(diào)用了各種云服務器進行拓展與創(chuàng)新。受助于這些云計算技術(shù),系統(tǒng)能夠提供拍照存云、實時遠程監(jiān)控、GPS 定位以及語音交互等功能,這些功能能夠有效消除系統(tǒng)受環(huán)境限制的弊端。此外,該系統(tǒng)還提出利用TensorFlow Lite 學習框架以及各類算法進行物體的檢測與識別,進一步提高了系統(tǒng)對圖像的處理能力,有效擴展了應用場景。