趙洪汶
(中國廣電山東網絡有限公司泰安市分公司 山東 泰安 271000)
近年來,隨著人工智能的發展,計算機視覺領域發展得極為迅速,例如圖像處理、圖像分類、圖像重構等。關于圖像分類的算法可以分為基于機器學習與深度學習兩種:第一,基于機器學習算法,包含支持向量機(support vector machine,SVM)[1]和隨機森林[2]等算法;第二,基于深度學習的方法,包括使用卷積神經網絡(convolutional neural network, CNN)和視覺幾何組(visual geometry group,VGG)[3]算法。CNN網絡通過加入多個卷積層對模型進行加深,隨著層數的加深,其訓練效果不斷提高。VGG網絡是由5組卷積模塊組成的,根據每組模塊的卷積層數不同,可分為以下幾種模型:VGG11、VGG13、VGG16和VGG19。在此基礎上,Szegedy等[4]算法引入了多層感知卷積網絡,可以提取高度非線性的特征。隨著網絡深度的不斷加深,會出現梯度消失等問題,網絡的精確度也會隨之下降,為了解決梯度消失這一問題,He等[5]算法提出了一種殘差學習方法來解決模型加深所帶來的梯度消失問題。
隨著深度學習的發展,視頻分類方法的研究變得越來越活躍。其中循環神經網絡(recurrent neural network,RNN)[6]是一種處理序列數據的神經網絡,它不僅考慮了之前的輸入,還賦予了對網絡之前內容的“記憶”功能。長短期記憶(long short-term memory,LSTM)網絡[7]是一種改進的RNN算法,用于解決RNN算法中梯度消失的問題。上述兩種方法在求解時間序列問題中都取得了很好的效果。
本文的研究也采用混合網絡模型方法實現視頻分類。與圖像視頻相比,人體動作視頻具有信息冗余少、視頻簡單等優點。因此,本文改進了參考網絡結構,在不改變原有模型特性的前提下,提高視頻分類的精度。
本研究模型訓練的總體流程圖如圖1所示。

圖1 模型訓練總體流程圖
首先構建基于人體骨骼行為的視頻數據集,將構建好的數據集進行預處理;然后將數據輸入到模型進行訓練,若沒有達到訓練預期就返回模型進行數據調參,再次訓練,直到達到預期效果;最后對訓練好的模型進行測試,若測試效果達到預期則結束訓練,若沒有達到預期則循環訓練模型,直到達到預期。
本研究采用卷積神經網絡與LSTM網絡相結合的方法實現視頻圖像分類,在不損失性能的前提下對網絡進行了優化和改進。本文的網絡架構如圖2所示。

圖2 網絡架構
首先對數據集進行預處理,對視頻數據集逐幀提取,將得到的圖像進行降采樣,其目的是減少不必要的損耗,加快模型訓練速度,預處理后的視頻大小為200×100×150×3的三通道圖像。然后將數據輸入到模型中,進行5個計算模塊的卷積運算,每一個模塊都由2個卷積層、2個BatchNormalization層、1個激活層和1個MaxPooling層組成。經過卷積后,數據的尺寸轉化為200×1×2×512大小的三維矩陣,Flatten層再將矩陣轉化為1×1 024的一維向量。接著通過LSTM層提取幀的序列特征,這時的圖像尺寸為1×256。最后,通過全連接操作將圖像輸出為1×10尺寸的矩陣作為輸出分類標簽的概率,每一個數據代表著一個人體動作,概率最大的數所對應的就是該模型識別出的人體行為。
這里選用ReLU函數作為本模型的激活函數,ReLU函數的作用是不會讓模型發生梯度消失的問題。ReLU函數如公式(1)所示。其函數圖像如圖3所示。

圖3 ReLU函數
該模型的具體參數如表1所示。

表1 模型的具體參數
數據預處理的目的是減少數據量的同時保證模型的正確運行,降低模型的運行壓力,能夠加快訓練速度。部分原始數據會由于數據規模太大而無法導入模型,或使得模型運行中產生時間過長、內存溢出等問題。視頻數據預處理主要包括兩個部分:視頻下采樣以采集圖像,再將采集后的圖形進行逐幀下采樣操作,最終將數據控制在合適的范圍內。
本實驗使用的數據由內部人員提供,其中包括10種關于人體行為動作的視頻,每種類型由9~10個可變長度的短視頻組成,共99個視頻數據。每個視頻的尺寸為932×456×3,第三個參數為視頻的頻道數。圖4是數據集中幀數的統計圖。

圖4 數據集中幀數的統計圖
(1)幀數降采樣
視頻數據集由一系列圖像組成,如果不進行視頻降采樣,模型會因為數據量大而崩潰。由于本實驗視頻的幀率在9 Hz以上,且視頻中人體的移動速度不是很快,所以所有視頻的幀數降到了200幀,最終得到的視頻數據集維數為99×200×932×456×3。其中,第一個參數是視頻個數,第二個參數是每個視頻的幀數,第三個參數是每個視頻的寬度,第四個參數是每個視頻的高度,第五個參數是圖像的通道數。本文采用每三個連續幀中,舍棄中間幀。效果如圖5所示。

圖5 幀數降采樣
(2)圖像降采樣
在對視頻幀數降采樣后,對提取的每幅圖像進行處理。在數字圖像處理中,原始數據不能完全輸入,這會導致模型中運行的數據變慢。
在本研究中,如果使用間隔采樣方法,則會丟失大量的圖像細節。所以,本文采用“圖像金字塔”的概念[8],對每張圖片的數據進行處理,如圖6所示,通過對圖像金字塔的上采樣可以得到高分辨率的圖像,對圖像進行下采樣將得到低分辨率的圖像。最底層的圖像是高分辨率,最上層圖像是低分辨率的。

圖6 圖像金字塔
本文通過對原始圖像采用圖像金字塔概念進行降采樣,結果如圖7所示。原始圖片如圖7(a)所示,下采樣圖片如圖7(b)所示。

圖7 圖像降采樣
本文研究的網絡體系結構主要包括1個輸入層、10個卷積層、10個BatchNormalation層、10個激活層、5個MaxPooling層、1個Flatten層、1個LSTM層和1個dense層。
(1)卷積層
卷積計算能夠使信號信息實現傅里葉變換[9],隨著人們對圖像處理領域的研究,發現基于卷積神經網絡對圖像進行處理能夠取得極好的效果。通過設計合理的卷積核大小以及數量能夠提取出圖像本身的特征信息,卷積層數越多,其提取的特征信息就越深。因此卷積操作在圖像的處理領域具有廣泛的應用。
卷積的數學定義如公式(2)所示,該公式描述了一維信號的卷積計算。
式中,x(n)為輸入信號,h(n)為單元沖擊響應。在處理圖像時,需要將一維卷積擴展為二維結構。給定圖像矩陣和的實數范圍,坐標yi,j的卷積值為:
數字圖像簡單地說就是一個二維矩陣,每一個矩陣值代表著像素點值。在圖像上做此卷積操作就是利用卷積核在圖像上滑動,將圖像像素值與卷積核值相乘后再相加得出的結果,圖像在卷積過程中會改變原始圖像的大小,本研究可以通過設置strides和padding參數得到不同的輸出尺寸的特征圖。
圖8顯示了一個5×5的二維矩陣被一個3×3的卷積核操作得到一個3×3的矩陣。從圖中可以看出,卷積不僅可以進行矩陣運算,還可以實現圖像的下采樣。

圖8 二維圖像卷積運算
(2)歸一化處理
歸一化是指通過一些變換將數據映射到一個較小的范圍,一般是[-1,1],[0,1],其目的是將維數數據轉換為無量綱數據。為了消去維度,必須除以相同維度的某個數。常用的歸一化方法如公式(4)和(5)所示。
其中,max為樣本數據的最大值, min為樣本的最小值,x為樣本數據值。
式中,μ表示所有樣本數據的均值,σ表示所有樣本數據的標準差。
(3)LSTM
如前所述,LSTM可以很好地處理時間數據。與卷積網絡的輸入是平面矩陣不同,LSTM網絡的輸入需要一個具有序列意義的向量。該網絡外部為單個模塊,如圖9(a)所示,內部為鏈式結構,如圖9(b)所示。內部結構如圖10所示,單個的輸入和輸出由公式(6)定義。

圖9 LSTM架構

圖10 LSTM內部結構圖
(4)全連接層
本研究在模型的最后一層中加入了全連接層即Dense層。圖11展示了一個包含有輸入層、隱藏層和輸出層的簡單的全連接網絡。

圖11 全連接網絡
輸入層包含三個元素1x、x2和3x。中間層有四個節點1y、y2、y3和y4。輸出層有兩個節點 1z和z2,如果各層之間沒有激活函數,則中間層的值如公式(7)所示,輸出層的值如公式(8)所示。
網絡訓練的目的是使所有權重w滿足h(x) -z→ 0,即模型輸出和真實插值趨于零,損失函數L的定義如公式(9)所示。
本文在模型中引入了“梯度”的概念,計算損失函數對權重矩陣每個元素的偏導數,將歐氏距離損失函數展開如公式(10)所示。
這樣本文的網絡訓練目標改變為使公式9在各個方向上等于零。換句話說,在模型輸出值和真實值之間沒有梯度差。
本研究中使用的工具包括TensorFlow和OpenCV。實驗在單個NVIDIA Tesla V 100顯卡上訓練150次,平均每次訓練耗時50秒左右。TensorFlow是Google的一個開源項目,它提供了一個強大且用戶友好的API接口,允許用戶以各種方式快速構建模型。OpenCV在這個實驗中的作用是減少圖像的采樣,在不讓圖片失去自身獨有特性的情況下,縮小圖片的大小,使其在模型中運行更加方便。
數據集分為訓練數據集和測試集。視頻數據集的80%作為訓練集,20%作為測試集。本實驗將與庾晶等[10]提出的分類算法做對比,實驗數據表明,在第90次左右的訓練中,模型的分類準確率幾乎達到了98%。表2展示的是本算法與對比算法在不同訓練次數中準確度對比。圖12和圖13分別展示了訓練準確度變化圖和訓練集上的損失值曲線圖。

圖13 損失值變化曲線

表2 不同訓練次數精確度對比

圖12 訓練精確度變化趨勢
從圖中可以看出,在前20次訓練中,模型的準確率快速上升,在第90次訓練中穩定在98%左右。評價模型質量的另一個重要參數是“損失值”。從圖中可以看出,損失值在前30次訓練中迅速下降,在第80次訓練后損失值穩定下來。最后本模型訓練后的大小為58 MB左右,這個大小不僅可以嵌入到普通計算機中,也可以嵌入到移動端中,提高了本次研究在生產轉化方面的可行性。
本文結合卷積神經網絡的方法對人體行為動作進行檢測和分類。首先對視頻進行幀采樣、圖像采樣等視頻預處理操作,然后對處理后的數據輸入到模型中進行多次卷積。使用一層LSTM來提取幀的序列特征。最后通過全連接操作輸出分類標簽的概率。該模型對人體動作分類的準確率幾乎是98.2%。這篇文章的不足之處是人體動作的行為類型較少。