張麗艷,趙藝璇,李林
(大連交通大學 計算機與通信工程學院,遼寧 大連 116028)①
此次新型冠狀病毒的出現給民生、經濟、貿易等方面都帶來了前所未有的重創,口罩作為阻斷病毒傳播的有效手段在此次抗擊疫情中起到了至關重要的作用.目前商場、藥店、飯店等都已經開放,但是這些公共場所大都有必須佩戴口罩才能入內的要求.公共場所客流量大,單純靠人工來檢測如此大人流量是否佩戴口罩并不現實,因此需要尋求一種可以自動檢測是否佩戴口罩的設備.
本文設計了一款可以自動檢測顧客是否佩戴口罩的設備,并模擬控制門的開關.以樹莓派作為主控制系統,應用超聲波傳感器檢測是否有人出現在指定區域,并控制攝像頭自動拍照,將圖片成功傳輸給服務器端之后,LED燈亮起,并在服務端進行目標檢測,檢測到佩戴口罩,舵機控制閘門的開啟、關閉,檢測到未佩戴口罩,裝置不開啟.
本文設計了基于樹莓派的口罩檢測系統,可以放置在一些必須要佩戴口罩的公共場合門口,在一定區域內自動檢測行人是否佩戴口罩,并控制閘門的開關,以減少工作人員的工作強度.本系統以樹莓派[1]為核心控制模塊,外接攝像頭、超聲波傳感器、SG90舵機、LED燈.主要工作過程為服務端(用戶PC)首先發送可以接收數據的信息給客戶端(樹莓派),隨后客戶端通過攝像頭模塊和超聲波傳感器對目標進行數據采集,隨后將數據信息無線傳輸給服務端,傳輸成功LED燈亮起,隨后在服務端通過SSD方法對數據進行目標檢測,檢測完成后將結果反饋給客戶端通過程序控制舵機的開關,控制過程為檢測到口罩執行先開門后關門的操作,未檢測到口罩則不開門.圖1所示為系統總體結構圖.

圖1 系統結構圖
本文選擇“Raspberry Pi 4B”為控制處理器[2-3],樹莓派采用Python進行編程,使用Linux和Windows系統為操作系統的ARM微機主板開發,以SD / MicroSD卡為內存硬盤.具有40個GPIO驅動接口以連接更多硬件,實現系統整體功能.在進行工作前需要對樹莓派進行基礎配置[4].本系統在硬件設計部分主要包括攝像頭模塊、超聲波傳感器、LED燈和舵機.運用超聲波傳感器檢測顧客是否出現在閾值區域內,如檢測到區域內有人則運用攝像頭進行拍照;LED燈亮表示數據從客戶端向服務端傳輸成功;SG90舵機模塊進行開、關控制.
本系統使用樹莓派專用500萬像素廣角攝像頭對目標進行數據采集即拍照,以OpenCV作為拍照模塊處理圖像的主要工具.攝像頭含有OV5647感光芯片,靜態圖片分辨率為2 592 dpi×1 944 dpi,支持1080p30,720p60以及640×480p60/90視頻錄制.
本系統使用LED燈指示樹莓派拍攝照片已成功傳輸給服務端進行圖像處理.LED燈正極連接樹莓派GPIO端口的BCM21,控制燈的亮滅,LED負極連接樹莓派的接地端口GND.使用LED模塊的流程為先默認LED燈熄滅,待文件傳輸完成后燈亮1s后熄滅,此程序可隨著文件傳輸重復執行.
本系統選擇HC-SR04超聲波傳感器作為檢測顧客在設定閾值區域內出現從而可以調用攝像頭進行拍照的模塊.超聲波傳感器具有穩定的性能,可以準確地測量距離和小目標,可適用于機器人躲避障礙物、物體范圍、水位感知及公共安全領域[5].HC-SR04模塊有VCC、GND、Trig(控制端)和Echo(收信端)的四個接口.VCC是5V電源,GND接地,Trig是控制終端觸發信號輸入,在本系統中用GPIO口的BCM20號控制,Echo為接收端等待回響信號輸出,在本系統中用GPIO口的BCM16號控制.超聲波測距模塊的工作原理大致分為以下四個步驟:
(1)觸發信號:觸發Trig端口給至少10 us的高電平信號用于測距;
(2)模塊內部:發送8個40 kHz的方波自動檢測返回信號;
(3)輸出回響信號:返回信號觸發Echo輸出一個高電平,輸出測試距離如式(1)所示;

(1)
(4)設定閾值:想要檢測固定區域內出現的目標需要設定一個閾值范圍,并將其與拍照模塊相連接,如檢測到閾值范圍內的目標則觸發拍照,本系統設定閾值為0.3~0.5 m.當控制端發出高電平,就在接收端等待輸出,當接收到輸出信號則開始計時,當檢測到的輸出信號由高電平變為低電平時停止計時,利用時間差代入公式即可算出距離,設定固定距離閾值并連接拍照模塊可以實現自動對出現在閾值內的目標拍攝照片.
本系統使用SG90伺服馬達作為仿真裝置開關.伺服馬達又稱舵機,是一種可以變化角度且可以保持的控制系統.SG90舵機有三個引線接口,分別是紅線電源VCC,黑線接地GND,黃線控制線使用PWM脈沖寬度調制技術,該系統用GPIO端口BCM17控制.在伺服器內部,以20 ms的主周期和50Hz的頻率生成標準信號作為基準電路,由微處理器生成的PWM信號進入到舵機并產生直流偏置電壓,從而控制伺服器的順向和逆向旋轉.該系統使用180°舵機,生成PWM信號,脈沖寬度在0.5~2.5 ms之間[6-7].平滑齒輪的控制信號是PWM信號,需要通過改變占空比從而改變舵機的旋轉角度,其中占空比表示高電平所占周期電平周期的比例.本系統執行代碼使舵機從0°旋轉到180°,每次旋轉10°,實現緩慢開關,轉動角度用占空比控制,從2.5%~12.5%設定旋轉角度為0°~180°,在20 ms周期后結束.要實現運用PWM控制舵機旋轉固定角度需要將一個周期20 ms分為兩次中斷執行,分別是高電平持續時間為0.5~2.5 ms的短定時中斷以及一次長定時中斷.通過改變高電平持續時間及占空比控制舵機旋轉角度,從而達成本系統模擬自動門開關的目的.
本文系統在軟件部分通過套接字socket建立客戶端樹莓派與服務端計算機的聯系實現了信息傳輸,并將接收到的客戶端傳輸圖片應用SSD目標檢測算法進行戴口罩與未戴口罩兩類檢測.軟件系統結構如圖2所示,首先需要客戶端通過超聲波傳感器持續監測與障礙物的距離,設定閾值為0.3~0.5 m,在此范圍內觸發客戶端樹莓派攝像頭拍照,否則不拍照;隨后通過socket無線傳輸將所拍攝圖片傳輸給服務端,傳輸完成LED燈亮起;在服務端通過SSD目標檢測算法對圖像進行是否佩戴口罩的檢測并將結果反饋給客戶端;最后在客戶端設定程序,如識別結果為佩戴口罩則控制舵機先正向、后反向各旋轉90°表示閘門裝置的開啟和關閉,如識別結果為未佩戴口罩則舵機不工作,閘門裝置保持關閉狀態.

圖2 軟件系統結構
本文系統從網絡中搜集了戴口罩與未戴口罩的正面人臉圖片共1 651張.從中隨機選取1 000張圖片作為訓練集, 551張圖片作為驗證集,100張圖片作為測試集,并對訓練集和驗證集樣本利用labelImg圖像標注工具進行人工標注并制作成所需.xml格式.本系統將目標類別分為兩類進行標注,分別是戴口罩類別mask及未戴口罩類別face.
本文在服務端檢測是否佩戴口罩使用了主干網絡為mobilenet的SSD目標檢測算法,MobileNet-SSD的網路結構是在SSD網絡結構上改進的,將主干網的VGG16替換成MobileNet,去掉了主干網MobileNet 最后的全局平均池化、全連接層和softmax層,在MobileNet網絡的最后卷積層conv13的后面增加了八個卷積層,并抽取其中的四層分別是conv14_ 2、conv15_ 2、conv16_ 2、conv17_2和MobileNet原網絡中的conv11、conv13層,用于目標檢測的分類和定位.MobileNet-SSD網絡與SSD網絡相比,雖然檢測準確率略微下降,但是參數量由33.1×106下降到6.8×106,有較為明顯的輕量級、低延遲的特點,在本文應用背景中有較大的優勢[8-9].
本系統輸入為大小是 300 ×300 的圖像,首先經過一層標準卷積,其次將特征圖輸入到13層修正后的深度可分離卷積,具體操作為先通過卷積核為3×3的 Depthwise 卷積操作得到輸出特征圖,再利用卷積核為1×1的 Pointwise 卷積操作進行各通道的特征融合得到輸出.候選框的回歸和目標分類利用MobileNet 最后兩個卷積層的輸出以及新添加的四個卷積層實現,最后利用非極大抑制輸出最終預測框[10-11].圖3所示為MobileNet-SSD結構.

圖3 MobileNet-SSD網絡結構
本文系統應用SSD目標檢測算法判斷顧客是否佩戴口罩,訓練過程中在手動標注的訓練集與驗證集共1 551張圖片檢測兩類分別是戴口罩與不戴口罩的模型mAP值達到97.21% ,可以看出模型檢測效果十分優秀,可以應用到本系統對客戶端傳送給服務端的圖片進行是否佩戴口罩的檢測.
本文應用客戶端樹莓派與服務端計算機運用軟硬件交互的方法實現了口罩檢測并模擬自動門功能.應用超聲波傳感器實現了檢測閾值范圍內出現的人,運用SSD目標檢測算法得到了一個很好的檢測效果,系統基本實現了實時監測顧客是否佩戴口罩并通過舵機模擬門的開關功能.