華南理工大學(xué)廣州學(xué)院 許龍銘 紀(jì)培燁
本文介紹一種使用機(jī)器視覺算法進(jìn)行圖像處理的方法來進(jìn)行客流量統(tǒng)計(jì),通過開源、低成本的機(jī)器視覺模塊OpenMV編程實(shí)現(xiàn)人臉識(shí)別,從而判斷是否有人進(jìn)入商店的智能化系統(tǒng)設(shè)計(jì)。OpenMV以STM32作為核心,搭載MicroPython 操作系統(tǒng),通過Python語言編程實(shí)現(xiàn)Haar Cascade特征檢測算法識(shí)別人臉。硬件系統(tǒng)經(jīng)過圖像處理得到的人流量數(shù)據(jù)通過NB-IoT窄帶物聯(lián)網(wǎng)模塊發(fā)送到阿里云服務(wù)器中,管理員通過手機(jī)APP訪問服務(wù)器獲取相關(guān)商店經(jīng)營數(shù)據(jù),通過查看數(shù)據(jù)可直觀了解商店每日客流量。
概述:商業(yè)街是指為數(shù)眾多的零售商店集中在一個(gè)區(qū)域內(nèi),以一定的規(guī)模和規(guī)律,形成帶狀的企業(yè)群體(趙黎明,吳文清,劉嘉焜.基于客流量相關(guān)系數(shù)的商業(yè)街規(guī)劃抉擇研究[J].統(tǒng)計(jì)與決策,2006(3):6-7)。而商店的客流量大小直接影響到商業(yè)街的繁榮與否,關(guān)系到大部分企業(yè)群體的生存發(fā)展。近幾年,自動(dòng)人流量統(tǒng)計(jì)系統(tǒng)的開發(fā)已經(jīng)成為一個(gè)熱點(diǎn),通過對國內(nèi)外現(xiàn)有的已投入市場的自動(dòng)人流量統(tǒng)計(jì)系統(tǒng)進(jìn)行調(diào)查,自動(dòng)人流量統(tǒng)計(jì)系統(tǒng)的實(shí)現(xiàn)方法主要有接觸式和非接觸式兩種設(shè)計(jì)思路。接觸式有入口機(jī)械欄桿裝置、踏板壓力傳感器等,非接觸式有紅外檢測技術(shù)、視頻統(tǒng)計(jì)技術(shù)等。無論是接觸式還是非接觸式人流量統(tǒng)計(jì)技術(shù)都存在一定弊端,接觸式需要安裝一定體積的檢測設(shè)備,對場地有一定限制。紅外檢測非接觸式則容易收到干擾,并且檢測準(zhǔn)確度低,視頻統(tǒng)計(jì)非接觸式則需要配置高的計(jì)算機(jī)進(jìn)行大型數(shù)據(jù)處理。
現(xiàn)在國內(nèi)外對于深度圖像的研究還處在初級階段,基于深度圖像的客流量統(tǒng)計(jì)的研究更是不多,因此本設(shè)計(jì)具有廣闊的研究空間。
圖1 系統(tǒng)結(jié)構(gòu)圖
基于OpenMV的商店客流量監(jiān)測系統(tǒng)組成如圖1所示,OpenMV攝像頭主控是由STM32F765VI ARM Cortex M7 處理器和一個(gè)OV7725攝像頭組成的一體功能模塊,通過MicroPython語言編程運(yùn)用圖像處理算法實(shí)現(xiàn)人臉檢測,從而準(zhǔn)確的檢測到每個(gè)特定時(shí)間段商店的客流量數(shù)據(jù)。OpenMV攝像頭主控將處理后的數(shù)據(jù)通過NBIOT窄帶物聯(lián)網(wǎng)模塊使用高覆蓋的蜂窩網(wǎng)絡(luò)發(fā)送至阿里云服務(wù)器中存儲(chǔ),商店管理人員使用專門的手機(jī)APP訪問服務(wù)器獲取數(shù)據(jù),并在APP中生成每天每個(gè)時(shí)間段商店的客流量以及對應(yīng)的每個(gè)時(shí)段的客流量曲線分析圖等。
硬件系統(tǒng)是每個(gè)產(chǎn)品的首要設(shè)計(jì),基于OpenMV的商店客流量監(jiān)測系統(tǒng)的硬件組成結(jié)構(gòu)圖如圖2所示,由OpenMV攝像頭主控進(jìn)行圖像處理,處理完成后將相關(guān)數(shù)據(jù)通過串口發(fā)送到NB-IOT窄帶物聯(lián)網(wǎng)模塊,此時(shí)如果NB-Iot模塊的SIM卡槽裝載了電信的NB網(wǎng)絡(luò)數(shù)據(jù)卡后能使模塊連入到電信專有的物聯(lián)網(wǎng)蜂窩網(wǎng)絡(luò)。OpenMV攝像頭主控使用模塊專用的AT指令將數(shù)據(jù)打包后便可使用窄帶物聯(lián)網(wǎng)將數(shù)據(jù)上傳到服務(wù)器中。
圖2 硬件組成結(jié)構(gòu)圖
整個(gè)硬件系統(tǒng)的組成中OpenMV攝像頭主控起系統(tǒng)主導(dǎo)功能,通過將STM32高性能處理器最小系統(tǒng)、感光元件以及成像鏡頭高效的集成在一塊硬件電路板上來實(shí)現(xiàn)圖像功能。OpenMV攝像頭主控由于使用的STM32處理器作為主控MCU,所以底層使用的是C語言編程。OpenMV模塊上搭載了一個(gè)Micro Python解釋器(梅妍玭,傅榮.基于OpenMV的3D定位識(shí)別系統(tǒng)[J] .新技術(shù)新工藝,2018(2):50-52),因此允許開發(fā)者使用MicroPython編程語言對其進(jìn)行編程控制。MicroPython是一個(gè)Python 3的精簡和高效的實(shí)現(xiàn)編程語言,它包含了Python標(biāo)準(zhǔn)庫的一個(gè)小子集,同時(shí)優(yōu)化了在微控制器和受限環(huán)境中的運(yùn)行(潘麗靜,張虹波,周婷婷.全自動(dòng)模擬目標(biāo)搜救系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2016(28):178-180)。Python語言能更容易的在機(jī)器視覺算法中處理復(fù)雜的輸出,因此OpenMV是專為機(jī)器視覺算法中實(shí)現(xiàn)特定圖像處理而生的開源項(xiàng)目。在基于OpenMV的商店客流量監(jiān)測系統(tǒng)中可以通過板載OV7725攝像頭來獲現(xiàn)場圖像,通過機(jī)器視覺算法判斷圖像中的人臉個(gè)數(shù),從而得到實(shí)際應(yīng)用中的客流量數(shù)據(jù)進(jìn)行二次處理。
圖3 NB-IoT模塊硬件應(yīng)用框圖
NB-IoT模塊在系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)通信功能,運(yùn)營商為了物聯(lián)網(wǎng)設(shè)備應(yīng)用搭建了專門的窄帶物聯(lián)網(wǎng)蜂窩網(wǎng)絡(luò)。NB-IoT網(wǎng)絡(luò)具有高安全、廣覆蓋、低功耗、大連接和低成本(模組)等特點(diǎn),專門用于對帶寬要求比較小以及對系統(tǒng)功耗要求低的場合,例如智能抄表、智慧農(nóng)業(yè)等應(yīng)用。本文選用的NB-Iot模塊是WH-NB75,模塊硬件應(yīng)用框圖如圖3所示,為了保證網(wǎng)絡(luò)的連接,用戶層需要通過SIM卡槽提供專用的NB網(wǎng)絡(luò)數(shù)據(jù)卡以及通過POWER接口提供電源,而OpenMV攝像頭主控實(shí)際與NB-IoT模塊進(jìn)行連接使用的是TTL串口,OpenMV攝像頭主控根據(jù)WH-NB75模塊的通信協(xié)議使用AT指令來通過串行通信實(shí)現(xiàn)網(wǎng)絡(luò)連接以及數(shù)據(jù)收發(fā)功能。
OpenMV攝像頭主控在系統(tǒng)中主要完成客流量檢測以及數(shù)據(jù)傳輸功能,其中客流量檢測通過機(jī)器視覺算法來判斷是否有人進(jìn)入商店,數(shù)據(jù)傳輸則是通過向NB-IoT模塊發(fā)送AT指令來聯(lián)網(wǎng)以及將處理后的數(shù)據(jù)發(fā)送到阿里云服務(wù)器中存儲(chǔ)。
圖4 OpenMV攝像頭主控軟件流程圖
OpenMV攝像頭主控軟件開始后首先進(jìn)行系統(tǒng)初始化操作,完成人臉檢測需要用到的Haar Cascade特征檢測算法庫函數(shù)的初始化以及串口初始化,后續(xù)才能調(diào)用算法來檢測人臉以及使用串口相關(guān)收發(fā)函數(shù)與NB-IoT模塊進(jìn)行通信。初始化完成后通過板載攝像頭進(jìn)行現(xiàn)場照片的拍攝,并對照片進(jìn)行人臉檢測。如果在檢測步驟中檢測到人臉則通過累加來獲取客流量數(shù)據(jù),然后將數(shù)據(jù)通過NB-IoT模塊發(fā)送到阿里云服務(wù)器中,發(fā)送完成后再次進(jìn)行下一次拍攝檢測。如果在檢測步驟中沒有發(fā)現(xiàn)人臉則直接進(jìn)行下一次拍攝檢測。
在聯(lián)網(wǎng)應(yīng)用設(shè)計(jì)中,云服務(wù)器常用于數(shù)據(jù)的中轉(zhuǎn)及存儲(chǔ)。阿里云的云服務(wù)器更支持用戶以API的方式來靈活構(gòu)建一個(gè)具備伸縮性的服務(wù)器架構(gòu)(陳波.阿里云服務(wù)綜覽-用API控制你的云端服務(wù)器[J].程序員,2012(2):I0010-I0015)。阿里云服務(wù)器在設(shè)計(jì)中實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)以及與設(shè)備、手機(jī)APP的交互功能,因此需要編程實(shí)現(xiàn)服務(wù)器的相關(guān)功能,服務(wù)器程序使用Java語言編寫。在基于OpenMV的商店客流量監(jiān)測系統(tǒng)中需要建立一個(gè)TCP服務(wù)器供OpenMV設(shè)備以及管理員手機(jī)APP連接,由于服務(wù)器仍需要將設(shè)備發(fā)送過來的客流量數(shù)據(jù)保存,因此需要在服務(wù)器程序中搭建mysql數(shù)據(jù)庫來實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。
阿里云服務(wù)器軟件流程圖如圖5所示,服務(wù)器啟動(dòng)后首先啟動(dòng)TCP服務(wù),設(shè)置供客戶端連接的端口號等參數(shù)后實(shí)行遠(yuǎn)程監(jiān)聽,TCP服務(wù)器啟動(dòng)完成后檢測OpenMV設(shè)備是否連接到服務(wù)器,如果設(shè)備已連接則獲取設(shè)備發(fā)送的客流量數(shù)據(jù)存儲(chǔ)到mysql數(shù)據(jù)庫中。然后檢測手機(jī)APP是否連接到服務(wù)器,如果手機(jī)APP已連接則向其發(fā)送mysql數(shù)據(jù)庫中的客流量數(shù)據(jù)。完成設(shè)備以及手機(jī)APP的連接檢測處理則進(jìn)入下一輪檢測處理,并不斷循環(huán)。
圖5 阿里云服務(wù)器軟件流程圖
手機(jī)APP主要完成服務(wù)器的連接、數(shù)據(jù)獲取以及數(shù)據(jù)應(yīng)用操作,本設(shè)計(jì)中主要面向安卓手機(jī)用戶,使用Java語言編寫。Java作為一種完全面向?qū)ο蟮恼Z言,擁有安全、健壯、分布、可移植等多種優(yōu)點(diǎn)(張旭輝.基于安卓系統(tǒng)的APP開發(fā)技術(shù)探析[J].電子制作,2016(14):34)。手機(jī)APP功能組成圖如圖6所示,手機(jī)APP是面向管理員用戶的數(shù)據(jù)應(yīng)用端,因此首先需要保證的是服務(wù)器連接功能。在APP上實(shí)現(xiàn)TCP客戶端來連接阿里云服務(wù)器,連接成功后獲取客流量數(shù)據(jù)進(jìn)行處理??土髁坎樵児δ苁钦麄€(gè)設(shè)計(jì)最基本和最重要的功能,通過手機(jī)APP客戶查看各個(gè)時(shí)間段商店的客流量數(shù)據(jù)。而歷史曲線分析功能則是在獲取了一段時(shí)間的客流量數(shù)據(jù)后生成的更直觀的監(jiān)測方式。成交率分析功能則需要管理員用戶輸入每日的成交人數(shù)來進(jìn)行二次計(jì)算。
圖6 手機(jī)APP功能組成圖
表1 系統(tǒng)測試數(shù)據(jù)
完成了整個(gè)系統(tǒng)的軟硬件設(shè)計(jì)后需要通過大量測試以及數(shù)據(jù)分析來驗(yàn)證系統(tǒng)是否能投入實(shí)際應(yīng)用中,首先將設(shè)備固定在天花上,攝像頭正對門口,裝載好NB網(wǎng)絡(luò)數(shù)據(jù)卡后上電,通過改變每次同時(shí)通過門口的人數(shù)后觀看手機(jī)APP實(shí)際檢測的人數(shù)變化,從而獲取不同人數(shù)情況下多次檢測的正確率,并將相關(guān)數(shù)據(jù)記錄表。在通過人數(shù)分別為1-8個(gè),每次改變?nèi)藬?shù)后均保證檢測次數(shù)為100次,得到系統(tǒng)測試數(shù)據(jù)如表1所示。由表1的測試數(shù)據(jù)分析可以看出在通過人數(shù)為1-3人時(shí)系統(tǒng)能保證100%的檢測正確率,而通過人數(shù)增加到4-5人時(shí)檢測正確率雖然有所下降,但仍然保持在95%以上。而當(dāng)通過人數(shù)增加到6人以上時(shí)檢測正確率有較大程度的降低,因此整個(gè)系統(tǒng)的在同時(shí)通過人數(shù)在1-5人時(shí)能保證較高的檢測正確率。
本文基于OpenMV攝像頭主控結(jié)合機(jī)器視覺算法來檢測人臉,并將檢測數(shù)據(jù)通過處理轉(zhuǎn)換為通過某點(diǎn)實(shí)際人流量數(shù)據(jù),結(jié)合專門的數(shù)據(jù)存儲(chǔ)服務(wù)以及管理員手機(jī)APP后能應(yīng)用到商店客流量檢測的實(shí)際場景中。整個(gè)系統(tǒng)具有低功耗、低成本以及運(yùn)行穩(wěn)定的優(yōu)點(diǎn),并且采用專有的NB-IoT窄帶物聯(lián)網(wǎng)來傳輸數(shù)據(jù),保證了多用戶并發(fā)連接的可靠性,是系統(tǒng)投入商用的基本保證。
參考:趙黎明,吳文清,劉嘉焜,基于客流量相關(guān)系數(shù)的商業(yè)街規(guī)劃抉擇研究:統(tǒng)計(jì)與決策,2006;梅妍玭,傅榮,基于OpenMV的3D定位識(shí)別系統(tǒng):新技術(shù)新工藝,2018;潘麗靜,張虹波,周婷婷,全自動(dòng)模擬目標(biāo)搜救系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn):電腦知識(shí)與技術(shù),2016;陳波,阿里云服務(wù)綜覽-用API控制你的云端服務(wù)器:程序員,2012;張旭輝,基于安卓系統(tǒng)的APP開發(fā)技術(shù)探析[J].電子制作,,2016。