劉雪奇 ,孫勝利
(1.中國科學(xué)院上海技術(shù)物理研究所上海200083;2.中國科學(xué)院大學(xué)北京100049;3.上海科技大學(xué)上海201210;4.中國科學(xué)院紅外探測與成像技術(shù)重點實驗室上海200083)
與傳統(tǒng)的人工監(jiān)控相比,智能視頻監(jiān)控可有效地降低誤檢和漏檢概率,但目前監(jiān)控視頻中對各種異常的排查和報警大多依賴于人工,智能化的人體異常行為檢測技術(shù)還處于發(fā)展中[1]。同時由于監(jiān)控中人體和背景的復(fù)雜多樣,對于特定場景下的檢測就變的尤為困難。
對于某一特定監(jiān)控場景,涉及到的人體異常行為通常較復(fù)雜,包括目標遠近大小、重疊遮擋,背景紛亂復(fù)雜等[2]。這些都會對異常行為的檢測產(chǎn)生很大影響,通常采用的方法是先將目標通過輪廓信息從視頻序列中分割出來,然后進行特征提取,將提取到的特征與標準異常行為樣本進行比對,最后利用分類器判斷是否為異常行為[3];包括基于區(qū)域光流能量的檢測方法[4]也是先對目標進行提取然后作分析。然而對于特定場景下,人體異常行為存在復(fù)雜多樣、較難明確定義的問題,對此,一種簡單的解決方式是將人體行為分為兩類,忽略中間的過渡行為分為正常行為和異常行為。因為對于如實驗室這樣的特定場景,異常行為識別的需求可能只是是否穿戴工作服和工作帽這類簡單的分類問題,所以分為兩類可以很好的解決異常行為定義的問題。
傳統(tǒng)智能視頻分析技術(shù)由于采用人工選擇特征,存在準確率低、淺層學(xué)習(xí)無法解析大數(shù)據(jù)等問題,而深度學(xué)習(xí)可以很好地克服這些問題,使視頻分析過程中識別準確率更高、魯棒性更好、識別種類更豐富[5]。本文將深度學(xué)習(xí)應(yīng)用到監(jiān)控中的人體異常行為檢測,通過將復(fù)雜的異常行為輸入到深度神經(jīng)網(wǎng)絡(luò)YOLO中進行自動特征提取和分類,將目標提取這一步交給神經(jīng)網(wǎng)絡(luò),與之后的目標分類同時放到一個網(wǎng)絡(luò)中,利用神經(jīng)網(wǎng)絡(luò)的深層次特征提取、高精度檢測分類特性,可以將定義的異常行為準確的檢測出來,實現(xiàn)從輸入數(shù)據(jù)到輸出檢測結(jié)果的端到端的異常行為檢測。通過GPU對檢測過程進行加速,可以實現(xiàn)對監(jiān)控視頻的實時檢測。
文中選取了實驗室監(jiān)控場景進行相關(guān)的實驗研究工作,具體的方法流程如圖1所示。
圖1 實驗方法流程圖
首先要獲得監(jiān)控場景的數(shù)據(jù)視頻,通過幀截取圖像、篩選;然后根據(jù)需求對異常行為的定義用LabelImg軟件進行標定,此處標定的標簽不是為了目標提取,而是直接標定為是否異常的兩類,從而讓目標提取和分類都交給網(wǎng)絡(luò)去做,獲得網(wǎng)絡(luò)訓(xùn)練和測試的圖像數(shù)據(jù);參考YOLO的網(wǎng)絡(luò)結(jié)構(gòu),將訓(xùn)練數(shù)據(jù)輸入到Y(jié)OLO網(wǎng)絡(luò)中進行訓(xùn)練,從而直接訓(xùn)練出可以對輸入圖像或視頻數(shù)據(jù)進行判斷是否存在異常行為的網(wǎng)絡(luò)模型。
實驗所采用的數(shù)據(jù)是實驗室上網(wǎng)工作室中的監(jiān)控數(shù)據(jù)視頻,對于不規(guī)范上網(wǎng)的異常行為進行檢測。在輸入網(wǎng)絡(luò)進行訓(xùn)練之前,數(shù)據(jù)需要進行一系列處理,包括視頻的幀截取,圖像篩選,標簽標定。實際工作中用到的處理軟件有Smart Player和LabelImg,Smart Player軟件用來將視頻數(shù)據(jù)進行轉(zhuǎn)換和截取圖像;LabelImg軟件用來標定圖像標簽。
其中圖像的標簽標定涉及到對異常行為的定義,由于異常行為多樣,較難泛化為一類或兩類,因此實驗中將除了正常的上網(wǎng)行為動作以外的其他行為都定義為異常行為。例如除了正常行走和端坐,其他包括彎腰、下蹲、伸展肢體、低頭玩手機等行為都定義為異常行為。實驗中標簽分為兩類:normal和abnormal;一共標定了1146張圖像數(shù)據(jù),1000張用作訓(xùn)練數(shù)據(jù),其余的作為測試數(shù)據(jù)。
YOLO是一種新的目標檢測方法[6],由Joseph Redmon[7]等人提出,這種方法的突出優(yōu)勢在于目標檢測速度很快,同時又能保持較高的識別準確率,而且背景誤檢率低。其主要思路是將目標檢測問題看作一個回歸問題,只采用單個神經(jīng)網(wǎng)絡(luò)來回歸從整張圖的輸入到目標邊界和類別概率的輸出,實現(xiàn)端到端的直接預(yù)測,即端到端的目標檢測。本文借鑒這一回歸思想,將目標檢測網(wǎng)絡(luò)結(jié)構(gòu)YOLO應(yīng)用到分類問題,將目標區(qū)域的類別作為最終結(jié)果,把異常行為的檢測當(dāng)做回歸問題來解決。此外,YOLO的檢測速度非??欤梢赃_到45幀/s的實時檢測。
從 R-CNN 網(wǎng) 絡(luò)[8]、Fast R-CNN 網(wǎng) 絡(luò)[9]到 Faster R-CNN網(wǎng)絡(luò)[10]采用的思路都是proposal+分類(proposal提供目標位置信息,分類提供類別信息)[11-13],在VOC2007數(shù)據(jù)集上mAP能達到73.2%,精度已經(jīng)很高,但是識別速度還不夠快。YOLO采用了更為直接的思路:將整張圖作為網(wǎng)絡(luò)的輸入,直接在輸出層回歸bounding box(識別框,記作bbox)的位置和bounding box所屬的類別,從而實現(xiàn)把目標識別當(dāng)作回歸問題來解決?;谶@種回歸思想,本文將異常行為的檢測也作為回歸問題,將整張圖作為輸入,檢測出標定有是否為異常行為的bbox的圖像作為輸出。
YOLO借鑒了Google-Net分類網(wǎng)絡(luò)結(jié)構(gòu),有24個卷積層,2個全鏈接層,開始的卷積層用來提取圖像特征,全連接層用來預(yù)測輸出概率。作者還修改訓(xùn)練了YOLO的快速版本(Fast YOLO),F(xiàn)ast YOLO模型卷積層和卷積核相對較少,它只有9個卷積層和2個全連接層,最終輸出為 7×7×(5×2+20)的張量(因為有20類)[7]。這樣的網(wǎng)絡(luò)結(jié)構(gòu)對于人體行為特征的提取和對是否異常的分類同樣適用,對于實驗中的兩類標簽,輸出就是7×7×(5×2+2)的張量。
圖2 實驗訓(xùn)練過程的基本原理圖
實驗網(wǎng)絡(luò)訓(xùn)練中的具體流程如下:
1)將處理過的圖像進行resize處理,調(diào)整圖像尺寸為448×448作為整個神經(jīng)網(wǎng)絡(luò)的輸入。
2)通過運行神經(jīng)網(wǎng)絡(luò)得到一些bbox坐標、bbox中包含的人體目標(Object)的置信度和類別概率3種信息:
將輸入的一幅圖像分成S×S個網(wǎng)格,如圖2虛框內(nèi)將圖像分成7×7個網(wǎng)格,當(dāng)某Object的中心落在這個網(wǎng)格中,那么這個網(wǎng)格就負責(zé)預(yù)測這個Object。
每個網(wǎng)格都要預(yù)測一個類別信息記為C類,那么對于S×S個網(wǎng)格,每個網(wǎng)格既要預(yù)測B個bbox,同時還要預(yù)測C個類別,所以輸出就是 S×S×(5×B+C)的一個張量,對應(yīng)圖2中輸出的張量就是7×7×(5×2+2)。
每個網(wǎng)格要預(yù)測B個bbox(圖2中為2個),而每個bbox又要預(yù)測x,y,w,h和confidence共5個值。其中x,y是bbox中心位置的坐標,并且其值被歸一化到[0,1];w,h是bbox的寬度和高度,同樣歸一化到[0,1];每個bbox除了要回歸自身的位置之外,還要附帶預(yù)測一個confidence值。這個confidence代表了所預(yù)測的bbox中含有Object的置信度和這個bbox預(yù)測的有多準兩種信息,計算方式如下:
其中如果有Object落在一個網(wǎng)格里,等式右邊第一項取1,否則取0。第二項是預(yù)測的bbox和實際的標簽框之間的IOU值[7]。
3)在測試的時候,將每個網(wǎng)格預(yù)測的類別信息和bbox預(yù)測的confidence信息相乘,就得到每個bbox的具體類別置信分數(shù):
最后通過設(shè)置閾值,濾掉得分低的bbox,對保留的bbox進行非極大值抑制處理,就得到最終的檢測結(jié)果。
圖2為實驗訓(xùn)練過程的基本原理圖,區(qū)別于傳統(tǒng)異常行為檢測方法先進行目標識別然后進行分類,進而對異常行為進行檢測,本文直接將兩個步驟都交給YOLO網(wǎng)絡(luò)去做,從而實現(xiàn)了輸入一張圖像直接輸出一張經(jīng)過網(wǎng)絡(luò)預(yù)測有檢測結(jié)果的圖像,即端到端的檢測過程。而通過GPU的加速,對于輸入的視頻流可以實時的顯示異常行為的檢測框。
硬件條件:DELL PowerEdge T630服務(wù)器(32G內(nèi)存);兩個CPU-E5-2620 v4;4個GTX1080Ti;
軟件條件:Ubuntu14.04系統(tǒng);CUDA 8.0;Python 2.7.6;OpenCV 2.4.13。
YOLO使用均方和誤差作為loss函數(shù)來優(yōu)化模型參數(shù),即網(wǎng)絡(luò)輸出的 S×S×(5×B+C)維向量與真實圖像的對應(yīng)S×S×(5×B+C)維向量的均方和誤差。實驗中訓(xùn)練的網(wǎng)絡(luò)的loss變化情況如圖3所示,可以看到隨著batches(訓(xùn)練批次)的增加,average loss(平均損失)在不斷減小,逐漸趨于0,即整個網(wǎng)絡(luò)結(jié)果趨于收斂。
圖3 訓(xùn)練網(wǎng)絡(luò)的平均損失變化
文中在4個GTX1080Ti顯卡加速的實驗條件下,對網(wǎng)絡(luò)進行訓(xùn)練,最終獲得網(wǎng)絡(luò)權(quán)重文件,進而對圖像和視頻數(shù)據(jù)進行測試。實驗中采用了1000張標定圖像作為訓(xùn)練圖像數(shù)據(jù),146張作為測試數(shù)據(jù),同時也對YOLO網(wǎng)絡(luò)結(jié)構(gòu)的簡化版Fast YOLO和升級版YOLOv2[14]進行了訓(xùn)練和測試,部分圖像測試對比結(jié)果如圖4所示。圖中3行圖像分別對應(yīng)Fast YOLO、YOLO和YOLOv2的檢測結(jié)果。實驗中紅框的標簽是normal,即正常行為;綠框的標簽是abnormal,即異常行為。圖4中第1列圖中為紅框,第2列、第3列為綠框,第4列中,左邊為綠框,右邊為紅框,從第1、2列能明顯的看出YOLO和YOLOv2網(wǎng)絡(luò)模型框出的檢測邊界更準確。同時結(jié)果也充分說明了,主要用作目標檢測的YOLO網(wǎng)絡(luò)結(jié)構(gòu)對于直接解決人體異常行為這種細分的分類問題同樣適用。
圖4 Fast YOLO、YOLO和YOLOv2檢測結(jié)果對比圖
文中采用了 IOU[15-16]、召回率(Recall)和精確率(Precision)[17]3個評價指標來對實驗結(jié)果進行評價。
在目標檢測的評價體系中,有一個檢測評價函數(shù)叫做intersection-over-union(IOU),在實驗中簡單來講就是模型產(chǎn)生的目標窗口和原來標記窗口的交疊率。即檢測邊框與真實邊框(Ground Truth)的交集比上它們的并集,即為檢測的準確率IOU:
召回率和精確度則采用如下方式計算:
TP——True Positive(真正,TP)被模型預(yù)測為正的正樣本,可以稱作判斷為真的正確率;
FP——False Positive(假正,F(xiàn)P)被模型預(yù)測為正的負樣本,可以稱作誤報率;
FN——False Negative(假負 ,F(xiàn)N)被模型預(yù)測為負的正樣本,可以稱作漏報率。
表1 3種網(wǎng)絡(luò)結(jié)構(gòu)檢測結(jié)果對比
表1中列出了Fast YOLO、YOLO和YOLOv23種網(wǎng)絡(luò)結(jié)構(gòu)的檢測對比結(jié)果??梢钥闯?,簡化版本的Fast YOLO網(wǎng)絡(luò),各項指標都最低,因為網(wǎng)絡(luò)結(jié)構(gòu)相對簡化,在犧牲了檢測精度的情況下,檢測速度相對于其他兩種要稍快些。而從IOU參數(shù)來看,其他兩種網(wǎng)絡(luò)結(jié)構(gòu)比簡化版本有很大提高,所以相對應(yīng)圖4中的檢測框也能更準確的框定檢測目標。YOLO和YOLOv2兩種網(wǎng)絡(luò)模型召回率接近100%,精確率可以達到96%以上。此外,在本文實驗采用顯卡GTX 1080Ti加速的條件下,對于視頻流的檢測速度可以達到30FPS左右。
圖5 Precision-Recall(P-R)曲線圖
圖6 YOLO模型P-R曲線細節(jié)圖
通過調(diào)整閾值可以讓網(wǎng)絡(luò)檢測出更多結(jié)果(檢測框),進而改變準確率或召回率的值,而評估一個分類器的性能,比較好的方法就是:觀察當(dāng)閾值變化時,Precision與Recall值的變化情況。如果一個分類器的性能比較好,那么它應(yīng)該有如下的表現(xiàn):讓Recall值增長的同時保持Precision的值在一個很高的水平。從圖5中可以看到,F(xiàn)ast YOLO網(wǎng)絡(luò)模型的P-R曲線隨著Recall值增長,Precision的值呈緩慢下降趨勢,直到接近90%的召回率時下降為0;而YOLO網(wǎng)絡(luò)模型當(dāng)Recall值增長的時候,從圖6可以看出,Precision的值一直處于96%以上;YOLOv2網(wǎng)絡(luò)模型的P-R曲線跟YOLO網(wǎng)絡(luò)模型的曲線很接近,沒有在圖中畫出,精確率一直處于97%以上。因此,訓(xùn)練出的網(wǎng)絡(luò)模型分類器可以很好地對異常行為進行檢測。
本文通過對特定監(jiān)控場景下對異常行為的定義需求標定數(shù)據(jù),基于YOLO網(wǎng)絡(luò)模型將標定的異常行為數(shù)據(jù)直接輸入網(wǎng)絡(luò)中進行訓(xùn)練,不將目標檢測作為輸出而直接得到是否異常的分類結(jié)果,從而讓網(wǎng)絡(luò)自動提取特征并分類,實現(xiàn)端到端的檢測系統(tǒng)。最終實驗結(jié)果表明這種方法可以很好地檢測出監(jiān)控視頻中復(fù)雜的人體異常行為,并能夠達到較高的檢測精度。此外,這種方法可以遷移到不同監(jiān)控場景,針對于特定場景、特定需求,可以達到很好地檢測效果,對于滿足不同行業(yè)的個性化需求方面具有重要意義。