楊亞虎,陳天華,邢素霞,王 瑜
(北京工商大學 計算機與信息工程學院,北京 100048)
作為智能視頻監(jiān)控系統(tǒng)最前端的監(jiān)控攝像頭,對其鏡頭的遮擋、模糊和旋轉等異常進行準確而高效的識別是十分必要的。計算機視覺的發(fā)展為異常干擾識別提供了新思路[1]。傳統(tǒng)的攝像頭異常干擾識別大多僅針對一種異常干擾進行識別[2-5],且通過人工提取特征,最后使用支持向量機(support vector machine,SVM)等分類器實現(xiàn)對攝像頭異常干擾的分類與識別。但隨著攝像頭數(shù)目的日益劇增,視頻監(jiān)控系統(tǒng)產(chǎn)生的圖像數(shù)據(jù)也在成指數(shù)增加。傳統(tǒng)通過人工提取特征再使用SVM等分類器進行攝像頭干擾的分類與識別,不僅資源耗費大而且難以達到視頻監(jiān)控對準確率和可靠性的要求。
近年來,深度學習技術在分類、檢測和識別[6]等領域表現(xiàn)優(yōu)越[7]?;诰矸e神經(jīng)網(wǎng)絡而衍生的分類網(wǎng)絡中,最具代表的是VGG16、VGG19、SqueezeNet、InceptionV4、DenseNet121、ResNet18和ResNet50等端到端的圖像分類網(wǎng)絡。
將深度學習技術引入攝像頭異常干擾識別當中,結合云計算和圖像處理器的加速計算性能,為提高識別準確性、可靠性和實時性提供了新方法。文獻[2-5,8-10]提出的幾種算法,大多將特征提取和分類分步實現(xiàn),與傳統(tǒng)方法相比,這種分步實現(xiàn)異常干擾識別的方法取得了一定的提升,但與端到端的圖像分類網(wǎng)絡相比,以上方法不僅識別的干擾種類少,而且效率和準確率低,實時性也差。
為此,本文充分借鑒ResNet50優(yōu)秀的圖像分類性能,使用自建的圖像數(shù)據(jù)集微調ImageNet預訓練的ResNet50以訓練出用于攝像頭異常干擾的圖像分類與識別模型,最后在訓練的模型之上,創(chuàng)造性地運用滾動預測平均算法實現(xiàn)監(jiān)控攝像頭異常干擾視頻的分類與識別。
針對網(wǎng)絡層數(shù)加深時,訓練集和測試集準確率下降的現(xiàn)象,微軟研究院的Kaiming He等提出了ResNet(residual neural network,ResNet)網(wǎng)絡[11],并通過使用殘差單元(ResNet Unit)成功訓練出了152層的ResNet網(wǎng)絡,在top5上的錯誤率僅為3.57%,拿下了當年ImageNet比賽中分類任務的第一名。
網(wǎng)絡越深,獲取的信息越多,而且特征也越豐富。但是根據(jù)實驗結果表明[11],隨著網(wǎng)絡的加深,優(yōu)化效果反而越差,測試集和訓練集的準確率反而降低了。這是由于網(wǎng)絡加深時,會出現(xiàn)梯度爆炸和梯度消失的問題,以致深層網(wǎng)絡無法訓練。為此,ResNet通過繞道的方式,既保護了信息的完整性,又簡化了學習的目標和難度,如圖1為ResNet網(wǎng)絡的殘差學習模塊。
圖1 ResNet的殘差學習模塊
ResNet中有兩種映射,一種是恒等映射(identity mapping),就是圖1中的X。 另一種是殘差映射(residual mapping),也就是圖1中的F(X)。 要求解的目標映射為H(X), 由圖1可知
H(X)=F(X)+X
(1)
F(X)=H(X)-X
(2)
因此,問題轉換為求解網(wǎng)絡的殘差映射函數(shù)F(X), 簡化了學習的目標和難度。因F(X) 和X和通道數(shù)(channel)不全一樣,故式(1)還有另一種表達形式,如式(3)所示
H(X)=F(X)+WX
(3)
其中,W是卷積操作,主要用來調整X的通道維度,常用的方法有全0填充或采用1x1卷積。ResNet網(wǎng)絡中主要有兩種殘差模塊,一種是將2個3x3的卷積串接作為一個殘差模塊,另外一種是將1x1、3x3、1x1的3個卷積串接作為一個殘差模塊,如圖2所示。
圖2 兩層及三層的ResNet殘差學習模塊
圖2(a)的結構主要針對ResNet34網(wǎng)絡,圖2(b)的結構主要針對ResNet50、ResNet101和ResNet152網(wǎng)絡。因此,ResNet50主要是由圖2(b)所示的三層殘差學習模塊經(jīng)過堆疊和全連接層構成的具有50層卷積和全連接的深層神經(jīng)網(wǎng)絡。
經(jīng)過三層殘差學習模塊的堆疊和全連接層構成的ResNet50網(wǎng)絡的結構見表1。進行圖像分類任務時,輸入到ResNet50網(wǎng)絡輸入層的是224×224像素的RGB圖像。
表1 ResNet50網(wǎng)絡結構
ImageNet數(shù)據(jù)集是按照WordNet架構組織的大規(guī)模帶標簽圖像數(shù)據(jù)集,由斯坦福大學李飛飛教授領導創(chuàng)建[12],是目前世界上圖像識別最大的數(shù)據(jù)庫。ImageNet中共有14 197 122幅圖像,分為21 841個類別,帶有邊界框注釋的圖像數(shù)為1 034 908,主要用于圖像分類、目標定位、目標檢測、視頻目標檢測和場景分類等比賽項目。
在實際中,因為數(shù)據(jù)量小的緣故,很少有人會從零開始去訓練一個CNN模型。相反,普遍的做法都是在大的數(shù)據(jù)集(例如ImageNet)上訓練出一個CNN模型,然后提取最后一層卷積層或者倒數(shù)第二層全連接層的輸出作為CNN的特征,直接使用SVM、貝葉斯或softmax等分類器進行分類,也就是將預訓練的CNN視為一個特征提取器,這被稱為通過特征提取的遷移學習。
事實證明,相比于通過特征提取的遷移學習,遷移學習的另一種類型-微調可以帶來更高的準確性。具體來說,微調就是將在大數(shù)據(jù)集上訓練得到的權重作為特定任務(小數(shù)據(jù)集)的初始化權重,重新訓練該網(wǎng)絡(根據(jù)需要修改全連接層的輸出)。至于訓練的方式可以是微調所有層或者固定網(wǎng)絡的前面幾層權重,只微調網(wǎng)絡的后面幾層,這樣做主要有兩個原因,第一是避免因數(shù)據(jù)量小造成過擬合現(xiàn)象,第二是CNN前幾層的特征中包含更多的一般特征(比如邊緣信息、色彩信息等),這對許多任務來說是非常有用的,但是CNN后面幾層的特征學習注重高層特征,也就是語義特征,這是針對于數(shù)據(jù)集而言的,不同的數(shù)據(jù)集后面幾層學習的語義特征也是完全不同的。
本文主要使用自建的數(shù)據(jù)集微調在ImageNet上預訓練的ResNet50網(wǎng)絡,以訓練出攝像頭干擾圖像分類與識別模型,可視化過程如圖3所示,具體步驟如下:
(1)刪除預訓練的ResNet50網(wǎng)絡末端的全連接層(fully connected,F(xiàn)C)與softmax層,如圖3(a)所示;
(2)用一組新的隨機初始化的FC層和softmax層替換原來的FC層和softmax層,如圖3(b)所示;
(3)凍結預訓練的ResNet50網(wǎng)絡FC層和softmax層以下的所有CONV層,以確保不會破壞預訓練的ResNet50掌握的任何先前的強大功能,如圖3(c)所示;
圖3 微調預訓練的ResNet50過程
(4)以很小的學習率(0.0001)來訓練ResNet50,但僅訓練FC層和softmax層,如圖3(c)所示;
(5)解凍預訓練的ResNet50網(wǎng)絡中的全部CONV層,然后進行第二次訓練,如圖3(d)所示。
在進行圖像分類時,將圖像送入CNN,從CNN獲得預測,最后選擇具有最大對應概率的標簽。由于視頻是一系列的幀,因此樸素的視頻分類方法是,循環(huán)播放視頻文件中的所有幀,對于每一幀,將其通過CNN,分別對每幀彼此獨立地進行分類,選擇具有最大對應概率的標簽,最后標記幀并將輸出幀寫入磁盤。但是,這種方法存在問題,它并沒有考慮視頻的上下文信息也即時序特征,而僅考慮了視頻的表觀特征。如果將簡單的圖像分類應用于視頻分類,則可能會遇到一種“預測閃爍”,即對于同一個視頻類,預測值在正確預測值和錯誤預測值之間頻繁閃爍,對于視頻監(jiān)控,這是絕不允許的。針對這一問題,本文在已經(jīng)訓練好的監(jiān)控攝像頭干擾圖像分類與識別模型的基礎之上,創(chuàng)造性地提出利用滾動預測平均算法實現(xiàn)監(jiān)控攝像頭異常干擾的視頻分類與識別算法,算法具體如下:
Algorithm: Realization of surveillance camera abnormal interference video classification and recognition by rolling prediction average.
input: Surveillance camera interference video file
output: Surveillance camera interference video and its corresponding label
(1)foriinrange(n):
(2) For each frame, pass the frame through ResNet50 fine-tuned on our self-built dataset;
(3) Obtain the predictions from ResNet50 fine-tuned on our self-built dataset;
(4) Maintain a list of the last K predictions;
(5) Compute the average of the last K predictions and choose the label with the largest corresponding probability;
(6) Label the frame and write the output frame to disk;
(7) Show the output image;
(8) i+=1;
(9)end
(10) Release the file pointers.
通過在訓練的監(jiān)控攝像頭異常干擾圖像分類與識別模型之上運用上述算法,不僅可以對不同類別的干擾視頻進行分類與識別,而且可以對同一干擾視頻中的不同干擾進行分類識別并快速準確地在不同標簽之間切換,實現(xiàn)了監(jiān)控攝像頭干擾視頻的準確和高效的分類與識別。
為驗證本文方法的有效性,先構建了監(jiān)控攝像頭異常干擾圖像數(shù)據(jù)集,然后結合遷移學習中的微調方法,采用合適的訓練準則對ImageNet預訓練的ResNet50進行訓練。在訓練好的模型之上采用滾動預測平均算法對4類監(jiān)控攝像頭視頻(正常視頻、監(jiān)控攝像頭遮擋、模糊和旋轉視頻)進行分類識別,測試監(jiān)控攝像頭干擾識別效果,并與傳統(tǒng)和分步的方法進行對比實驗。實驗硬件平臺:Intel(R) Xeon(R) E5-2603v3@1.60 GHz CPU, 8 GB內存, 256 G RAM;NVIDIA Titan XP GPU(12 G顯存);操作系統(tǒng)為Ubuntu16.04 LTS;深度學習框架為Keras2.2.4。
監(jiān)控攝像頭異常干擾識別研究中,目前還沒有公開的用于監(jiān)控攝像頭異常干擾分類與識別模型訓練的數(shù)據(jù)集。本文通過物聯(lián)網(wǎng)攝像頭、監(jiān)控攝像頭、半球攝像頭、移動攝像頭和彩色攝像機等設備從真實監(jiān)控場景采集干擾視頻,隨后進行切片化處理以創(chuàng)建監(jiān)控攝像頭干擾識別圖像數(shù)據(jù)集,視頻采樣頻率為30 Hz。監(jiān)控攝像頭干擾視頻采集過程如圖4所示。
圖4 監(jiān)控攝像頭干擾視頻采集
每個設備都可以采集攝像頭干擾視頻,然后接入硬盤錄像機的視頻接口將錄像保存在硬盤錄像機的特定位置,以便使用U盤和移動硬盤進行復制和后續(xù)切片操作。常見的攝像頭干擾包括攝像頭鏡頭遮擋、攝像頭鏡頭被噴漆、攝像頭鏡頭旋轉或位置移動,因此,人為干預各種監(jiān)控設備以拍攝出本文預期的攝像頭干擾視頻,包括使用卡片、手掌或樹葉遮擋攝像頭、向攝像頭噴灑粉塵、左右或上下旋轉攝像頭。需要注意的是,所有監(jiān)控設備的視頻采樣頻率都已被事先設置成30 Hz。本文分別在早晨、中午、下午3個時間段進行了攝像頭干擾視頻的采集任務,目的是使訓練數(shù)據(jù)包含更豐富、更全面的信息,從而使得訓練的模型更具有泛化性和魯棒性,更好地適應監(jiān)控場景的復雜性,如圖5所示。
圖5 不同時間段的小區(qū)監(jiān)控攝像頭遮擋圖像
將監(jiān)控攝像頭干擾視頻錄像逐個切片化處理后,人工篩選出攝像頭遮擋、攝像頭被噴漆和攝像頭被旋轉的圖像。為了讓視頻監(jiān)控系統(tǒng)對正常情況(除了攝像頭遮擋、攝像頭被噴漆和攝像頭旋轉)也有所區(qū)分,在所構建的數(shù)據(jù)集中加入了正常類。為了豐富訓練集,更好提取特征,泛化模型,本文主要采用了旋轉圖像、改變圖像色差和改變圖像尺寸的數(shù)據(jù)增強方式來擴大數(shù)據(jù)集、豐富圖像特征,如圖6所示。
圖6 數(shù)據(jù)增強操作
由于監(jiān)控設備的像素值存在差異,本文將切片后的圖像都統(tǒng)一成了500pixel×281pixel。經(jīng)過圖像增強后,數(shù)據(jù)集中共有5400幅圖像可用于攝像頭干擾識別模型的建立,所有類別的百分比都為25%,說明該數(shù)據(jù)集在學習不同類別的分類模型方面具有很好的平衡性,最終將75%作為訓練集,25%作為驗證集。表2給出了該數(shù)據(jù)集的具體信息。
表2 所構建數(shù)據(jù)集的具體信息
將數(shù)據(jù)集分為75%訓練,25%驗證,即訓練集4050幅圖像,驗證集1350幅圖像。在預訓練的ResNet50網(wǎng)絡上進行訓練和驗證,最后在80個未知的監(jiān)控攝像頭干擾視頻上利用訓練的模型進行測試。模型基于深度學習框架Keras2.2.4,在一個具有顯存為12 G的NVIDIA Titan XP GPU和256G RAM的Intel(R) Xeon(R) E5-2603 v3處理器上進行了訓練、驗證和測試。訓練時,訓練批次大小為64,對ImageNet預訓練的ResNet50網(wǎng)絡進行微調,使用初始學習率為0.0001,動量為0.9,每50次迭代學習率下降0.0001的SGD(stochastic gradient descent)優(yōu)化器。訓練集和驗證集的圖像尺寸都為500pixel×281pixel。
損失函數(shù)用于估計模型的預測值與真實值之間的不一致程度,它是一個非負實值函數(shù),通常由L1或L2正則化項表示。本文網(wǎng)絡使用的損失函數(shù)是交叉熵損失函數(shù),損失函數(shù)的公式為
(4)
其中,M表示類別數(shù),yc表示類別c的真實值,pc表示類別c的預測值。損失函數(shù)越小,兩個概率的分布越接近,模型的魯棒性越好。圖7顯示了訓練和驗證過程的準確率和損失函數(shù)圖。
圖7 訓練和驗證過程的損失函數(shù)
由訓練和驗證過程的準確率和損失函數(shù)圖可知,經(jīng)過本文數(shù)據(jù)集微調之后的ResNet50可以對該數(shù)據(jù)集進行準確的分類,最終在驗證集上可達97%的分類準確率,且損失函數(shù)的變化平穩(wěn),最終在第50個epoch時達到0.1612,說明預測值已非常接近真實值。
除了訓練和驗證過程的準確率和損失函數(shù)圖,本文還采用查準率(precision)、查全率(recall)、f1分數(shù)(f1-score)、微平均(microavg)、宏平均(macroavg)和加權平均(weightedavg)對分類結果進行全方位評價。
如果真實類別為正例,預測類別也為正例,則為真正例(TP),如果真實類別為負例,預測類別為正例,則為假正例(FP),如果真實類別為正例,預測類別為負例,則為假負例(FN),如果真實類別為負例,預測類別也為負例,則為真負例(TN)。查準率主要度量分類器對某一類別預測結果的準確性,對所有類別的查準率求和取均值后可以得到整體精確率,其計算如式(5)所示。查全率主要度量分類器對某一類別預測結果的覆蓋面,對所有類別的查全率求和取均值后可以得到整體覆蓋面,其計算如式(6)所示。綜合考慮查準率和查全率兩個指標,就得到了f1分數(shù),主要度量分類器對某一個類別預測結果的精確性和覆蓋面,它是查準率和查全率的調和平均值,其計算如式(7)所示。在評價多類別分類器的效果時,把所有類的f1分數(shù)取算數(shù)平均后就得到了宏平均,主要度量常見類效果。微平均主要度量稀有類的效果,其計算公式如式(8)所示,但在實際中,宏平均比微平均更合理
(5)
(6)
(7)
(8)
根據(jù)以上公式,訓練好的模型在本文數(shù)據(jù)集上的各種評價結果見表3。
表3 驗證集評價結果
由表3可知,訓練好的模型對監(jiān)控攝像頭干擾圖像數(shù)據(jù)集具有良好的分類性能。對1350幅驗證集圖像進行驗證,包括正常圖像(normal)338幅、模糊圖像(blurry)337幅、遮擋圖像(occlusion)337幅和攝像頭旋轉圖像(scene_switching)338幅。每一類的precision、recall、f1-score都非常接近1,說明模型的分類性能良好。microavg、macroavg和weightedavg都為0.97,達到了97%的驗證集分類準確率,充分說明訓練的模型在不同類別之間具有優(yōu)秀的分類準確性和平衡性,可用于監(jiān)控攝像頭干擾視頻的分類識別任務。
在驗證集上詳細評價了訓練的分類模型的性能之后,最后結合滾動預測平均算法對80個測試集視頻進行測試,并采用準確率、漏檢率和誤識率進行客觀評價,以觀察本文所提出的算法和所訓練的模型在監(jiān)控攝像頭干擾視頻上的識別表現(xiàn),部分測試視頻識別結果如圖8所示,總的測試集識別結果見表4。
表4 測試集視頻識別結果
圖8 部分測試視頻識別結果
如圖8所示,包括正常的監(jiān)控視頻在內,不僅各類監(jiān)控攝像頭干擾視頻都被打上了各自對應的標簽(視頻畫面左上角),而且對于同一個干擾視頻中的不同干擾類別,也可以進行快速分類與識別,完全可以滿足以計算機視覺和模式別為核心的第三代智能視頻監(jiān)控的需求。
結合表3和表4可知,對正常圖像和遮擋圖像的分類效果并沒有對模糊圖像和旋轉圖像的分類效果好,但在視頻識別時,對正常視頻和遮擋視頻的識別效果要比對模糊視頻和旋轉視頻的識別效果好,這也充分驗證了視頻識別不僅要考慮表觀特征(靜態(tài)特征)還要考慮時序特征(動態(tài)特征)的結論,而圖像分類識別僅需考慮表觀特征,所示視頻分類識別要遠比圖像分類識別復雜。
為了客觀評價監(jiān)控攝像頭異常干擾視頻的分類與識別結果,本文采用了文獻[2]的準確率、漏檢率和誤識率評價準則,計算得到的各類視頻及總體的準確率、漏檢率和誤識率見表5。
由表5可知,本文方法達到了95%的監(jiān)控攝像頭異常干擾視頻識別準確率,漏檢率和誤識率都相對很低,分別為5%和6.7%,其中對正常視頻和遮擋視頻的識別效果最好,模糊視頻次之,旋轉視頻最差,這也源于旋轉視頻圖像難以獲得、視頻內容包含場景切換的過程等原因。
表5 準確率、漏檢率和誤識率客觀評價
為了進一步驗證本文方法的有效性,本文與傳統(tǒng)和分步的攝像頭干擾識別方法在本文數(shù)據(jù)集上進行了比較,比較結果見表6。
表6 不同算法的實驗結果對比
根據(jù)實驗對比結果可以看出,與傳統(tǒng)和分步的監(jiān)控攝像頭異常干擾識別方法相比,本文方法的準確率、漏檢率和誤識率都有很大的提高,這源于:①通過在ImageNet數(shù)據(jù)集預訓練ResNet50網(wǎng)絡,合理地運用了ImageNet強大的先驗知識。②受視頻動作識別[13]的啟發(fā),本文創(chuàng)造性地將滾動預測平均算法應用于監(jiān)控攝像頭異常干擾識別,實現(xiàn)了監(jiān)控攝像頭干擾識別的新突破。綜合以上分析,本文方法對監(jiān)控攝像頭異常干擾識別整體識別性能更好,從而驗證了本文所提監(jiān)控攝像頭干擾識別方法的有效性。
本文提出了一種基于滾動預測平均的監(jiān)控攝像頭異常干擾識別方法,首先利用構建的數(shù)據(jù)集采用遷移學習中的微調方法對ImageNet預訓練的ResNet50網(wǎng)絡微調,以訓練出監(jiān)控攝像頭干擾圖像分類與識別模型,然后在訓練的模型之上結合滾動預測平均算法實現(xiàn)了監(jiān)控攝像頭異常干擾視頻的分類與識別,識別準確率達到了95%。與傳統(tǒng)和分步的監(jiān)控攝像頭異常干擾識別方法相比,本文方法在準確率、漏檢率和誤識率方面都有很大提高,綜合性能更好,驗證了本文所提方法的有效性。在下一步研究中,將進一步降低漏檢率和誤識率,提高準確率。