華南理工大學廣州學院 許龍銘 紀培燁
本文介紹一種使用機器視覺算法進行圖像處理的方法來進行客流量統計,通過開源、低成本的機器視覺模塊OpenMV編程實現人臉識別,從而判斷是否有人進入商店的智能化系統設計。OpenMV以STM32作為核心,搭載MicroPython 操作系統,通過Python語言編程實現Haar Cascade特征檢測算法識別人臉。硬件系統經過圖像處理得到的人流量數據通過NB-IoT窄帶物聯網模塊發送到阿里云服務器中,管理員通過手機APP訪問服務器獲取相關商店經營數據,通過查看數據可直觀了解商店每日客流量。
概述:商業街是指為數眾多的零售商店集中在一個區域內,以一定的規模和規律,形成帶狀的企業群體(趙黎明,吳文清,劉嘉焜.基于客流量相關系數的商業街規劃抉擇研究[J].統計與決策,2006(3):6-7)。而商店的客流量大小直接影響到商業街的繁榮與否,關系到大部分企業群體的生存發展。近幾年,自動人流量統計系統的開發已經成為一個熱點,通過對國內外現有的已投入市場的自動人流量統計系統進行調查,自動人流量統計系統的實現方法主要有接觸式和非接觸式兩種設計思路。接觸式有入口機械欄桿裝置、踏板壓力傳感器等,非接觸式有紅外檢測技術、視頻統計技術等。無論是接觸式還是非接觸式人流量統計技術都存在一定弊端,接觸式需要安裝一定體積的檢測設備,對場地有一定限制。紅外檢測非接觸式則容易收到干擾,并且檢測準確度低,視頻統計非接觸式則需要配置高的計算機進行大型數據處理。
現在國內外對于深度圖像的研究還處在初級階段,基于深度圖像的客流量統計的研究更是不多,因此本設計具有廣闊的研究空間。

圖1 系統結構圖
基于OpenMV的商店客流量監測系統組成如圖1所示,OpenMV攝像頭主控是由STM32F765VI ARM Cortex M7 處理器和一個OV7725攝像頭組成的一體功能模塊,通過MicroPython語言編程運用圖像處理算法實現人臉檢測,從而準確的檢測到每個特定時間段商店的客流量數據。OpenMV攝像頭主控將處理后的數據通過NBIOT窄帶物聯網模塊使用高覆蓋的蜂窩網絡發送至阿里云服務器中存儲,商店管理人員使用專門的手機APP訪問服務器獲取數據,并在APP中生成每天每個時間段商店的客流量以及對應的每個時段的客流量曲線分析圖等。
硬件系統是每個產品的首要設計,基于OpenMV的商店客流量監測系統的硬件組成結構圖如圖2所示,由OpenMV攝像頭主控進行圖像處理,處理完成后將相關數據通過串口發送到NB-IOT窄帶物聯網模塊,此時如果NB-Iot模塊的SIM卡槽裝載了電信的NB網絡數據卡后能使模塊連入到電信專有的物聯網蜂窩網絡。OpenMV攝像頭主控使用模塊專用的AT指令將數據打包后便可使用窄帶物聯網將數據上傳到服務器中。

圖2 硬件組成結構圖
整個硬件系統的組成中OpenMV攝像頭主控起系統主導功能,通過將STM32高性能處理器最小系統、感光元件以及成像鏡頭高效的集成在一塊硬件電路板上來實現圖像功能。OpenMV攝像頭主控由于使用的STM32處理器作為主控MCU,所以底層使用的是C語言編程。OpenMV模塊上搭載了一個Micro Python解釋器(梅妍玭,傅榮.基于OpenMV的3D定位識別系統[J] .新技術新工藝,2018(2):50-52),因此允許開發者使用MicroPython編程語言對其進行編程控制。MicroPython是一個Python 3的精簡和高效的實現編程語言,它包含了Python標準庫的一個小子集,同時優化了在微控制器和受限環境中的運行(潘麗靜,張虹波,周婷婷.全自動模擬目標搜救系統的設計與實現[J].電腦知識與技術,2016(28):178-180)。Python語言能更容易的在機器視覺算法中處理復雜的輸出,因此OpenMV是專為機器視覺算法中實現特定圖像處理而生的開源項目。在基于OpenMV的商店客流量監測系統中可以通過板載OV7725攝像頭來獲現場圖像,通過機器視覺算法判斷圖像中的人臉個數,從而得到實際應用中的客流量數據進行二次處理。

圖3 NB-IoT模塊硬件應用框圖
NB-IoT模塊在系統中實現數據通信功能,運營商為了物聯網設備應用搭建了專門的窄帶物聯網蜂窩網絡。NB-IoT網絡具有高安全、廣覆蓋、低功耗、大連接和低成本(模組)等特點,專門用于對帶寬要求比較小以及對系統功耗要求低的場合,例如智能抄表、智慧農業等應用。本文選用的NB-Iot模塊是WH-NB75,模塊硬件應用框圖如圖3所示,為了保證網絡的連接,用戶層需要通過SIM卡槽提供專用的NB網絡數據卡以及通過POWER接口提供電源,而OpenMV攝像頭主控實際與NB-IoT模塊進行連接使用的是TTL串口,OpenMV攝像頭主控根據WH-NB75模塊的通信協議使用AT指令來通過串行通信實現網絡連接以及數據收發功能。
OpenMV攝像頭主控在系統中主要完成客流量檢測以及數據傳輸功能,其中客流量檢測通過機器視覺算法來判斷是否有人進入商店,數據傳輸則是通過向NB-IoT模塊發送AT指令來聯網以及將處理后的數據發送到阿里云服務器中存儲。

圖4 OpenMV攝像頭主控軟件流程圖
OpenMV攝像頭主控軟件開始后首先進行系統初始化操作,完成人臉檢測需要用到的Haar Cascade特征檢測算法庫函數的初始化以及串口初始化,后續才能調用算法來檢測人臉以及使用串口相關收發函數與NB-IoT模塊進行通信。初始化完成后通過板載攝像頭進行現場照片的拍攝,并對照片進行人臉檢測。如果在檢測步驟中檢測到人臉則通過累加來獲取客流量數據,然后將數據通過NB-IoT模塊發送到阿里云服務器中,發送完成后再次進行下一次拍攝檢測。如果在檢測步驟中沒有發現人臉則直接進行下一次拍攝檢測。
在聯網應用設計中,云服務器常用于數據的中轉及存儲。阿里云的云服務器更支持用戶以API的方式來靈活構建一個具備伸縮性的服務器架構(陳波.阿里云服務綜覽-用API控制你的云端服務器[J].程序員,2012(2):I0010-I0015)。阿里云服務器在設計中實現數據存儲以及與設備、手機APP的交互功能,因此需要編程實現服務器的相關功能,服務器程序使用Java語言編寫。在基于OpenMV的商店客流量監測系統中需要建立一個TCP服務器供OpenMV設備以及管理員手機APP連接,由于服務器仍需要將設備發送過來的客流量數據保存,因此需要在服務器程序中搭建mysql數據庫來實現數據存儲。
阿里云服務器軟件流程圖如圖5所示,服務器啟動后首先啟動TCP服務,設置供客戶端連接的端口號等參數后實行遠程監聽,TCP服務器啟動完成后檢測OpenMV設備是否連接到服務器,如果設備已連接則獲取設備發送的客流量數據存儲到mysql數據庫中。然后檢測手機APP是否連接到服務器,如果手機APP已連接則向其發送mysql數據庫中的客流量數據。完成設備以及手機APP的連接檢測處理則進入下一輪檢測處理,并不斷循環。

圖5 阿里云服務器軟件流程圖
手機APP主要完成服務器的連接、數據獲取以及數據應用操作,本設計中主要面向安卓手機用戶,使用Java語言編寫。Java作為一種完全面向對象的語言,擁有安全、健壯、分布、可移植等多種優點(張旭輝.基于安卓系統的APP開發技術探析[J].電子制作,2016(14):34)。手機APP功能組成圖如圖6所示,手機APP是面向管理員用戶的數據應用端,因此首先需要保證的是服務器連接功能。在APP上實現TCP客戶端來連接阿里云服務器,連接成功后獲取客流量數據進行處理。客流量查詢功能是整個設計最基本和最重要的功能,通過手機APP客戶查看各個時間段商店的客流量數據。而歷史曲線分析功能則是在獲取了一段時間的客流量數據后生成的更直觀的監測方式。成交率分析功能則需要管理員用戶輸入每日的成交人數來進行二次計算。

圖6 手機APP功能組成圖

表1 系統測試數據
完成了整個系統的軟硬件設計后需要通過大量測試以及數據分析來驗證系統是否能投入實際應用中,首先將設備固定在天花上,攝像頭正對門口,裝載好NB網絡數據卡后上電,通過改變每次同時通過門口的人數后觀看手機APP實際檢測的人數變化,從而獲取不同人數情況下多次檢測的正確率,并將相關數據記錄表。在通過人數分別為1-8個,每次改變人數后均保證檢測次數為100次,得到系統測試數據如表1所示。由表1的測試數據分析可以看出在通過人數為1-3人時系統能保證100%的檢測正確率,而通過人數增加到4-5人時檢測正確率雖然有所下降,但仍然保持在95%以上。而當通過人數增加到6人以上時檢測正確率有較大程度的降低,因此整個系統的在同時通過人數在1-5人時能保證較高的檢測正確率。
本文基于OpenMV攝像頭主控結合機器視覺算法來檢測人臉,并將檢測數據通過處理轉換為通過某點實際人流量數據,結合專門的數據存儲服務以及管理員手機APP后能應用到商店客流量檢測的實際場景中。整個系統具有低功耗、低成本以及運行穩定的優點,并且采用專有的NB-IoT窄帶物聯網來傳輸數據,保證了多用戶并發連接的可靠性,是系統投入商用的基本保證。
參考:趙黎明,吳文清,劉嘉焜,基于客流量相關系數的商業街規劃抉擇研究:統計與決策,2006;梅妍玭,傅榮,基于OpenMV的3D定位識別系統:新技術新工藝,2018;潘麗靜,張虹波,周婷婷,全自動模擬目標搜救系統的設計與實現:電腦知識與技術,2016;陳波,阿里云服務綜覽-用API控制你的云端服務器:程序員,2012;張旭輝,基于安卓系統的APP開發技術探析[J].電子制作,,2016。