吳春香,吳 戀
(1.貴州大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,貴州 貴陽 550025;2.貴州師范學(xué)院,貴州 貴陽 550018)
智能監(jiān)控是安防中的重要組成部分,已廣泛應(yīng)用于變電站[1]、建筑工地[2]、監(jiān)獄[3]、鐵路等[4-6]場所。人員入侵作為視頻監(jiān)控的重要內(nèi)容,越來越受行業(yè)重視。為了更高效地進行人員入侵檢測,研究開發(fā)自動化、高效的智能入侵防護系統(tǒng)非常必要[7]。
目前主流的前景目標提取方法是基于圖像處理的背景建模法[8-9],該方法易受到光照突變和樹葉擺動等背景因素的干擾造成穩(wěn)定性差。而基于深度學(xué)習(xí)的行人檢測算法可以不受光照突變和樹葉擺動等背景的影響,主要分為one-stage和two-stage[10]兩類。其中one-stage類方法有SSD[11-12]系列和yolo[13]系列,two-stage類方法有faster-rcnn[14]、mask-rcnn等[15]。但two-stage類算法參數(shù)較多,無法滿足實時性要求[16]。針對該問題,該文提出了一種不受光照和樹葉擺動因素干擾,精度高、魯棒性強的實時人員入侵檢測算法。該算法采用數(shù)據(jù)流簡單且計算速度快的yolov3[17-18]對行人進行識別與定位,并針對不同監(jiān)控角度下的行人分別將行人矩形框的上邊框中心點、下邊框中心點和矩形框中心點作為入侵算法檢測點,解決了在入侵檢測中多監(jiān)控角度問題和高度敏感區(qū)域的檢測問題。傳統(tǒng)的入侵檢測方法是用檢測到的運動目標對單幀圖片建立入侵判斷規(guī)則,這會引起高誤報率。針對這一問題,利用目標連續(xù)多幀位置均值作為判斷依據(jù),將目標連續(xù)多幀位置分為兩段,分別求位置均值作為判斷依據(jù),再與當前幀的位置點結(jié)合進行判斷,當檢測目標連續(xù)多幀位于禁區(qū)內(nèi)啟動報警。傳統(tǒng)的點在區(qū)域內(nèi)判斷準則[19-20]誤判率高或無法滿足實時性要求,所以文中采用判斷準確率較高、計算簡單的向量叉積公式替代。將以上各部分整合,獲得區(qū)域入侵檢測算法和越線入侵檢測算法。
文中方法描述如下:針對多監(jiān)控角度下的行人,分別采用行人矩形框的上邊框中心點、下邊框中心點和矩形框中心點作為入侵算法的行人位置點;將行人連續(xù)幀位置點求均值作為判斷依據(jù),即選擇離當前幀最近的L個連續(xù)幀中位置點判斷,對前L/2個位置點和后L/2個位置點分別求均值作為判斷依據(jù),并與判斷當前幀的位置點相結(jié)合,最后根據(jù)行人連續(xù)幀處于禁區(qū)內(nèi)報警;通過設(shè)計區(qū)域入侵檢測算法和越線入侵檢測算法達到系統(tǒng)智能監(jiān)控的目的。
對于系統(tǒng)的設(shè)計與安排如下:系統(tǒng)設(shè)計分為服務(wù)器端和客戶端,服務(wù)器端運行yolov3檢測行人,并針對不同監(jiān)控角度選擇合適的行人位置點送入?yún)^(qū)域入侵檢測算法或越線檢測算法內(nèi),對入侵幀用數(shù)據(jù)庫存儲。瀏覽器作為客戶端,分別設(shè)計以下模塊:(1)檢測相機的基本信息設(shè)置模塊,如相機IP、相機用戶名、相機密碼。(2)檢測像機數(shù)量設(shè)置模塊。(3)檢測線與檢測區(qū)域繪制模塊。(4)檢測結(jié)果實時顯示模塊,如攝像機IP、入侵類型、入侵時間。
客戶端提供檢測相機信息、檢測線、檢測區(qū)域等數(shù)據(jù)傳送給服務(wù)器,服務(wù)器執(zhí)行入侵檢測算法并在客戶端實時顯示檢測結(jié)果。
針對不同監(jiān)控角度下用yolov3檢測的行人,分別采用矩形框上邊框中心點、下邊框中心點以及矩形框中心點作為行人的位置點來檢測。針對禁區(qū)為窗戶等離地面有一定距離的豎直區(qū)域,行人入侵初期沒有完全處于禁區(qū),若用背景建模法會出現(xiàn)漏報和精度低的問題,提出根據(jù)攝像角度和禁區(qū)與地面距離設(shè)置行人矩形框的上邊框中心點或行人矩形框的中心點作為位置點檢測;針對地面禁區(qū)采用行人矩形框中心點檢測會出現(xiàn)行人已經(jīng)進入禁區(qū)而系統(tǒng)判斷為非入侵狀態(tài)的問題,采用行人矩形框下邊框中心點檢測;針對高度敏感區(qū)域中攝像范圍狹窄全為禁區(qū)場景,可根據(jù)需求設(shè)置行人檢測框下邊框中心點或上邊框中心點為檢測點。
為解決采用單幀圖片對檢測到的行人進行入侵判斷準確率不高和相似物干擾引起誤判的問題,提出采用目標連續(xù)幀位置點求均值作為判斷依據(jù)。具體規(guī)則如下:設(shè)運動目標的跟蹤鏈長度(運動步數(shù))為L,考慮最近的2M個位置點,根據(jù)L的大小使用分段函數(shù)來求平均位置點的值,通過實驗最終選擇4為斷點且斷點可被修改。
(a)若L<4,則目標不會有入侵發(fā)生,因為跟蹤鏈過小。
(b)若4≤L<2M,則通過當前的第1~L/2個位置點的均值1和第L/2+1~L個位置點的均值2來判斷入侵。
(c)若L≥2M,則通過當前的1~M個位置點的均值1和M+1~2M個位置點的均值2來判斷入侵。


(x2-xQ)·(y1-yQ)
(1)
2.4.1 區(qū)域入侵
根據(jù)離當前檢測幀最近的2m幀的入侵狀態(tài)進行報警與解除判斷。當離檢測幀最近的m幀處于入侵狀態(tài)而較遠的m幀處于非入侵狀態(tài)且報警次數(shù)沒有達到閾值時,則報警產(chǎn)生;當離檢測幀最近的m幀處于非入侵狀態(tài)而較遠的m幀處于入侵狀態(tài)時,則報警解除;當最近的2m幀都處于非入侵狀態(tài)則不產(chǎn)生報警。具體的區(qū)域入侵報警與解除條件說明如表1所示。
2.4.2 越線入侵
根據(jù)離當前檢測幀最近的2m幀的入侵狀態(tài)進行報警與解除判斷。如果離當前檢測幀最近的前m幀都處于入侵狀態(tài)而后m幀處于非入侵狀態(tài)且報警沒有達到閾值時,單向越線報警和雙向越線報警產(chǎn)生;如果離當前檢測幀最近的前m幀處于非入侵狀態(tài)而后m幀處于入侵狀態(tài)且報警沒有達到閾值,則單線越線報警解除,雙向越線報警產(chǎn)生;如果離當前檢測幀最近的前m幀處于非入侵狀態(tài)而后m幀處于入侵狀態(tài)且報警達到閾值,單向越線報警與雙向越線報警解除。具體的越線入侵報警解除與條件說明如表2所示。

表1 區(qū)域入侵報警與解除產(chǎn)生條件

表2 越線入侵報警與解除產(chǎn)生條件
整體的入侵檢測流程為:針對具體監(jiān)控角度和場景,對yolov3檢測到的行人進行位置點的選取與保存,將所得位置送入?yún)^(qū)域(越線)入侵算法中判斷,當被判斷為入侵時對入侵結(jié)果進行存儲,其流程如圖1所示。
2.5.1 區(qū)域入侵算法
通過跟蹤鏈中的位置均值點與區(qū)域入侵報警與解除產(chǎn)生條件可寫出區(qū)域入侵檢測算法如下:首先利用跟蹤鏈中每個跟蹤節(jié)點位置均值點判斷入侵狀態(tài),再用當前幀的位置點進行區(qū)域入侵狀態(tài)的判斷,如果目標被判斷為入侵狀態(tài)則修改目標狀態(tài)并累計入侵幀,當入侵幀數(shù)達到閾值,則不再進行報警提示。具體算法如下所示:
For 遍歷跟蹤鏈中的每個跟蹤節(jié)點
If 跟蹤目標沒有處于入侵狀態(tài)
If 跟蹤目標被判斷準則判斷為入侵狀態(tài)
修改目標為入侵狀態(tài),并累加入侵幀數(shù)
If 跟蹤目標處于合并狀態(tài)
在跟蹤目標上顯示所有參與合并的目標的信息
else //跟蹤目標沒有處于合并狀態(tài)
在跟蹤目標上顯示其相關(guān)信息
End
Endif
else//跟蹤目標處于入侵狀態(tài)
if 跟蹤目標被判斷準則判斷為仍處于入侵狀態(tài)
if 報警次數(shù)沒有達到入侵閾值
累加入侵幀數(shù)
if 跟蹤目標處于合并狀態(tài)
在跟蹤目標上顯示所有參與合并的目標的信息
else//跟蹤目標沒有處于合并狀態(tài)
在跟蹤目標上顯示其相關(guān)信息
Endif
else//報警次數(shù)達到閾值
解除入侵狀態(tài)
Endif
else//跟蹤目標沒有處于入侵狀態(tài)
解除入侵狀態(tài)
Endif
Endif
Endfor

圖1 入侵檢測流程
2.5.2 越線入侵算法
與區(qū)域入侵算法結(jié)構(gòu)相似,越線入侵分為單線越線入侵與雙線越線入侵。根據(jù)報警與解除條件可得越線入侵檢測算法如下:首先也是遍歷跟蹤節(jié)點并利用位置均值點作為判斷依據(jù),判斷當前幀是否處于單線越線狀態(tài)或雙向越線狀態(tài),最后根據(jù)目標連續(xù)幀是否入侵和是否達到報警閾值來產(chǎn)生和解除報警。具體算法如下所示:
For 遍歷跟蹤鏈中的每個跟蹤節(jié)點
If 跟蹤目標沒有處于越線狀態(tài)
If 使用判斷準則判斷跟蹤目標為越線入侵狀態(tài)
修改目標為越線入侵狀態(tài),并累加越線入侵幀數(shù)
If 跟蹤目標處于合并狀態(tài)
跟蹤目標上顯示所有參與合并的目標的信息
else//跟蹤目標沒有處于單向越線入侵狀態(tài)
if 當前為雙向越線模式
if 跟蹤目標被判斷準則判斷為從入侵區(qū)域進入非入侵區(qū)域
產(chǎn)生雙向越線報警,并累加報警幀數(shù)
If 跟蹤目標處于合并狀態(tài)
在跟蹤目標上顯示所有參與合并的目標的信息
else //跟蹤目標沒有處于合并狀態(tài)
在跟蹤目標上顯示其相關(guān)信息
End
Endif
Endif
Endif
else //跟蹤目標處于越線狀態(tài)
if 跟蹤目標被判斷準則判斷為仍處于越線入侵狀態(tài)
if 報警次數(shù)沒有達到越線入侵閾值
累加報警幀數(shù)
if 跟蹤目標處于合并狀態(tài)
在跟蹤目標上顯示所有參與合并的目標的信息
else//跟蹤目標沒有處于合并狀態(tài)
在跟蹤目標上顯示其相關(guān)信息
Endif
else//報警次數(shù)達到閾值
解除越線入侵狀態(tài)
Endif
else//跟蹤目標沒有處于單向越線入侵狀態(tài)
if 當前為雙向越線模式
if 報警次數(shù)沒有達到閾值
累加報警幀數(shù)
if 跟蹤目標處于合并狀態(tài)
在跟蹤目標上顯示所有參與合并的目標的信息
else//跟蹤目標沒有處于合并狀態(tài)
在跟蹤目標上顯示其相關(guān)信息
Endif
else//報警次數(shù)達到閾值
解除報警狀態(tài)
Endif
else//當前為單向越線模式
解除入侵狀態(tài)
Endif
Endif
Endif
Endfor
yolov3的微調(diào):因訓(xùn)練好的yolov3模型是對20種類別進行檢測與識別,其中人的類別序列號為0,所以將相機檢測圖片幀修改為yolov3特定輸入格式并送入神經(jīng)網(wǎng)絡(luò)中,對輸出進行當且僅當類別序列號為0時輸出其位置框與分數(shù)的設(shè)置操作,得到的幀作為入侵算法的輸入幀。
區(qū)域入侵檢測模塊:客戶端:用戶通過設(shè)置網(wǎng)絡(luò)攝像頭的相關(guān)信息并用鼠標進行區(qū)域的繪制后將信息傳遞給服務(wù)器端,并實時查看入侵檢測結(jié)果和對入侵證據(jù)的調(diào)取。服務(wù)端:將客戶端的網(wǎng)絡(luò)攝像頭獲取的視頻信息與禁區(qū)信息送入入侵算法執(zhí)行,并將入侵證據(jù)存儲于數(shù)據(jù)庫中。
越線入侵檢測模塊:客戶端:用戶設(shè)置網(wǎng)絡(luò)攝像頭信息并用鼠標在視頻中畫出警戒線后系統(tǒng)自動將信息傳遞給服務(wù)器端,并實時查看檢測結(jié)果與調(diào)取入侵證據(jù)。服務(wù)端:將客戶端的信息送入入侵檢測程序執(zhí)行并將入侵證據(jù)存入數(shù)據(jù)庫。
數(shù)據(jù)庫模塊:為存儲入侵檢測結(jié)果,利用MySQL數(shù)據(jù)庫對其所用的網(wǎng)絡(luò)攝像頭信息、區(qū)域信息以及入侵信息進行區(qū)域入侵和越線入侵證據(jù)的存儲,具體的系統(tǒng)功能結(jié)構(gòu)如圖2所示。
系統(tǒng)部署:為實現(xiàn)系統(tǒng)線上實時應(yīng)用,采用Flask框架與Gunicorn代理進行系統(tǒng)的線上部署。
為驗證該算法,在光照突變場景、光照不足的夜間場景、背景中樹葉擺動場景和行人檢測數(shù)據(jù)集(http://cvlab.epfl.ch)上進行實驗。為進一步驗證該算法,分別用混合高斯背景建模法、ViBe和三幀差法這三個經(jīng)典算法與該算法進行對比。實驗結(jié)果如圖3所示。其中圖(a)、(b)是光照充足的行人檢測數(shù)據(jù)集上的測試結(jié)果,圖(c)、(d)是光照發(fā)生突變的測試結(jié)果,圖(e)、(f)是光照不足的夜間測試結(jié)果,圖(g)、(h)是樹葉擺動下的測試結(jié)果。本實驗主要檢測對象是行人,針對不同監(jiān)控角度采用不同位置點的行人通過禁區(qū)或靠近警戒線,系統(tǒng)根據(jù)對應(yīng)算法選擇報警。為進一步驗證該算法的有效性,在光照充足的白天狀態(tài)與經(jīng)典算法中的混合高斯背景法、Vibe法與三幀差法進行對比后的結(jié)果如表3所示。

圖2 系統(tǒng)結(jié)構(gòu)

圖3 入侵實驗結(jié)果 表3 算法對比 %

算法準確率虛警率漏警率混合高斯背景81.7321.9417.53ViBe82.8918.7315.34三幀差法84.5817.9513.86文中算法89.7315.8010.55
由表3可知,文中算法效果優(yōu)于混合高斯背景建模法、ViBe和三幀差法。這是因為混合高斯背景建模只考慮了單個像素在時間上的特性,當動態(tài)場景如樹葉擺動使背景發(fā)生突變時,會產(chǎn)生像素差值,從而導(dǎo)致將擺動的樹葉判斷為前景目標;ViBe算法中光照突然變化時會引起背景像素值發(fā)生改變,算法誤將部分背景判斷為前景而造成虛警現(xiàn)象;采用三幀差法丟掉了相互獨立的目標輪廓,造成目標輪廓斷裂和空洞,導(dǎo)致前景目標的提取不正確。
通過實驗數(shù)據(jù)可以看出,文中算法檢測效率更高,既能在光照突變場景下實現(xiàn)對行人的檢測并判斷,也能在光照不足的夜間場景完成入侵檢測,適用性廣泛。最主要的原因是文中算法用yolov3提取前景目標而沒有涉及像素角度的背景建模,所以對光照突變和樹葉擺動這種背景突變有強魯棒性。但該算法也存在一定的實驗誤差,主要體現(xiàn)為以下兩種現(xiàn)象,一是行人與行人之間高度重合,造成行人識別不完整或漏識別,二是對距離監(jiān)控攝像頭較遠的小目標行人會出現(xiàn)漏檢。其主要的原因是yolov3算法對遮擋度高的行人和小目標行人的檢測準確率低,將來的工作也將致力于這兩方面的改進。
研究了一種區(qū)域入侵算法和越線入侵算法,該算法選擇檢測到的行人框三個不同點作為位置點,擴大了不同監(jiān)控角度適用性。通過行人多幀位置點取平均值作為入侵判斷依據(jù),結(jié)合當前幀行人位置點進行入侵狀態(tài)判斷,提高了判斷準確率。實驗結(jié)果表明,該算法相對傳統(tǒng)算法有明顯優(yōu)勢,解決了傳統(tǒng)方法容易受到光照突變和相似物干擾引起誤報這一問題,魯棒性強、實時性高,系統(tǒng)結(jié)構(gòu)簡單,可廣泛應(yīng)用于各種視頻監(jiān)控場景。