石靜雯 黎海濤 郎漫雨 李勝
面對復雜的疫情,最有效避免新冠病毒傳播的手段便是盡量減少公共人群聚集的情況。在傳統的人群疏散方案中,需要針對各大人流密集的地點安排工作人員進行管理,難免會出現疏忽情況。除此之外,還極容易因突發情況出現預料之外的情況。而上述諸多原因將造成人力成本高、預警性和機動性差的情況。
基于這一背景,本項目希望設計出一種系統,提供給城市管理工作人員,在出外勤時可實時監測城市各大重要交通樞紐的人流情況,從而為各類政企單位做出快速、精準的預案。
人流密度統計原理和相關技術
前端層
隨著HTML5和CSS3語言標準的推行,讓網頁設計更加簡單、布局更加靈活、適用范圍更廣,還可以用于游戲桌面和移動應用程序的開發。本系統利用JavaScript在前端層與邏輯層間提供數據傳輸服務,通過Ajax進行頁面圖像和數據的更新。
算法調用
在本項目中需要針對3 m以上的中遠距離俯拍,以頭部作為主要基準識別目標、統計人數,以適應各類人流密集場景,同時還需要針對不規則區域的人數進行統計,并輸出渲染圖片。
在經過多種平臺的對比后,采取百度AI云平臺進行算法層的調用。百度AI人流量統計采取HTTP協議通過POST方法來與云平臺后端進行數據交互。通過申請的特定Access Token驗證后,返回對應的JSON數據。
信息儲存
在算法請求進程得到圖像數據后,采取SQLite作為終端數據庫。SQLite本身是利用C語言的體積很小,所以可以被集成到各種應用程序中,尤其是針對樹莓派這類ARM架構嵌入式的Linux系統。
使用mjpg-streamer視頻推流
在官網上將mjpg-streamer源代碼下載到樹莓派內,解壓后使用make install安裝即可,同時使用/usr/local/bin/ mjpg_streamer -p 8080啟動攝像頭網絡推流。

在啟動成功后,需要通過IP地址訪問Web端的視頻頁面:http://IP:8080/?action=stream。
程序結構設計
軟件程序主要分為5個大類,各個流程環環相扣,體現了數據在不同環節的流動過程。
前端層:前端頁面采用JavaScript動態更新HTML頁面數據,通過文本輸入框,對話框等組件完成用戶的交互功能,以實現攝像頭數據切換,預警功能。
網絡層:客戶端前端請求通過基于TCP的http協議進行傳輸。在傳輸過程中,還應該注意樹莓派的網卡帶寬流量,最新的樹莓派4B+采用了千兆無線網卡,足以應對多攝像頭的視頻推流。
視頻推流層:視頻推流通過mjpg-streamer進行推流,前端頁面通過訪問8080端口便能通過http協議傳輸視頻流數據。
百度AI請求層:后端啟動一個Python進程,定時每秒抓取攝像頭圖像傳輸給百度云平臺進行圖像識別請求,將返回的request數據存入數據庫。
前端響應層:最后向前端反饋實時更新人流量數據即可。
本文基于百度AI平臺提供的API接口,采用HTML和JavaScript作為前端語言開發人流量監測的程序,是一種實現人流量監測統計的高效方案。采用mjpg-streamer進行視頻推流的方法,具有部署方便,集成簡單等特點,通過Access Token認證后,可與百度AI云平臺交換數據。
采用開放AI云平臺的API方式實現的人流量監測系統,能夠針對業務場景快速部署開發。同時也為人流量統計算法的研究人員提供了詳實了數據對比,使其能夠快速掌握業務邏輯,并且對算法優化提供了基準。
基金項目:西北民族大學本科生科研項目(1012021XBMU21193)