楊茗峰,雷以軒,何金蓬
(東南大學 成賢學院,江蘇南京,210088)
門店的客流情況直接影響其經營情況,掌握門店的客流情況可以幫助店主合理規(guī)劃門店雇員的人數(shù)和工作時間,從而有效降低門店的運營成本,這關系到門店的生存與發(fā)展。近年來,客流統(tǒng)計系統(tǒng)的開發(fā)已經成為一個熱點方向,通過對現(xiàn)有的客流統(tǒng)計系統(tǒng)進行調查,實現(xiàn)方案主要集中于入口機械欄桿裝置和紅外線客流量計數(shù)器,前者的設備成本高且對使用場地有一定的限制,后者在面對兩名及以上顧客并排進店等場景時的監(jiān)測正確率很低。目前市場上基于機器視覺算法的客流量計數(shù)器的產品相對較少,本設計在具有運行功耗低、成本較低和安裝方便的同時還可接入互聯(lián)網,因此具有廣闊的應用空間。
基于STM32 的物聯(lián)網門店客流監(jiān)測系統(tǒng)的整體方案設計結構如圖1 所示。當雷達感應模組監(jiān)測到有人進店時,喚醒智能攝像頭進行人臉識別,從而得到每次顧客進入時的客流數(shù)據,并將客流數(shù)據發(fā)送至STM32 單片機,STM32 單片機控制WiFi 通信模塊將客流數(shù)據經無線局域網發(fā)送至云服務器,用戶使用手機App 訪問云服務器即可以曲線圖的形式更為直觀地查看門店客流數(shù)據。
圖1 系統(tǒng)設計結構圖
基于STM32 的物聯(lián)網門店客流監(jiān)測系統(tǒng)的電路原理圖如圖2 所示。HLK-LD2410 人體存在雷達感應模組通過通用I/O 口連接OpenMV4 H7 Plus 攝像頭上的STM32H743IIK6處理器,STM32H743IIK6 處理器可驅動OV5640 感光元件采集畫面,STM32H743IIK6 處理器通過UART 串口連接STM32F103C8T6 單片機,STM32F103C8T6 單片機通過UART 串口連接ATK-ESP8266 WiFi 通信模塊。
圖2 電路原理圖
2.2.1 HLK-LD2410 人體存在雷達感應模組
HLK-LD2410 是一款高靈敏度的24GHz 人體存在雷達感應模組,利用FMCW 調頻連續(xù)波,對設定空間內的人體目標進行探測,結合雷達信號處理、精確人體感應算法,實現(xiàn)了高靈敏度的人體存在狀態(tài)感應,其主要應用在室內場景,最遠感應距離可達6 米,通過配置工具可配置感應距離范圍、不同區(qū)間的感應靈敏度和無人延時時間等,以達到更好的人體感應效果。在本系統(tǒng)中,當HLK-LD2410 人體存在雷達感應模組監(jiān)測到有人進店時,將信號通過通用I/O 口發(fā)送至OpenMV4 H7 Plus 攝像頭上的STM32H743IIK6 處理器,隨后喚醒板載的OV5640 感光元件開始采集畫面,如此設計可以有效降低系統(tǒng)運行的總體功耗,延長感光元件的使用壽命。
2.2.2 OpenMV4 H7 Plus 攝像頭
OpenMV4H7 Plus 是一個非常易用和低價的機器視覺開發(fā)組件,是一款由STM32H743IIK6 處理器和OV5640 感光元件組成的單片機攝像頭,底層使用C 語言編程,其內置了MicroPython 解釋器,開發(fā)者可以在嵌入式上直接使用MicroPython 語言編程,Python 的高級數(shù)據結構幫助開發(fā)者可以很容易地在機器視覺算法中處理復雜的輸出。在本系統(tǒng)中,當OpenMV4 H7 Plus 攝像頭上的STM32H743IIK6處理器收到HLK-LD2410 人體存在雷達感應模組通過通用I/O 口發(fā)送的信號后,喚醒板載的OV5640 感光元件開始采集畫面,隨后STM32H743IIK6 處理器開始分析畫面并計算客流數(shù)據,最后通過UART 串口將分析得到的客流數(shù)據發(fā)送至STM32F103C8T6 單片機。
2.2.3 ATK-ESP8266 WiFi 通信模塊
ATK-ESP8266 是一款采用串口與MCU(或其他串口設備)通信,內置TCP/IP 協(xié)議棧,能夠實現(xiàn)串口與WiFi 之間的轉換的WiFi通信模塊,模塊支持串口轉WiFi STA、串口轉AP 和WiFi STA+WiFi AP 的模式,從而快速構建串口-WiFi 數(shù)據傳輸方案。在本系統(tǒng)中,STM32F103C8T6 單片機通過UART 串口連接ATKESP8266 WiFi通信模塊,使用MQTT 協(xié)議接入阿里云服務器,通過上傳特定的報文實現(xiàn)向阿里云服務器上傳當前客流數(shù)據。
系統(tǒng)運行流程如圖3 所示。系統(tǒng)開啟后,首先進行初始化操作,完成基于Haar 特征的Cascade 分類器機器視覺算法和UART 串口的初始化,為后續(xù)調用機器視覺算法和UART 串口相關函數(shù)做準備。初始化完成后,HLKLD2410 人體存在雷達感應模組始終保持工作狀態(tài),當其監(jiān)測到有人進店時,將信號通過通用I/O 口發(fā)送至OpenMV4 H7 Plus 攝像頭上的STM32H743IIK6 處理器,程序經過50ms 的延時確定當前有人進店后,喚醒OV5640 感光元件開始采集畫面,采集的畫面分辨率為VGA:640×480,在保證畫面細節(jié)允許進行人臉識別的同時提高了畫面采集的幀率,當顧客走出監(jiān)測范圍后,關閉OV5640 感光元件結束畫面采集。
圖3 系統(tǒng)運行流程圖
采集畫面的同時,STM32H743IIK6 處理器通過加載“frontalface”人臉Haar 模型對采集到的每一幀畫面進行人臉識別,每幀畫面中的人臉數(shù)量即為此畫面中的顧客人數(shù),取單次顧客進店過程中采集到的所有畫面顧客人數(shù)的最大值作為本次進店的顧客人數(shù),并累加至當日總客流量,便完成了單次顧客進店的客流監(jiān)測。隨后,STM32H743IIK6 處理器將當前客流數(shù)據加密打包后通過UART 串口發(fā)送至STM32F103C8T6 單片機,STM32F103C8T6 單片機觸發(fā)UART 串口中斷并進入中斷服務程序,程序將接收到的數(shù)據解析后得到當前客流數(shù)據。最后,STM32F103C8T6 單片機通過UART 串口連接ATKESP8266 WiFi 通信模塊,根據MQTT 協(xié)議將相關數(shù)據打包后發(fā)送至阿里云服務器,待成功收到阿里云服務器返回的報文后進入下一輪客流監(jiān)測。
OpenMV4 H7 Plus 攝像頭主要完成客流監(jiān)測的功能,程序在其STM32H743IIK6 處理器上運行?;贖aar 特征的Cascade 分類器是由Paul Viola 和Michael Jone 在其論文論文“使用簡單特征的增強級聯(lián)進行快速對象檢測(Rapid Object Detection using a Boosted Cascade of Simple Features)”于2001 年提出的一種有效的物品檢測方法,是一種機器學習方法,其通過許多正負樣例中訓練得到cascade 方程,然后將其應用于其他圖片。
實現(xiàn)人臉識別的關鍵程序如圖4 所示。第一行程序加載了“frontalface”人臉Haar 模型,為第三行程序的正確運行做準備,其中,將stages 值設置得小可以加快匹配速度,但會降低匹配的準確率,本系統(tǒng)設置的stages 值為25。第二行程序控制感光元件拍攝了一張照片,并將拍攝的照片存入輔助幀緩沖存儲區(qū),返回給img 對象,圖像存儲在該存儲區(qū)域的底部,剩下的任何內存都可供幀緩沖區(qū)堆棧使用,OpenMV4 H7 Plus 攝像頭的固件使用它來保存用于圖像處理算法的大型臨時數(shù)據結構。第三行程序對第二行程序拍攝的照片進行了分析并在其中尋找人臉,其中,scale 值可以縮放被匹配特征的大小,而threshold 值越大,匹配速度越快,匹配的準確率也會下降,本系統(tǒng)設置的scale 值為1.35,threshold 值為0.75。第四行程序將第三行程序在拍攝的照片中尋找到的人臉的數(shù)量賦值給face_add,便得到了單張照片中的顧客人數(shù),通過取單次顧客進店過程中采集到的所有畫面顧客人數(shù)的最大值便得到了本次進店的顧客人數(shù)。
圖4 關鍵程序示例
在物聯(lián)網架構中,物聯(lián)網云平臺屬于中間部分,起著承上啟下的作用,本文選用阿里云生活物聯(lián)網平臺,其是一款針對智能生活領域的物聯(lián)網云平臺,是在阿里云IaaS 和PaaS 層云產品的基礎上,搭建的一套公有云平臺,開發(fā)門檻較低,其原理圖如圖5 所示。MQTT(消息隊列遙測傳輸)是ISO標準(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的消息協(xié)議,是一個基于客戶端-服務器的消息發(fā)布/訂閱傳輸協(xié)議,運用MQTT 協(xié)議,設備可以很方便地連接到物聯(lián)網云服務,管理設備并處理數(shù)據,最后應用到各種業(yè)務場景。
圖5 阿里云生活物聯(lián)網平臺原理圖
系統(tǒng)使用平臺頒發(fā)的唯一設備證書(ProductKey、DeviceName、DeviceSecret)接入阿里云生活物聯(lián)網平臺后,通過MQTT 協(xié)議向平臺發(fā)送含有當前客流信息的報文,平臺收到報文后進行解析,將數(shù)據值匹配功能名稱的標識符,從而匹配相應的功能名稱。阿里云生活物聯(lián)網平臺提供了公版免開發(fā)App“云智能”,其可以通過阿里云生活物理網平臺進行開發(fā)、調試和管理,在平臺中產品的人機交互頁面,打開“使用公版App 控制產品”的控制開關,即可很方便地設計產品的面板界面。阿里云生活物聯(lián)網平臺通過HTTPS 或MQTT 協(xié)議向云智能App 發(fā)送客流數(shù)據,用戶在云智能App 中可以以曲線圖的形式查看每小時、日、周、月的客流數(shù)據變化情況,用戶界面如圖6 所示。
圖6 云智能App 示例
完成了系統(tǒng)的軟件硬件設計和各部分的單獨測試后,需要通過對整體系統(tǒng)的大量測試來測試客流數(shù)據的準確性,以驗證系統(tǒng)能否投入實際應用?;赟TM32 的物聯(lián)網門店客流監(jiān)測系統(tǒng)的實物如圖7所示,將設備固定在距離地面約1.7米高、距離門店門口約3 米遠處,攝像頭正面朝向門店入口,開啟電源后等待設備自動接入門店WLAN(無線局域網),云智能App 顯示設備在線后開始測試。測試通過改變每次進店的顧客人數(shù)(從1 人逐步增加至5 人),每種顧客人數(shù)的測試次數(shù)為100 次,將系統(tǒng)分析得到的客流數(shù)據與實際的客流數(shù)據進行對比,從而得出不同進店顧客人數(shù)情況下的客流監(jiān)測正確率,測試數(shù)據如表1 所示。
表1 系統(tǒng)測試數(shù)據
圖7 系統(tǒng)實物圖
對表1 的測試數(shù)據進行分析可以得出,本系統(tǒng)在單次進店顧客人數(shù)為1-2 人時能夠保證97%以上的監(jiān)測正確率;在單次進店顧客人數(shù)增加至3-4 人時監(jiān)測正確率有所下降,但仍保持在90%以上;在單次進店顧客人數(shù)增加至5 人時監(jiān)測正確率有較大幅度下降;考慮在實際應用中單次進店顧客人數(shù)為6 人及以上的情況很少,故在測試中未涉及。綜合測試數(shù)據,本系統(tǒng)在單次進店顧客人數(shù)為1-4 人時能夠保證較高的監(jiān)測正確率,符合實際應用場景的需求。
基于STM32 的物聯(lián)網門店客流監(jiān)測系統(tǒng)將HLKLD2410 人體存在雷達感應模組和OpenMV4 H7 Plus 攝像頭結合起來,配合機器視覺算法實現(xiàn)了客流數(shù)據的監(jiān)測,配合ATK-ESP8266 WiFi 通信模塊實現(xiàn)了物聯(lián)網,云智能App為用戶提供了直觀的客流數(shù)據展現(xiàn)形式。本系統(tǒng)相較于入口機械欄桿裝置具有成本較低、安裝方便的優(yōu)勢,相較于紅外線客流量計數(shù)器顯著提高了客流監(jiān)測的正確率,并且運行功耗低、使用壽命長,具有一定的實用價值,為投入商用提供了基本保證。