羅天 柴真琦 李漢秋



關鍵詞:神經(jīng)網(wǎng)絡;目標跟蹤;智慧樓宇
實時人流量統(tǒng)計信息在智慧樓宇場景中具有重要意義,一方面可以與樓宇空調、照明等系統(tǒng)進行聯(lián)動,根據(jù)特定區(qū)域的當前人數(shù)、人流量等信息,對空調的溫度、風量等參數(shù)進行實時調整,在保證舒適環(huán)境溫度的同時降低能耗成本,實現(xiàn)節(jié)能降耗,提升能源利用率的目的;另一方面可以減少物業(yè)管理人員工作量,實現(xiàn)減員增效。
口罩佩戴檢測系統(tǒng)具備重要意義,在避免檢測人員和他人接觸感染的風險的同時,還能夠提高檢測的效率。可用于機場、地鐵、車站等人員流動密集場所的監(jiān)控系統(tǒng),檢測人們佩戴口罩的情況,也可用于小區(qū)人臉門禁、企業(yè)人臉打卡此類場景,識別進出人員是否按規(guī)范佩戴口罩。傳統(tǒng)的口罩佩戴檢測系統(tǒng)在出入口位置,可以識別到訪客口罩佩戴情況。一旦進入園區(qū)或室內,就無法進行檢測。本文擬開發(fā)一種便捷的口罩佩戴識別算法,可方便部署到園區(qū)內或室內的攝像頭,進行全方位無死角的保護。
1背景
隨著計算機視覺技術的發(fā)展,低成本視覺采集機器逐漸發(fā)展成熟,可以便捷地獲取得到大量的視頻數(shù)據(jù),為深度學習在機器視覺中的應用提供了數(shù)據(jù)支撐。深度學習在計算機視覺的各個領域一直都有很廣泛的應用,例如圖像分類、目標檢測、語義分割等。隨著大數(shù)據(jù)的不斷發(fā)展以及計算機能力的不斷提高,近年來深度學習也逐漸開始被應用于目標跟蹤領域。傳統(tǒng)的目標跟蹤方法普遍采用概率密度方法、人工設計特征等方法對圖像進行檢測,從而在視頻的每一幀中定位出感興趣的運動目標。例如使用手工設計的方向梯度直方圖特征進行跟蹤的方法,這種方法不依賴先驗知識,因此很難適應復雜的環(huán)境變化,魯棒性和精度都有待提高。相反,基于深度學習的方法可以自動從大數(shù)據(jù)中學習得到有效的特征表示,因此跟蹤效果較好。
本文提出了基于Yolo算法的人流統(tǒng)計算法,通過采用Yolo框架檢測視頻流中的人流信息,再通過目標追蹤算法實時檢測人物目標的流動方向,實時統(tǒng)計特定場景的門、過道等處的人流量信息。鑒于當前社會要求人們出行、工作時務必佩戴好口罩,本文還提出了利用計算機視覺來進行口罩佩戴檢測的一種思路,在避免檢測人員和他人接觸感染的同時還能提高檢測效率。人流統(tǒng)計算法與口罩佩戴檢測算法均考慮部署到邊緣側設備,故在保證準確度的同時亦將計算速度納入了考慮范圍。
2人流量實時統(tǒng)計模型
本文采用基于Yolov4算法進行人流量實時統(tǒng)計,主要由目標檢測與目標追蹤兩部分組成。目標檢測部分確定對象在圖像中的位置,包括Haar cascades、HOG與SVM的組合,以及基于深度學習的目標檢測器,例如FasterR-CNN,Yolo和SSD等;目標跟蹤部分獲取目標檢測得到的對象在圖像中的坐標位置,并賦予每個對象一個唯一的id,根據(jù)圖像梯度或光流等屬性追蹤目標在視頻流中的運動并預測其在下一幀中的運動方向。目標跟蹤算法包括MedianFlow、MOSSE、GO-TURN、核化相關過濾器和判別相關過濾器等。
本文在目標檢測部分采用Yolov4,該算法在平均精度和速度上,較Yolov3版本有很大提升。從本質上,Yolov4篩選了一些從Yolov3發(fā)布至今,被用在各式各樣檢測器上能夠提高檢測精度的tricks,并以Yolov4為基礎進行改進的目標檢測模型。Yolov4有五個基本組件:CBM是Yolov4網(wǎng)絡結構中的最小組件,由Conv、Bn、Mish激活函數(shù)三者組成;CBL由Cony、Bn、Leaky Relu激活函數(shù)三者組成;Res unit借鑒了Resnet網(wǎng)絡中的殘差結構,讓網(wǎng)絡可以構建的更深;CSPX借鑒了CSPNet網(wǎng)絡結構,由三個卷積層和x個Res unint模塊Concate組成;SPP采用了1×1,5×5,9x9,13×13的最大池化的方式,進行多尺度融合。作為one-stage系列算法,Yolov4在具備出色檢測速度的同時兼顧了準確的檢測精度。因部署環(huán)境為邊緣側設備,對計算復雜度要求不可過高,故在此處亦考慮過使用Yolov4-tiny版本。該版本雖然在速度上有極大的提升,但準確度有明顯下降,會對后續(xù)追蹤階段造成較大影響,最終選擇Yolov4作為檢測算法。
本文在跟蹤階段采用了中心跟蹤算法,相較于MOSSE,GOTURN,deepso~等算法,該算法對算力要求較低,可在邊緣側高效運行。該算法具體流程如下,主要分為兩個階段:
第一部分為檢測階段,檢測當前幀中是否有新的對象進入并且查看在追蹤過程中是否有對象丟失。若該對象為新進入的對象,則根據(jù)該對象的對象框創(chuàng)建一個新的對象追蹤器并賦予一個唯一id,若該對象在上一幀中已經(jīng)存在,則更新該對象的對象跟蹤器。考慮到目標檢測在計算上消耗的資源較多,因此在需要提升實時速率的時候可以每N幀運行一次。
第二部分為跟蹤階段,當不處于檢測階段時,即處于跟蹤階段。對于檢測到個每個對象,創(chuàng)建一個對象跟蹤器來跟蹤該對象在每一幀中移動時的情況。因為對象跟蹤器不可跳幀運行,故需要比對象檢測器更快,更高效。持續(xù)跟蹤階段,直到到達第N幀后,再次運行第一階段的對象跟蹤器。重復該過程直至視頻流結束。
這種方式的優(yōu)勢是可以應用高度精確的對象檢測方法,且不會產(chǎn)生過大的計算量。
跟蹤階段的中心跟蹤算法步驟如下:
(1)獲取目標對象的邊界框坐標并計算邊界框的中心。邊界框由Yolov4對象檢測器生成。獲取邊界框之后計算各個邊界框的中心坐標并賦予首次出現(xiàn)的邊界框一個唯一的id。
(2)計算當前幀新獲取的各個邊界框中心點與上一幀獲取的各個邊界框中心點的歐氏距離。對于視頻流中的每個后續(xù)幀,計算各個新的對象的邊界框中心點并確定是否可以將新的對象中心點與上一幀的對象中心點相關聯(lián)。
(3)更新已經(jīng)存在的對象的中心坐標,該算法的前提假設是給定對象會在后續(xù)幀之間移動,并且對象自身的移動距離小于該對象與其他任意對象之間的距離。因此,若將對象中心與后續(xù)幀之間的最小距離相關聯(lián),就可以更新對象跟蹤器。