李冠儒,萬宇杰
(淮北師范大學計算機科學與技術學院,安徽淮北 235000)
隨著移動互聯網技術的發展,人們可以很便捷地利用手機來拍攝記錄生活,并分享至相關網絡平臺,如抖音、快手等. 根據抖音平臺發布的數據報告,截止2020 年12 月,抖音平均每天的視頻搜索量超過4 億. 這些海量視頻通過互聯網平臺傳播到人們手中,一方面滿足了人們精神需要,另一方面也對視頻內容的監管提出了更高要求. 因此這些互聯網平臺需要一種高效、智能的視頻分析手段來管理,對視頻進行分類就成為解決問題的關鍵一步. 近年來,在圖像和視頻領域,卷積神經網絡(CNN)憑借優秀的視覺表現學習能力正在快速興起. 然而視頻與圖像不同,視頻是一連串圖像幀的集合,比圖像變化更多更復雜,因此普通的神經網絡模型很難學習出強大的通用時空特征. 人們提出了很多視頻時空信息編碼方法,其中最基本的是將CNN 網絡中的卷積核從二維膨脹至三維,從而訓練出3D-CNN 網絡模型,增加的一維即是時間維度,因此3D-CNN網絡不僅可以捕獲每個視頻幀的圖像信息,還可以得到不同視頻幀之間蘊含的運動信息. 雖然視頻分類研究取得了長足的發展,但很多準確性的提高來自于新的強大架構的引入[1-5],而很多架構都是建立在開銷高昂的三維時空卷積之上的,且參數量、模型尺寸、運算時間也比2D-CNN 大幅上漲,以人們熟知的C3D 網絡為例,僅11 層的3D-CNN,竟然比2D 網絡中的ResNet-152 還大,這就導致在訓練3D-CNN時變得非常吃力.
因此,現在許多算法嘗試使用不同的方法來簡化網絡模型,例如P3D[3]、R(2+1)D[2]、S3D[4]、X3D[6]、SmallBigNet[7]、TSM[8]、multigrid[9]. 在二維靜態圖像領域中,MobileNet[10]使用深度可分離卷積對2D 的k×k濾波器進行分解,先進行k×k的深度卷積,再進行1×1 的逐點卷積. 通過使用深度卷積來降低參數量,從而達到簡化網絡模型、加快計算的效果. MobileNet 指出,當卷積的通道數遠大于k時,卷積的參數量將減少k2倍,從而大大減少整個網絡模型的運算量.
受MobileNet 的深度可分離卷積啟發,本文提出一種基于3D 深度可分離卷積的算法,通過把3D卷積[11]分解成3×3×3 的深度卷積和1×1×1 的點卷積,從而降低3D 卷積中龐大的參數量,并加入注意力機制以提高模型的準確性.
深度卷積神經網絡在數據分類領域應用廣泛并且取得了巨大突破,尤其是在圖像和視頻方面,但深度卷積神經網絡也存在3 個問題:①常規的神經網絡并不是網絡層數越多,效果就越好;②神經網絡層數過深,容易造成梯度消失,使得網絡無法傳播、學習,從而導致訓練效果不好;③層數太淺的網絡識別效果往往不好. 為了解決上述3 個問題,He 等[12]提出了殘差網絡ResNet,該算法通過給淺層網絡附加一個恒等映射從而達到加深網絡層數的目標,構建出一個殘差模塊. 通過學習殘差,將部分原始輸入的信息經過恒等映射層直接輸到下一層,在一定程度上避免了卷積層在進行信息傳遞時的特征丟失,在保留輸入特征的同時,可以學習到新的特征,有效避免網絡因層數過深而出現性能退化的現象.
搭建深層神經網絡模型的基本條件是更深層網絡誤差應該比淺層網絡誤差更低. 因此在構建深層模型時,很自然地用到恒等映射,即H(X)=X. 但當網絡層數較深時,容易出現梯度消失問題,并且深層網絡難以直接擬合H(X),從而導致模型退化,因此ResNet提出了“shortcut”跳連接,這就把擬合恒等映射H(X)變為擬合殘差映射F(X),此時實際映射H(X)就變成了H(X)=F(X)+X. 當F(X)=0 時,就重新變成恒等映射H(X)=X,所以作為殘差函數的F(X)=H(X)-X應最小化,從而模型可以模擬出實際映射,也不會因為網絡層數過深使得模型退化,并且殘差函數F(X)也比恒等映射更容易訓練.
本文用L層殘差塊來模擬連接,假設輸入的第l個殘差塊為x(l),則該殘差塊的輸出可表示為x(l+1),即也是第l+1 個殘差塊的輸入. 那么第l個殘差塊的輸出為:

由式(1)可知,在殘差網絡中,下層網絡總在積累上層網絡的殘差特征,因此l+1 層所包含的特征信息比l層更多,所以L層擁有的信息會最多. 在梯度反向傳播時,淺層網絡的第l個殘差塊所對應的誤差損失loss的計算公式為:

本文的主干網絡即采用ResNet模型.
注意力機制,常被運用在圖像處理和自然語言處理領域. 本文以CBAM (Convolutional Block Attention Module,CBAM)[13]為基礎構建3D-CBAM 注意力模塊并嵌入三維可分離網絡中.
3D自適應注意力模塊完整結構如圖1所示.

圖1 注意力機制
由于3D 卷積比2D 卷積多一個維度,輸入特征F3D結構為F3D∈RW×H×D×C,3D-CBAM 會按照順序計算出通道注意力特征圖Mc3D∈R1×1×1×C,以及空間注意力特征圖Ms3D∈R1×H×W×D,整個過程公式如下所示:


不同通道對3D 網絡模型分類效果的貢獻不同. 在3D-CBAM 中,通道域的注意力模塊就是對這些不同貢獻的通道進行篩選,選出對結果分類貢獻更高的通道,篩選過程如圖2所示.

圖2 通道注意力
算法首先基于深度D、寬度W以及高度H對輸入特征圖F3D進行均值池化和最大值池化操作,再基于對應元素分別把通過MLP 的特征進行加和操作,使用激活函數sigmoid 激活,最后把輸入特征圖F3D與上述操作生成的通道特征圖Mc3D(F3D)相乘,從而得到通道特征圖F′3D,計算公式為:

式中:W0∈RC/r×C,W1∈RC×C/r. 使用激活函數Relu對W0進行激活操作,σ是sigmoid操作,減少率r選擇16,則通過均值池化和最大值池化后,通道數量由C減少至C16,參數量變少,最后通過全連接操作將通道數量恢復至C.
最后,知識產權評議是優化財政性資金資助的科技項目和科技成果管理的核心裝置。在科技項目立項環節,通過知識產權評議,可以及時發現和防范科技項目的知識產權風險,避免因知識產權問題而導致重大經濟損失或重大科技項目的重復研究;而在項目實施過程中,通過建立知識產權評議機制,可以實現項目管理部門和項目承擔者對科技成果的全過程管理,規范科技成果的創造、運用、保護和流轉過程。
同樣,RGB 圖像中不同位置的像素對3D 網絡模型分類效果的貢獻也不相同. 在3D-CBAM 中,空間域的注意力模型就是對這些不同位置的像素進行篩選,選出對結果分類貢獻更高的區域,篩選過程如圖3所示.

圖3 空間注意力
其中空間域注意力模塊的輸入就是通道域注意力模塊的輸入,即F′3D,然后基于通道對其分別做最大值池化形成特征圖F smax和均值池化形成特征圖F savg,接著基于通道將兩個特征圖F savg與F smax合并,再使用卷積核為7×7 的卷積對其降維,得到的特征圖使用sigmoid 激活,然后將激活后的特征圖與第一步的輸入特征圖F′3D按元素進行相乘,從而得到最終的空間域特征圖F′′3D,計算公式為:

3D 深度可分離卷積,是一種通過對3D 卷積神經網絡的卷積進行分解從而減少網絡參數、提高網絡訓練速度的算法,它將標準3D卷積分解為對應的深度卷積和1×1×1 的點卷積. 對于卷積神經網絡,深度卷積將輸入特征圖的每個通道都視為一個單獨的特征圖,然后對每個特征圖都使用一個濾波器進行卷積,并且只卷積一次,得到與輸入特征圖通道數相同個數的輸出特征圖,并將這些特征圖按通道疊加在一起視為一個完整的輸出特征圖;點卷積則把若干1×1×1 卷積接在深度卷積輸出的特征圖之后,進行卷積從而得到最終想要的結果.一個標準的3D卷積計算過程分為兩步,第一步提取輸入特征,第二步將提取的特征合成為新的特征圖輸出. 總的來說深度可分離卷積的計算過程分為兩步,第一步按通道提取特征,第二步合并特征. 其中提取特征只進行一次,合并特征進行多次. 而3D 卷積的計算量主要集中在特征提取上,因而深度卷積可以大幅減少模型的計算量和尺寸.
對于標準3D 卷積,假設輸入尺寸為F×F×F×M,其中F為輸入特征圖的長和寬,這是假定兩者是相同的,T為時序維度,M為通道數.輸出尺寸為F×F×T×N,其中N為輸出通道數,卷積核尺寸為K×K×K.
則標準3D卷積的計算量為:

對于3D深度可分離卷積,其中深度卷積所包含的計算量為:

對應的點卷積的計算量為:

3D 深度可分離卷積所包含的計算量與3D 標準卷積所包含的計算量之比為:

本文使用101 層的ResNet 網絡作為骨干網絡,其結構參數和數據流如表1 所示. 網絡由5 個隱藏層組成,分別為conv1、conv2_x、conv3_x、conv4_x和conv5_x. 并且每個block 在點卷積后接3D-CBAM注意力機制.

表1 網絡結構
(1)處理器:Inter Core ?i7-9700 CPU,主頻3 GHz.(2)內存:32 GB.(3)系統類型:Windows 10 64 位操作系統.(4)實驗環境:Python3.7, Numpy,Opencv等包.
本文選用UCF101 作為實驗使用的數據集,它也是動作行為識別算法的公認數據集,包括101 個種類,由13 320個視頻剪輯段組成,大多數視頻剪輯段的時間長度在2 ~10 秒內,并且視頻剪輯段的空間分辨率為240 px × 320 px,幀速為25 幀/秒,總時長約27 小時. 數據集在采集時,由于受到攝像機運動、背景混亂、存在遮擋、光線不充足、幀質量低等因素影響,所以在視頻分類任務中具有一定挑戰性.
首先,將數據集按照每間隔4幀提取1幀的方式把視頻剪輯段轉換成圖像幀數據集,當部分短視頻剪輯段經上述轉換后,得到的圖像幀數少于16 幀時,則將這些短視頻重新剪切,不斷降低間隔幀數,直到滿足剪切后的幀數大于16幀為止.并將所有得到的圖像幀大小調整為128 px × 171 px,大約為原圖像幀分辨率的一半. 再將調整后的圖像幀數據集按照6∶2∶2 的比例劃分成訓練集、驗證集和測試集.同時為了增強模型的穩定性和提高模型精度,在向模型輸入數據前,使用112 px × 112 px 的隨機裁剪來處理圖像幀. 最后按概率50%對每個輸入數據進行水平翻轉.
實驗中網絡模型的相關超參數的設置見表2,其中學習率的初始值設為0.000 01,迭代衰減率為0.1,訓練時批量大小設為16,Dropout 取值為0.8,L2正則化lambda取值為0.005.

表2 模型定義參數
在UCF101 數據集上訓練了100 個epoch,準確率的變化曲線如圖4 所示,最終模型的識別準確率可達到90.8%.

圖4 模型準確率
表3 表示各網絡的網絡參數量. 相比于原來的ResNet3D 網絡,本文構建的網絡在不同深度下,參數量和計算量都有明顯的下降,算法的時間復雜度大大降低,從而加快訓練速度.

表3 不同模型的網絡參數量
表4表示在UCF101數據集上,常見算法的準確率. 本文算法比C3D 在準確率上提高5.6%,主要原因是因為本文采用了更深層次的網絡結構.

表4 不同模型的準確率
本文通過優化3D 神經網絡,將普通3D 卷積替換成深度卷積和點卷積,并結合注意力機制,一方面有效降低網絡參數,加快學習速度;另一方面通過結合CBAM,讓網絡關注更有價值的區域,從而提升網絡準確率. 因為減少了參數,所以速度有所提升,但由于參數的減少,損失了一些知識,模型準確率還有待進一步提升.