嚴倩倩
(西安職業(yè)技術(shù)學(xué)院,陜西西安,710077)
近些年來,神經(jīng)網(wǎng)絡(luò)在圖像分類領(lǐng)域取得了不凡的成績,并隨著研究的深入提出了很多新的網(wǎng)絡(luò)模型,比如雙流網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)CNN[1](Convolutional Neural Network)、循環(huán)神經(jīng)網(wǎng)絡(luò)RNN[2](Recurrent Neural Network)等。
雙流網(wǎng)絡(luò)由光流網(wǎng)絡(luò)和RGB 網(wǎng)絡(luò)并行組成,需要同時處理圖像序列和光流圖像,對計算資源要求較高,且兩個網(wǎng)絡(luò)的融合方式和策略的不同也會對性能產(chǎn)生較大的影響。CNN 分為2D CNN 和3D CNN,2D CNN 經(jīng)常被用于處理和分析二維數(shù)據(jù)(比如圖像),只能提取空間特征;3D CNN可以同時提取時空特征,但是訓(xùn)練模型時需要更多的計算資源和更大的數(shù)據(jù)集,會出現(xiàn)計算復(fù)雜度高、內(nèi)存消耗大等問題,并且隨著網(wǎng)絡(luò)層數(shù)的增加會出現(xiàn)梯度消失和梯度爆炸問題。殘差網(wǎng)絡(luò)ResNet[3](Residual Network,ResNet)是一種特殊類型的卷積網(wǎng)絡(luò),允許信息在網(wǎng)絡(luò)中容易地進行流動,有助于解決層數(shù)增加而網(wǎng)絡(luò)性能越差的問題。
RNN 引入循環(huán)結(jié)構(gòu)來對序列中先前的信息進行建模,用于處理序列數(shù)據(jù),但是在處理長序列時可能會遇到梯度消失或爆炸問題,為了解決傳統(tǒng)的RNN 問題,引入門控機制來控制信息的流動和遺忘,代表模型有長短期記憶網(wǎng)絡(luò)LSTM(Long-Short Term Memory)和門控循環(huán)單元GRU[4](Gated Recurrent Unit),而GRU 較少的門控數(shù)量使得它在某些情況下對于處理較短序列的任務(wù)來說是一個更輕量級的選擇。
視頻流環(huán)境下的動作識別是目前各位學(xué)者的重要研究方向,其識別包括時空兩個維度的特征提取[5],使用單一網(wǎng)絡(luò)很難取得良好的識別效果,因此很多學(xué)者會融合多個模型的特點提出新的網(wǎng)絡(luò)模型。為了解決傳統(tǒng)網(wǎng)絡(luò)模型層數(shù)增加,網(wǎng)絡(luò)性能更差的問題,以及更好地獲取到視頻之間的上下文信息,本文提出了一種基于殘差網(wǎng)絡(luò)(Residual Network,ResNet)與GRU 的動作識別模型G-ResNet。
2015 年Kaiming He 等人在論文《Deep Residual Learning for Image Recognition》中提出殘差網(wǎng)絡(luò)ResNet,其通過引入殘差塊和跳躍連接,解決了深度神經(jīng)網(wǎng)絡(luò)退化的問題。殘差網(wǎng)絡(luò)的基本結(jié)構(gòu)如圖1 所示。
圖1 殘差結(jié)構(gòu)
從圖1 中可以看出相比于之前增加了一個恒等映射,這樣便很好的解決了由于網(wǎng)絡(luò)層數(shù)的增加而帶來的網(wǎng)絡(luò)梯度不明顯的復(fù)雜問題,因此殘差網(wǎng)絡(luò)可以把網(wǎng)絡(luò)層數(shù)做的很深。到目前為止網(wǎng)絡(luò)的層數(shù)可以達到上千層,同時又能保證很好的訓(xùn)練效果;并且簡單的層數(shù)疊加也并未給整個網(wǎng)絡(luò)的訓(xùn)練增加額外的參數(shù),與此同時也提高了網(wǎng)絡(luò)訓(xùn)練的效果與處理數(shù)據(jù)的效率。本文進行空間維度特征提取的網(wǎng)絡(luò)是ResNet 34,該網(wǎng)絡(luò)的具體參數(shù)如表1 所示。
表1 ResNet34網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)表
2014 年Cho 等人在論文《Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling》中提出GRU,其能夠建立視頻序列間的依賴關(guān)系,在時間序列問題方面表現(xiàn)良好。本文使用GRU 進行時序特征的提取,該網(wǎng)絡(luò)主要包括兩個門模塊,更新門決定了過去時刻的隱藏狀態(tài)對當前時刻的影響,重置門決定了過去時刻的隱藏狀態(tài)在當前時刻所需的重置程度。GRU 的結(jié)構(gòu)圖如圖2 所示。
圖2 GRU 門控循環(huán)單元結(jié)構(gòu)
在圖2 中,zt代表更新門,rt代表重置門。其中zt的取值范圍是0 到1,值越接近于0 說明越依賴于過去的隱藏狀態(tài),而忽略當前的信息;值越接近于1 說明會更多的利用當前的輸入信息來更新隱藏狀態(tài)。rt的取值范圍是0 到1,值越接近0 說明過去的信息越傾向于被丟棄;值越接近于1 說明越傾向于保留更多的過去信息。根據(jù)圖2 的GRU 單元結(jié)構(gòu)圖,則前向傳播公式為:
在上述的公式中,[ ]表示兩個向量相乘,*表示矩陣的乘積。
GRU 網(wǎng)絡(luò)的分類模型如圖3 所示。
圖3 GRU 分類模型
在圖3 中,x1、x2...為輸入層,即特征向量,使用GRU進行特征提取,對提取到的特征進行加權(quán)操作,然后對加權(quán)之后的特征進行全連接操作,最終得到分類預(yù)測結(jié)果。
本文的G-ResNet 網(wǎng)絡(luò)模型包含兩大基本構(gòu)成:圖像的空間特征提取模塊、幀之間的時序信息提取模塊。視頻動作識別算法整體框架如圖4 所示,首先進行視頻幀提取,對進行圖像預(yù)處理,然后利用深度殘差網(wǎng)絡(luò)ResNet34 提取深層空間特征,GRU 網(wǎng)絡(luò)獲取視頻的時序信息,對G-ResNet 模型進行訓(xùn)練,最后使用訓(xùn)練好的模型完成視頻流的動作識別。
圖4 基于G-ResNet 網(wǎng)絡(luò)的動作識別算法框架
對于視頻流中動作的識別,本文采用ResNet34 與GRU 結(jié)合的方式進行,首先將圖像視頻輸入到ResNet34中提取空間維度特征;然后將提取到的特征輸入到GRU 中,用于時序信息的提取建模;接著對提取到的特征進行加權(quán)操作,將加權(quán)之后的特征進行全連接操作,最終得到分類預(yù)測結(jié)果。建立的G-ResNet 網(wǎng)絡(luò)模型如圖5 所示。
圖5 G-ResNet 網(wǎng)絡(luò)模型結(jié)構(gòu)
損失函數(shù)CrossEntropy(交叉熵損失函數(shù))在計算損失時會將預(yù)測值和真實值直接比較,要求預(yù)測值必須無限接近真實標簽的one-hot 編碼形式,然而one-hot 編碼會導(dǎo)致網(wǎng)絡(luò)評估時對于類別的預(yù)測非常自信,忽略其他類別的可能性,會使得模型對于噪聲或者異常樣本過度敏感;而SmoothCrossEntropy(標簽平滑交叉熵損失函數(shù))通過對標簽平滑來緩解這種情況,它將one-hot 編碼轉(zhuǎn)化為概率分布,這樣每個類別不再是非此即彼,可以取到介于0 到1 之間的值,這樣的操作可以增加模型對于不確定性的魯棒性、減少過擬合、提升分類性能。因此在第三次訓(xùn)練時將損失函數(shù)CrossEntropy 轉(zhuǎn)換成SmoothCrossEntropy,目的是讓預(yù)測值向真實結(jié)果靠攏。
對多分類問題一般采用Softmax 方法。首先將數(shù)據(jù)(即視頻圖像)輸入到架構(gòu)好的網(wǎng)絡(luò)模型中提取特征,計算出輸入數(shù)據(jù)所屬類別的置信度范圍,然后使用激活函數(shù)Softmax 將輸出轉(zhuǎn)化為概率分布,即對應(yīng)各個類別的概率值,如式(6):
式(6)使用交叉熵函數(shù)來計算損失值,其中i表示多類中的某一類,公式為式(7)、式(8):
最后,對預(yù)估的概率和分類所屬真實概率的交叉熵進行最小化操作,得出最優(yōu)估計概率的分布,公式如式(9):
在訓(xùn)練過程中,模型會趨向于正確和錯誤分類相差較大的范圍。當樣本數(shù)據(jù)較少時就會出現(xiàn)過擬合現(xiàn)象,而Label Smoothing(標簽平滑)通過引入噪聲、將標簽轉(zhuǎn)化為概率分布形式等操作,達到減少過擬合、緩解標簽不確定性的目標,變換過程如式(10):
其中K表示多分類的類別總數(shù),ε是一個較小的超參數(shù)。
與之對應(yīng),將交叉熵損失函數(shù)作如式(11)的改變:
同理,將最優(yōu)的預(yù)測概率分布作如式(12)的改變:
代表任意的實數(shù),最后是經(jīng)過弱化正、負訓(xùn)練數(shù)據(jù)輸出之間的一個范圍差,使模型的泛化效果更強、性能更穩(wěn)定。
實驗環(huán)境:Intel(R) Core(TM) i7-11390H CPU @3.40GHz的PC 機,Windows11 64 位操作系統(tǒng),通過xshell 和xftp遠程連接服務(wù)器基于Ubutun 系統(tǒng),OpenCV 版本4.2.0,采用Pytorch 框架,Python 開發(fā)語言編程實現(xiàn)。使用兩個公開的數(shù)據(jù)集UCF101、HMDB51 驗證G-ResNet 網(wǎng)絡(luò)模型的識別效果。
(1)圖像插值化處理
數(shù)據(jù)清洗、特征轉(zhuǎn)換、簡單縮放等操作都是數(shù)據(jù)預(yù)處理的常用方法,其中數(shù)據(jù)清洗用于去除噪聲、處理缺失值等,確保數(shù)據(jù)的完整性和一致性;特征轉(zhuǎn)換是通過數(shù)學(xué)變換將原始特征轉(zhuǎn)換為更具有可分性或表示能力的新特征;簡單縮放用于將數(shù)值型特征的取值范圍縮放到一個較小的區(qū)間內(nèi)。對于單一動作數(shù)據(jù)而言,其是一組包含時序信息的圖像,且每個動作持續(xù)的時間也是不一致的,為了方便計算提高效率,需要對圖像隊列做插值化處理進行縮放,最終選擇縮放到16 張。
(2)數(shù)據(jù)增強
數(shù)據(jù)增強技術(shù)是通過對原始訓(xùn)練數(shù)據(jù)進行變換和處理,生成新的訓(xùn)練樣本來擴充數(shù)據(jù)集的方法。在網(wǎng)絡(luò)訓(xùn)練過程中,為了使模型具有更好的魯棒性、泛化能力和對不同場景的適應(yīng)能力,需要對數(shù)據(jù)進行增強。常用的數(shù)據(jù)增強技術(shù)包括平移、旋轉(zhuǎn)、縮放、剪切、增加噪聲、彈性變形等,本文對數(shù)據(jù)增強的具體操作如下:
①圖像顏色的增強,包括飽和度、亮度、對比度等。
②圖像大小的剪切,偏移中心點,并裁剪出固定大小的區(qū)域圖像。
G-ResNet 網(wǎng)絡(luò)模型使用三次訓(xùn)練優(yōu)化,以達到最優(yōu)效果,具體網(wǎng)絡(luò)訓(xùn)練策略如圖6 所示。
圖6 網(wǎng)絡(luò)訓(xùn)練策略原理
(1)第一次訓(xùn)練時,輸入16 張連續(xù)的圖像,并將圖像縮放至88×88,目的是得到較大的Batch Size,加快模型訓(xùn)練速度,降低訓(xùn)練過程中的噪聲影響。接下來對16 張圖像使用3D-CONV 進行特征預(yù)提取,輸入尺寸為(Batch Size,16,88,88),卷積后尺寸為(Batch Size,16×64,44,44),變形為(Batch Size×16,64,44,44),把temestep 維合并到batchsize 維,目的是使用2D-ResNet34進行二維卷積,timestep 維數(shù)據(jù)則保留到GRU 模塊再處理。
(2)第一次訓(xùn)練完成后,將得到的權(quán)重值初始化第二次訓(xùn)練的模型。與第一次訓(xùn)練模型不同,將Back-end 模塊的1D-conv 替換成GRU,輸入圖像尺寸為(224×224),以便學(xué)習(xí)到更多的特征信息,同時固定紅框內(nèi)的模塊參數(shù)。
(3)使用第二次訓(xùn)練得到的權(quán)重來初始化第三次訓(xùn)練的模型,與第二次訓(xùn)練模型不同,將Loss 模塊的損失函數(shù)CrossEntropy 替換成SmoothCrossEntropy,輸入圖像尺寸為(256×256),以便學(xué)習(xí)到更加細微的特征信息。
第三次訓(xùn)練完成后,即可得到G-ResNet 模型。
針對G-ResNet 模型的訓(xùn)練,本文將數(shù)據(jù)集UCF101 和HMDB51 以9:1 的比例劃分為訓(xùn)練集和測試集分別進行訓(xùn)練、測試,訓(xùn)練過程的損失值和識別準確率變化如圖7、圖8 所示。
圖7 UCF101 和HMDB51 數(shù)據(jù)集變化損失
圖8 UCF101 和HMDB51 測試集準確率變化曲線
圖7 為G-ResNet 模型在UCF101 和HMDB51 在 訓(xùn)練過程中的損失值變化,從圖中可以看出,隨著訓(xùn)練輪次的增加,損失值不斷減小,最終趨于平穩(wěn),說明網(wǎng)絡(luò)模型已經(jīng)接近了最優(yōu)解,即分類結(jié)果逐漸趨于正確。圖8 為G-ResNet模型在訓(xùn)練過程中的準確率變化,從圖中可以看出,隨著訓(xùn)練輪次的增加,準確率逐漸增加,最終趨于平穩(wěn),說明網(wǎng)絡(luò)模型已經(jīng)達到相對穩(wěn)定的性能水平。
為了更加直觀的看到G-ResNet 模型性能上的優(yōu)勢,本文將C3D[6]、Veep deep two stream[7]、LRCN[8]、P3D[9]、ST-ResNet[10]等模型在UCF101 和HMDB51 數(shù)據(jù)集上進行測試,并與G-ResNet 模型進行對比,各模型識別的準確率如表2 所示。
表2 人體動作識別準確率對比
從表2 可以看出,G-ResNet 模型在UCF101 和HMDB51數(shù)據(jù)集上的識別準確率明顯高于其他網(wǎng)絡(luò)模型,說明基于深度殘差網(wǎng)絡(luò)與門控循環(huán)神經(jīng)網(wǎng)絡(luò)的G-ResNet 能夠很好的應(yīng)用于視頻領(lǐng)域的動作識別。
本文提出了一種基于視頻流的人體動作識別的網(wǎng)絡(luò)模型G-ResNet,該模型使用深度殘差網(wǎng)絡(luò)ResNet34 提取空間域特征信息,使用循環(huán)神經(jīng)網(wǎng)絡(luò)GRU 提取時間域信息進行建模。實驗結(jié)果表明,G-ResNet 模型在一定程度上提高了識別準確率,但是該方式的對輸入圖像進行了一系列的裁剪、拉伸操作,改變長寬的比例,可能會導(dǎo)致某些特征不被注意到。在后期的研究中,可以探尋如何在輸入任意尺寸圖像,或者即使修改了圖像的大小,也能提取足夠多的特征,提高識別準確率。