李加定,繆文南
(廣州城市理工學院電子信息工程學院,廣東廣州 510800)
在全球疫情嚴峻和社會老齡化的背景下,為方便病人并提高醫護人員工作效率及醫院智能化服務水平,在藥房和病房之間智能高效配送藥品一直都是備受關注的問題。近年來,我國研究人員在這方面開展了大量的研究工作,如PLC 控制的軌道送藥小車[1],其具有觸屏控制、人機交互、端口多樣、自動化水平高的特點。當下,人工智能技術正滲入智慧藥房的建設中,賦予智慧藥房新視角[2],隨著智能化水平的提升,出現了多種類型的智能送藥小車,但在機器識別物體的準確度和效率與工程應用存在差距,有待提高[3-5]。故設計了一款基于OpenMV 攝像頭的智能送藥小車,通過機器深度學習、圖像分類識別等人工智能常見技術來實現識別目標病房、擺脫軌道限制、自動規劃路線、智能循跡、自主避障、路口轉彎、雙車交互、識別停靠等智能化功能,深度學習訓練出來的模式識別圖像中的目標數字準確率達到92.4%,圖像識別平均時間低于0.5 s,為人工智能背景下的智慧藥房建設提供新的思路和方式。
智能送藥小車的初始位置為智慧藥房,利用紅外+重力感應檢測到藥品正確裝載后,當醫護人員展示含有目標病房的數字圖片時,系統使用OpenMV圖像識別模塊確認目標,開始發車送藥。途中啟用OpenMV-plus 識別路徑中的紅線,循跡而行,識別十字路口地面標示的數字而轉向。到達終點后,識別地面黑點的位置而停靠,中間輔以雙車通信,協作送藥等功能。待確認藥品在病房被獲取之后,智能送藥小車返回藥房,完成送藥任務,小車運行示意圖如圖1 所示。

圖1 智慧藥房送藥小車運行示意圖
智能小車以STM32F103 微處理器為主控系統[7],由OpenMV 紅線循跡、OpenMV-plus 圖像識別、藥品感應、電機驅動、雙車藍牙交互、顯示與報警(含OLED 屏、LED 指示燈、蜂鳴器)、電源管理六個模塊組成,如圖2 所示。

圖2 系統整體功能示意圖
系統的核心部件OpenMV 攝像頭是一款小巧、開源、低功耗、低成本的機器視覺傳感器。對于抓拍的圖像,經過預處理后,利用機器深度學習訓練出來的模式,能分析并識別出圖像中的信息(如數字和簡單幾何形狀),輸出結果包含物品類型及坐標信息[8-10],其工作流程如圖3 所示。

圖3 系統圖像識別工作流程圖
系統采用廣角OpenMV 攝像頭可保障路口抓拍的圖像中包括多個數字,而后對圖像進行腐蝕、膨脹、濾波、灰度化、二值化、單字符分割、尋找數字的邊框輪廓等相關圖像處理,最后利用模板匹配NCC算法和Hausdorff 距離算法提高識別精度[11-12]。
為了識別拍攝到的路徑標識和數字信息,前期需要進行神經網絡深度學習來創建預測模型[13],先針對路徑中的紅線和數字在不同位置和不同角度拍攝多張圖片,并配上標簽,構成訓練集合和模板,然后利用OpenMV 的神經網絡TensorFlow lite 模式進行訓練。圖像識別的核心是模板匹配算法NCC,并輔以Hausdorff 距離算法用于提高精度。
將OpenMV 攝像頭抓拍圖像轉化后的數組與模板數組進行對比,檢驗兩者是否存在交叉相關性,使用到的模板匹配算法NCC 是一種基于圖像灰度信息的匹配方法。
設待檢測圖像為I(尺寸為M×M),模板圖像為T(N×N),其中M>>N,兩者均為像素。模板T在圖像I上平移,搜索窗口所覆蓋的子圖記作T(i,j)。(i,j)為子圖的左上角頂點在檢測圖像I中的坐標,通過相關函數計算子圖與實時圖的灰度相關值NCC:
其中,T=T(i,j)為模板T在待檢I對應點位置(x,y)偏移(i,j)后的像素灰度值。為模板圖像在匹配窗口內像素灰度均值。I=為待檢測圖像(x+i,y+j)的像素灰度值。為待檢測圖像匹配窗口內灰度值均值。NCC范圍為[-1,1],取值越大,表示相關性越高。
為了提高匹配精度,引入Hausdorff 距離算法,待識別數字的圖像I中提取若干特征向量集合A,與模板T對應的特征向量集合B進行比較,設A集合為[a1,a2…aP],B集合為[b1,b2…bP],假 設B中 的bj特征點到A集合最近,然后算出A中所有點到bj中的距離,取最大值為h(A,B),h(B,A)為A中的最近點aj到B中各點的最大值,雙向H(A,B)距離為前兩者的最大值,描述如下:
模板T在待匹配圖像I中移動,雙向H(A,B)距離最小處即為匹配程度最高點。這種方式雖增加了特征向量個數,但相對于NCC 算法減少了計算量,提高了匹配速度。
3.1.1 電機控制電路
電機控制電路包括A4950ELJTR-T 構成PWM電機驅動電路、直流電機MG513P30、L298N 雙H 橋驅動板。其中,A4950 的IN1 和WNA 引腳與單片機I/O 口相連,OUT1 和OUT2 與電機兩端相連。單片機I/O 口輸出PWM 信號到L298N,通過調節PWM 信號的占空比來控制轉速及前進與后退,同時單片機控制A4950 的兩個引腳輸出信號,實現小車的啟動和停止,其中,電機1 控制電路如圖4 所示。

圖4 電機1控制電路圖
3.1.2 藥物感應電路
藥物感應電路采用紅外感應+重力檢測雙模式[14]。先使用可調電阻調出合適的紅外感應靈敏度,當接收管收到反射光后,前后輸出的電平信號經過電壓比較器LM339 后返回給MCU,從而判斷藥物是否被取走。質量檢測通過TTP223觸摸電容并結合壓敏電容實現,通過積分方式算出放入的藥品質量,并將信息傳給MCU,其中,紅外傳感與重力傳感電路見圖5。

圖5 紅外傳感與重力傳感電路圖
3.1.3 藍牙通信電路
采用CH573F 藍牙系統在兩個運動中的小車之間建立通信[6,15](如圖6 所示),CH573F 集成了BLE 無線通信的32 位RISC-V 內核微控制器和低功耗藍牙BLE通信模塊。兩個小車的藍牙設備基于SPP協議創建串口、傳輸數據,從而實現等待、避讓等協作任務。

圖6 CH573F藍牙通信電路圖
軟件設計主要實現MCU 根據OpenMV 的圖像識別結果,調節PWM 信號的占空比,控制小車啟動、加速、勻速、減速、停止、轉彎等動作,進而實現識別目標病房、規劃線路、循跡前進、路口轉向、終點停靠、檢測藥物取出后返程等功能,主程序流程如圖7 所示。

圖7 主程序流程圖
制作了兩臺智能送藥小車進行測試,每個小車安裝兩個攝像頭,一個OpenMV4 攝像頭辨別地面上數字,另一個OpenMV-Plus 識別地面紅線。先測試小車硬件,再測試OpenMV 識別圖像中的數字效果,而后讓小車在藥房和病房之間進行實地模擬測試。設OpenMV 攝像頭識別圖像中的數字時長為Δt,小車完成一次近端病房送藥任務的時間T1,雙車協調送藥到中段病房時間T2,到遠端病房T3,其中Δt<0.5 s;T1<20 s;T2<35 s;T3<50 s,達到預期目標。
硬件測試了藥品感應、電機驅動、轉向控制、循跡線路等環節,均正常工作,滿足后續測試要求。
先對0-9 數字模板采樣,將10 個數字打包為20 個標簽,每個標簽采集300 張不同角度的圖片,共6 000 張圖片構成數據集,利用OpenMV 的神經網絡TensorFlow lite 訓練模式進行為期50 次的深度學習,訓練出準確率為92.4%的模型,具體如表1 所示。
OpenMV 識別數字的時間與準確度影響小車運行時間,故數字識別的訓練集非常關鍵。訓練集進行多輪機器深度學習訓練,從最初成功識別圖片中數字的耗時3.3 s 降低到0.4 s,為后續智能小車從藥房到病房的送藥過程提供了效率保障。
布置模擬醫院場景(如圖8 所示),包括墻體黑線、循跡紅線、一個藥房和八個病房,其中藥房坐標0(0,0),病房1 坐標(-55,75)。前期將各節點坐標錄入到單片機存儲器,小車通過編碼器累計里程,計算距離和方位。

圖8 模擬藥房與醫院場景地圖
測試時,將小車置于藥房(0,0),車頭與攝像頭面向走廊,檢測到約200 g 藥品裝上小車后,LED 紅色指示燈亮,表示已載物。然后手持數字標號紙張讓小車識別病房號,小車啟動,沿走廊中央實線行進,到達路口,減速識別后轉向,到達病房,待藥品取后自主返程,LED 綠燈亮,可載物。小車從藥房出發到近、中、遠三個病房,往返時間見表2,均達到預計值。

表2 單個小車往返目標房號的時間
協作1:兩車協同運送藥品到中段4 號病房;協作2:兩車協同到8 號病房,其中小車1 送藥,小車2取藥。分別進行五輪有效測試,平均完成時間為29.01 s 和48.35 s,達到預期目標。
基于OpenMV 的智能送藥小車在數字圖像和循跡識別中改進了算法,通過深度學習訓練的模式提高了效率。小車送藥到近、中、遠端病房的時間分別為14 s、21 s、27 s,達到了預計效果,雙車協作實現了交替送藥與取藥任務。相對于傳統的軌道自動送藥小車,在機器人工智能程度和人機交互友善程度得到了提高,為人工智能背景下新型智慧藥房建設提供了新的設計思路。