閆保中,劉忠強(qiáng)
哈爾濱工程大學(xué) 智能科學(xué)與工程學(xué)院, 黑龍江 哈爾濱 150001
隨著“平安城市”等建設(shè)項(xiàng)目的推進(jìn),我國(guó)安防行業(yè)得到了快速發(fā)展,視頻監(jiān)控系統(tǒng)未來(lái)將向智能化方向邁進(jìn)。但是目前大部分的監(jiān)控系統(tǒng)仍采用傳統(tǒng)的依賴人工監(jiān)視的方式,不僅效率較低,而且容易對(duì)異常行為發(fā)生漏檢,可能會(huì)造成嚴(yán)重的后果[1]。因此,研究一種能夠自動(dòng)檢測(cè)出監(jiān)控視頻中異常行為的算法,對(duì)于加強(qiáng)城市安全具有重要意義。
對(duì)于監(jiān)控視頻異常行為檢測(cè)問(wèn)題,國(guó)內(nèi)外學(xué)者提出了多種算法,按發(fā)展階段可分為基于傳統(tǒng)機(jī)器學(xué)習(xí)的算法和基于深度學(xué)習(xí)的算法兩類。傳統(tǒng)算法采用手工提取特征的方式,根據(jù)對(duì)異常判斷準(zhǔn)則的不同可分為能量法、聚類法、重構(gòu)法和推斷法[2]。傳統(tǒng)算法需要手工設(shè)計(jì)特征,往往針對(duì)特定的任務(wù),因而設(shè)計(jì)出的模型泛化能力較差。而基于深度學(xué)習(xí)的算法能夠自動(dòng)學(xué)習(xí)特征,目前主要采用行為識(shí)別模型對(duì)異常行為進(jìn)行檢測(cè),主流的網(wǎng)絡(luò)結(jié)構(gòu)包括雙流卷積網(wǎng)絡(luò)(twostream convolutional network)[3]、3D 卷積網(wǎng)絡(luò) (3D convolutional network, C3D)[4]、 卷 積 神 經(jīng) 網(wǎng) 絡(luò)(convolutional neural networks, CNN)與 長(zhǎng) 短 時(shí) 記憶 (long short-term memory, LSTM)網(wǎng)絡(luò)結(jié)合的網(wǎng)絡(luò)[5]等。這些算法計(jì)算量很大,難以實(shí)現(xiàn)實(shí)時(shí)檢測(cè),無(wú)法滿足監(jiān)控系統(tǒng)的實(shí)際需求。
針對(duì)上述問(wèn)題,本文采用YOLOv4[6]作為基礎(chǔ)模型,并從檢測(cè)的精度和速度兩方面改進(jìn)原網(wǎng)絡(luò),用于對(duì)監(jiān)控視頻中暴力行為的實(shí)時(shí)檢測(cè)。當(dāng)檢測(cè)出暴力行為時(shí),及時(shí)報(bào)警通知相關(guān)人員處理,能夠有效避免惡性事件的發(fā)生,保障人民群眾的生命安全。
本文算法用于對(duì)公共場(chǎng)所中發(fā)生的暴力行為的檢測(cè),僅檢測(cè)監(jiān)控視頻中的暴力行為,忽略正常行為。選取真實(shí)的監(jiān)控視頻,根據(jù)對(duì)暴力行為的定義截取視頻幀并進(jìn)行標(biāo)注,建立暴力行為數(shù)據(jù)集。對(duì)YOLOv4的網(wǎng)絡(luò)結(jié)構(gòu)和后處理方法進(jìn)行改進(jìn),將自建數(shù)據(jù)集經(jīng)過(guò)數(shù)據(jù)增強(qiáng)等預(yù)處理后,用于訓(xùn)練改進(jìn)后的模型,并在測(cè)試集上驗(yàn)證訓(xùn)練后模型的檢測(cè)效果,從準(zhǔn)確性和實(shí)時(shí)性兩方面做出評(píng)價(jià)。本文的暴力行為檢測(cè)方案如圖1所示。
圖1 暴力行為檢測(cè)方案
異常行為的判定與場(chǎng)景相關(guān),一些正常行為在特定場(chǎng)景下會(huì)被歸為異常,比如在行車(chē)道上跑步被認(rèn)為是異常行為。本文將異常行為限定為暴力行為,具有明顯的行為特征,且不受場(chǎng)景的限制。暴力行為包括打架、虐待等肢體沖突,主要表現(xiàn)為2人或多人之間的揮拳、踢腿以及擒抱等超出正常接觸范圍的動(dòng)作,在任何公共場(chǎng)所中檢測(cè)到此類行為即判定為暴力行為。
本文在UCF-Crime[7]和RWF-2000[8]異常行為數(shù)據(jù)集的基礎(chǔ)上建立暴力行為數(shù)據(jù)集。其中UCF-Crime由1 900個(gè)監(jiān)控視頻組成,包括真實(shí)場(chǎng)景中的13種危害公共安全的異常事件。而RWF-2000由真實(shí)監(jiān)控視頻中的2 000個(gè) 片段組成,每個(gè)片斷時(shí)長(zhǎng)5 s,分為有暴力行為和無(wú)暴力行為2種。
本文在上述2個(gè)數(shù)據(jù)集中篩選出包含暴力行為的較清晰的視頻,利用OpenCV對(duì)視頻進(jìn)行幀處理,每隔5幀截取1幀圖像。然后再進(jìn)一步篩選出包含暴力行為關(guān)鍵特征的圖像,共獲得5 000多張暴力行為樣本。利用LabelImg標(biāo)注工具對(duì)樣本中的暴力行為進(jìn)行標(biāo)注,獲得相應(yīng)的標(biāo)簽文件。數(shù)據(jù)集中的部分樣本如圖2所示。
圖2 數(shù)據(jù)集樣本示例
為了擴(kuò)充樣本的數(shù)量,提升模型的泛化能力和魯棒性,本文對(duì)樣本進(jìn)行了數(shù)據(jù)增強(qiáng)。為了保證暴力行為關(guān)鍵動(dòng)作的完整性,沒(méi)有采用隨機(jī)裁剪的方法,僅對(duì)單個(gè)樣本進(jìn)行了水平翻轉(zhuǎn)、改變亮度和旋轉(zhuǎn)操作。經(jīng)過(guò)數(shù)據(jù)增強(qiáng)的圖像如圖3所示。
圖3 單樣本數(shù)據(jù)增強(qiáng)
此外,本文采用了YOLOv4中的Mosaic數(shù)據(jù)增強(qiáng)方法,將4張圖片拼接為1張,擴(kuò)充了檢測(cè)目標(biāo)的背景,并且同時(shí)對(duì)4個(gè)不同的圖片做批標(biāo)準(zhǔn)化 (batch normalization, BN)計(jì)算,可以減小 batch size的大小。經(jīng)過(guò)Mosaic增強(qiáng)的圖像如圖4所示。
圖4 Mosaic 數(shù)據(jù)增強(qiáng)
YOLOv4的網(wǎng)絡(luò)結(jié)構(gòu)可分為主干網(wǎng)絡(luò)、特征融合網(wǎng)絡(luò)和檢測(cè)頭3個(gè)部分。其中主干網(wǎng)絡(luò)在原來(lái)的基礎(chǔ)上加入CSPNet[9]結(jié)構(gòu),形成了CSPDarknet53網(wǎng)絡(luò),用于提取特征。而特征融合部分采用空間金字塔池化層(spatial pyramid pooling, SPP)和 路 徑 聚 合 網(wǎng) 絡(luò) (path aggregation network, PANet)相結(jié)合的結(jié)構(gòu),將不同層級(jí)的特征進(jìn)行融合,能夠獲得較強(qiáng)的語(yǔ)義信息和空間信息。融合后的3種尺度的特征圖分別經(jīng)過(guò)檢測(cè)頭,輸出檢測(cè)結(jié)果。
對(duì)于輸入圖像一般需要先經(jīng)過(guò)下采樣來(lái)實(shí)現(xiàn)降維,從而降低計(jì)算量。常用的下采樣方法包括最大池化和步長(zhǎng)為2的卷積兩種,但他們?cè)谙虏蓸拥倪^(guò)程中都難以避免信息丟失的問(wèn)題,影響檢測(cè)效果。
本文在YOLOv4的輸入端和主干網(wǎng)絡(luò)之間加入了1個(gè)Focus層,采用間隔采樣的方式對(duì)原特征圖進(jìn)行切片,將高分辨率的特征圖拆分為多個(gè)低分辨率的特征圖,如圖5所示。將拆分的特征圖進(jìn)行拼接,相當(dāng)于將輸入通道擴(kuò)充了4倍。將平面上的信息轉(zhuǎn)換到通道維度,再通過(guò)卷積操作提取特征,能很大程度減少信息損失,從而提取到更充分的特征。
圖5 Focus 層示意
DO-Conv(depthwise over parameterized convolutional)是一種新提出的能夠替代傳統(tǒng)卷積的卷積方式,在普通的卷積層中加入depthwise操作,構(gòu)成1個(gè)過(guò)參數(shù)化的卷積層,能夠加速網(wǎng)絡(luò)的訓(xùn)練過(guò)程,并且在不增加網(wǎng)絡(luò)推理計(jì)算量的前提下提高網(wǎng)絡(luò)性能[10]。圖6為傳統(tǒng)卷積與DO-Conv卷積的卷積過(guò)程。傳統(tǒng)的卷積過(guò)程如圖6(a)所示,圖中Cin和Cout分別代表輸入特征圖和輸出特征圖的通道數(shù),M和N代表特征的空間維度。對(duì)給定的輸入特征圖,采用滑動(dòng)窗口的方式,將卷積核作用到特征圖的窗口區(qū)域中。圖中*代表標(biāo)準(zhǔn)卷積操作,輸出特征可以表示為O=W?P,其中W為卷積核,P為輸入特征。圖6(b)為DO-Conv的卷積過(guò)程,首先對(duì)2個(gè)卷積核DT和W進(jìn)行depthwise操作,得到新的卷積核W′=DT?W,其中 ?代表depthwise操作。然后將卷積核W′與輸入特征P經(jīng)過(guò)傳統(tǒng)卷積得到最終的輸出特征O=W′?P。
圖6 傳統(tǒng)卷積與 DO-Conv 對(duì)比
本文將YOLOv4主干網(wǎng)絡(luò)中的標(biāo)準(zhǔn)卷積層替換為DO-Conv。網(wǎng)絡(luò)經(jīng)過(guò)訓(xùn)練后得到 DT和 W ,在推理時(shí)先計(jì)算 W′并保存,然后與輸入特征做傳統(tǒng)卷積,與相同設(shè)置的傳統(tǒng)卷積相比計(jì)算量相近,能夠在不降低推理速度的情況下提升網(wǎng)絡(luò)的性能。
YOLO系列算法會(huì)在1個(gè)目標(biāo)上生成多個(gè)預(yù)測(cè)框,所以不能將網(wǎng)絡(luò)的輸出直接作為預(yù)測(cè)結(jié)果,還需要經(jīng)過(guò)非極大值抑制(non-maximum suppression, NMS)處理,篩選出最優(yōu)的預(yù)測(cè)框,消除冗余的部分。
YOLOv4中采用的是 DIoU NMS 算法[11],將邊框的中心點(diǎn)納入考量,與標(biāo)準(zhǔn)的NMS算法相比,對(duì)冗余預(yù)測(cè)框的消除更為準(zhǔn)確,并且對(duì)存在遮擋問(wèn)題的目標(biāo)檢測(cè)效果更好。但是DIoU NMS算法仍采用的串行處理方式,需要多次計(jì)算IoU值,且計(jì)算方式更為復(fù)雜,會(huì)降低運(yùn)算效率。為了提升后處理的效率,本文采用Matrix NMS算法[12]代替DIoU NMS,使用并行運(yùn)算的方式,一次性完成全部計(jì)算。
對(duì)于冗余的預(yù)測(cè)框,Matrix NMS會(huì)利用重疊度來(lái)降低其他預(yù)測(cè)的得分,而不是像標(biāo)準(zhǔn)NMS那樣直接將其消除,其中得分是重疊度的單調(diào)遞減函數(shù)f(iou)。預(yù)測(cè)框Bj的衰減因子主要受2個(gè)因素影響,首先是每個(gè)預(yù)測(cè)的Bi對(duì)Bj的懲罰(penalty),其中Bi的得分si大于Bj的得分sj;其次是Bi被抑制的概率。Bi對(duì)Bj的懲罰可以通過(guò)f(ioui,j)計(jì)算,而B(niǎo)i被抑制的概率計(jì)算較為復(fù)雜,但是此概率與IoU正相關(guān),可以用與Bi的IoU最大的預(yù)測(cè)來(lái)近似此概率,得到公式為
式中si和sk分別為相應(yīng)預(yù)測(cè)框的置信度得分。從而可以得到Bj的衰減因子,即
然后可對(duì)Bj的得分進(jìn)行更新:
Dj的計(jì)算公式中包含2個(gè)遞減函數(shù),其中分子是線性的,計(jì)算方法為
而分母是高斯,計(jì)算公式為
Matrix NMS的所有計(jì)算均可以單階段完成,不需要進(jìn)行遞歸。首先選取按照置信度得分排列的topN個(gè)預(yù)測(cè)結(jié)果,計(jì)算一個(gè)N×N的IoU矩陣,在此矩陣上就可得到重疊度最高的各個(gè)IoU值;然后計(jì)算所有置信度分?jǐn)?shù)較高的預(yù)測(cè)的衰減因子,并通過(guò)列最小值法在它們中進(jìn)行選擇;最后可根據(jù)衰減因子來(lái)更新置信度得分。在使用Matrix NMS時(shí),只需要設(shè)置篩選的閾值,然后選擇top-k得分的預(yù)測(cè)框作為最終的預(yù)測(cè)結(jié)果。由于采用并行運(yùn)算,Matrix NMS大幅提高了運(yùn)算效率,在保證檢測(cè)精度的同時(shí)提高了檢測(cè)速度。
此外,為了進(jìn)一步減少網(wǎng)絡(luò)的計(jì)算量,提高檢測(cè)速度,本文在主干網(wǎng)絡(luò)中采用LeakyReLU激活函數(shù)[13]代替YOLOv4中計(jì)算較復(fù)雜的Mish函數(shù)[14]。改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。
圖7 改進(jìn)的 YOLOv4 結(jié)構(gòu)
本文實(shí)驗(yàn)在Windows10操作系統(tǒng)下進(jìn)行,CPU 為 Intel Core i7-9700K,內(nèi)存為 32 GB,GPU為 NVIDIA RTX 2 070 SUPER。在 PyCharm 中預(yù)裝的環(huán)境包括 python 3.8、pytorch 1.81、cuda 10.2、opencv 4.5.2 等。
將數(shù)據(jù)集按照4∶1劃分訓(xùn)練集和測(cè)試集,利用k-means聚類的方法重新確定適合自建數(shù)據(jù)集的9種anchor大小。訓(xùn)練中設(shè)置batch size為8,初始學(xué)習(xí)率為10-4,優(yōu)化器采用Adam,共訓(xùn)練100個(gè) epoch。
本文在自建數(shù)據(jù)集上分別訓(xùn)練了原始的YOLOv4模型和本文改進(jìn)后的模型,得到未經(jīng)平滑的損失函數(shù)loss曲線如圖8所示。其中藍(lán)色曲線代表原始模型的loss值,綠色曲線為改進(jìn)模型的loss值。從2種曲線的對(duì)比可知,改進(jìn)后的模型loss值下降得更快,且最終的loss值穩(wěn)定在0.5左右,低于原始的模型。
圖8 2 種模型的 loss曲線比較
對(duì)于目標(biāo)檢測(cè)模型的精度,一般采用P–R曲線和 mAP(mean average precision)值來(lái)評(píng)價(jià)。如果隨著召回率(R)的增長(zhǎng),精確率(P)能夠保持平穩(wěn),則模型的分類性能較好。本文所訓(xùn)練的2種模型的P–R曲線如圖9所示,可知2種模型的分類性能均較好,當(dāng)R值達(dá)到0.9以上后,P值逐漸快速下降,且改進(jìn)模型下降得相對(duì)更慢。
圖9 2 種模型的 P–R 曲線比較
在2種模型的訓(xùn)練過(guò)程中,從第10個(gè)epoch開(kāi)始,每訓(xùn)練完1個(gè)eopch即對(duì)模型進(jìn)行1次測(cè)試,得到2種模型的mAP變化曲線如圖10所示,其中藍(lán)色代表YOLOv4原模型,綠色為改進(jìn)模型的曲線。由曲線可知改進(jìn)模型的mAP值更高,即具有更高的檢測(cè)精度。
圖10 2 種模型的 mAP 變化曲線
模型訓(xùn)練結(jié)束后,分別在測(cè)試集上對(duì)2種模型進(jìn)行測(cè)試,得到mAP值和推理速度的值如表1所示,其中推理速度的單位為幀每秒(frame per second,fps)。
表1 2 種模型的測(cè)試結(jié)果對(duì)比
測(cè)試結(jié)果說(shuō)明本文的改進(jìn)模型在檢測(cè)精度和推理速度上均優(yōu)于原模型,檢測(cè)mAP值達(dá)到97.95%,推理速度為56.4 fps,超過(guò)實(shí)時(shí)檢測(cè)要求的30 fps,能夠?qū)崿F(xiàn)對(duì)暴力行為的實(shí)時(shí)檢測(cè)。
利用訓(xùn)練好的2種模型分別在測(cè)試集上進(jìn)行驗(yàn)證,部分檢測(cè)結(jié)果如圖11所示。模型在定位暴力行為的同時(shí),在預(yù)測(cè)框的上方會(huì)標(biāo)記分類結(jié)果及置信度。
圖11 2 種模型的測(cè)試結(jié)果對(duì)比
2種模型均能對(duì)不同場(chǎng)景下的各種表現(xiàn)形式的暴力行為進(jìn)行檢測(cè),但存在不同比例的誤檢問(wèn)題。比較2種模型的檢測(cè)結(jié)果,本文的改進(jìn)模型對(duì)暴力行為的定位更為準(zhǔn)確且分類的置信度更高。此外,相比YOLOv4模型,本文的模型檢測(cè)發(fā)生誤檢的概率更低。
本文針對(duì)監(jiān)控視頻中的暴力行為,研究了基于改進(jìn)的YOLOv4的實(shí)時(shí)檢測(cè)算法。
1) 為提升檢測(cè)的準(zhǔn)確性和實(shí)時(shí)性,對(duì)YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)和后處理方法進(jìn)行了改進(jìn)和優(yōu)化,改進(jìn)后的模型在檢測(cè)精度和速度上均優(yōu)于原模型。
2) 自建暴力行為數(shù)據(jù)集,用于模型的訓(xùn)練和測(cè)試。實(shí)驗(yàn)結(jié)果表明,本文的算法能夠準(zhǔn)確定位視頻幀中的暴力行為,并且具有良好的實(shí)時(shí)性,但是存在部分誤檢問(wèn)題。
文本的算法還可用于對(duì)其他特定行為的檢測(cè),以滿足特定場(chǎng)景的監(jiān)控需求。