石靜雯 黎海濤 郎漫雨 李勝
面對復雜的疫情,最有效避免新冠病毒傳播的手段便是盡量減少公共人群聚集的情況。在傳統(tǒng)的人群疏散方案中,需要針對各大人流密集的地點安排工作人員進行管理,難免會出現(xiàn)疏忽情況。除此之外,還極容易因突發(fā)情況出現(xiàn)預料之外的情況。而上述諸多原因?qū)⒃斐扇肆Τ杀靖?、預警性和機動性差的情況。
基于這一背景,本項目希望設計出一種系統(tǒng),提供給城市管理工作人員,在出外勤時可實時監(jiān)測城市各大重要交通樞紐的人流情況,從而為各類政企單位做出快速、精準的預案。
人流密度統(tǒng)計原理和相關技術
前端層
隨著HTML5和CSS3語言標準的推行,讓網(wǎng)頁設計更加簡單、布局更加靈活、適用范圍更廣,還可以用于游戲桌面和移動應用程序的開發(fā)。本系統(tǒng)利用JavaScript在前端層與邏輯層間提供數(shù)據(jù)傳輸服務,通過Ajax進行頁面圖像和數(shù)據(jù)的更新。
算法調(diào)用
在本項目中需要針對3 m以上的中遠距離俯拍,以頭部作為主要基準識別目標、統(tǒng)計人數(shù),以適應各類人流密集場景,同時還需要針對不規(guī)則區(qū)域的人數(shù)進行統(tǒng)計,并輸出渲染圖片。
在經(jīng)過多種平臺的對比后,采取百度AI云平臺進行算法層的調(diào)用。百度AI人流量統(tǒng)計采取HTTP協(xié)議通過POST方法來與云平臺后端進行數(shù)據(jù)交互。通過申請的特定Access Token驗證后,返回對應的JSON數(shù)據(jù)。
信息儲存
在算法請求進程得到圖像數(shù)據(jù)后,采取SQLite作為終端數(shù)據(jù)庫。SQLite本身是利用C語言的體積很小,所以可以被集成到各種應用程序中,尤其是針對樹莓派這類ARM架構嵌入式的Linux系統(tǒng)。
使用mjpg-streamer視頻推流
在官網(wǎng)上將mjpg-streamer源代碼下載到樹莓派內(nèi),解壓后使用make install安裝即可,同時使用/usr/local/bin/ mjpg_streamer -p 8080啟動攝像頭網(wǎng)絡推流。
在啟動成功后,需要通過IP地址訪問Web端的視頻頁面:http://IP:8080/?action=stream。
程序結構設計
軟件程序主要分為5個大類,各個流程環(huán)環(huán)相扣,體現(xiàn)了數(shù)據(jù)在不同環(huán)節(jié)的流動過程。
前端層:前端頁面采用JavaScript動態(tài)更新HTML頁面數(shù)據(jù),通過文本輸入框,對話框等組件完成用戶的交互功能,以實現(xiàn)攝像頭數(shù)據(jù)切換,預警功能。
網(wǎng)絡層:客戶端前端請求通過基于TCP的http協(xié)議進行傳輸。在傳輸過程中,還應該注意樹莓派的網(wǎng)卡帶寬流量,最新的樹莓派4B+采用了千兆無線網(wǎng)卡,足以應對多攝像頭的視頻推流。
視頻推流層:視頻推流通過mjpg-streamer進行推流,前端頁面通過訪問8080端口便能通過http協(xié)議傳輸視頻流數(shù)據(jù)。
百度AI請求層:后端啟動一個Python進程,定時每秒抓取攝像頭圖像傳輸給百度云平臺進行圖像識別請求,將返回的request數(shù)據(jù)存入數(shù)據(jù)庫。
前端響應層:最后向前端反饋實時更新人流量數(shù)據(jù)即可。
本文基于百度AI平臺提供的API接口,采用HTML和JavaScript作為前端語言開發(fā)人流量監(jiān)測的程序,是一種實現(xiàn)人流量監(jiān)測統(tǒng)計的高效方案。采用mjpg-streamer進行視頻推流的方法,具有部署方便,集成簡單等特點,通過Access Token認證后,可與百度AI云平臺交換數(shù)據(jù)。
采用開放AI云平臺的API方式實現(xiàn)的人流量監(jiān)測系統(tǒng),能夠針對業(yè)務場景快速部署開發(fā)。同時也為人流量統(tǒng)計算法的研究人員提供了詳實了數(shù)據(jù)對比,使其能夠快速掌握業(yè)務邏輯,并且對算法優(yōu)化提供了基準。
基金項目:西北民族大學本科生科研項目(1012021XBMU21193)