張傳雷,武大碩,向啟懷,陳 佳,劉麗欣
(天津科技大學人工智能學院,天津 300457)
基于視頻的人體行為識別技術作為計算機視覺領域研究熱點之一,具有較高的科學研究價值和應用價值,包括對視頻中圖像序列自動進行人體行為檢測、識別和理解等相關內容.目前而言,關于人體行為識別的研究較多,但很少涉及辦公領域.通過對辦公大廳內的監控視頻進行分析,能夠有效了解辦公人員工作狀態、工作習慣等,從而可以制定合理規章制度,督促人員合理安排工作時間,提高工作效率和服務質量.因此,進行基于視頻分析的辦公人員行為識別研究具有重要的應用價值.
關于人體行為識別的研究最早開始于 19世紀70年代左右,科學家在動物行為方面展開了機械學研究,但是由于當時計算機發展水平較低,計算資源有限,無法支持大量的科學計算,人體行為分析沒有得到相應的重視[1].到了 20世紀 90年代,為了對戰場以及日常民用視頻監控等場景下的視頻進行分析和理解,美國國防部高級研究計劃局、麻省理工學院和卡內基梅隆大學等多所高校參與了視覺監控系統研究.在法國,由國家信息與自動化研究所成立WILLOW 小組,主要致力于研究分析人體行為的分類和復雜場景識別等,而其成立的 PRIMA小組主要研究單個個體或者人群的行為識別.歐盟也設立了ADVISER項目,致力于研究智能交通管理系統、人機交互和人體行為分析與理解等[1].國內也有很多高校和研究機構進行人體行為識別的相關研究,包括清華大學、北京大學、中科院自動化模式識別國家重點實驗室、北京航空航天大學等[2].
在深度學習應用到行為識別領域前,國內外研究學者對基于手工特征的行為識別方法進行了廣泛研究.Bobick等[3]提出基于輪廓剪影進行特征提取,通過輪廓剪影建立運動能量圖來描述人體步態動作.這種方法在簡單背景下的描述能力較強,但在背景相對較復雜的情況下效果不佳.Peng等[4]提出基于時間序列引入對背景光流和軌跡的消除方法——iDT方法,使特征更加集中于人體運動的描述.iDT方法是深度學習進入該領域前效果、穩定性、可靠性最高的方法,不過算法復雜度很高.傳統的行為識別方法不具有普適性,基于深度學習從數據中自動學習特征的方法效果更優.
近年來,基于計算機深度學習模型的特征學習引起研究人員的廣泛關注,基于深度學習模型的特征提取也成為一個重點的研究對象.在傳統的機器學習中,往往是通過傳統算法提取特征,這樣會使結果更偏向于局部特征的表現,忽略了全局特征,從而造成局部特征提取對縮放、角度變換等因素不敏感.近幾年,作為深度學習模型之一的卷積神經網絡(convolution neural network,CNN)在圖像識別、語音識別、視頻處理等領域取得了巨大成功,基于卷積神經網絡的特征提取,可直接以圖像矩陣作為模型的輸入,避免了像傳統機器學習那樣前期對圖像數據的各種復雜的預處理,實現了監督式的學習,由局部到全局、由低級到高級的特征提取.CNN一般由輸入層、輸出層和多個隱藏層組成,隱藏層一般包括卷積層、池化層、激活層和全連層.
CNN在視頻中應用的一個方法是對每一幀用CNN進行識別,但這種方法只考慮到了空間上的視覺效果,沒有考慮到行為運動是一個序列,在時間維度上還有關聯,連續幀之間有一定耦合,是相互關聯的[5].因此,Simonyan等[6]提出了Two-Stream結構的CNN,此網絡不僅包括空間維度還包括時間維度,空間流處理靜止的圖像幀,得到形狀特征;而時間流處理連續數幀稠密光流[7],可以提取動作信息,利用多任務訓練的方法把這兩個數據集結合起來,但是兩個流都是2D卷積操作,不能很好地提取時間特征.
針對 2D卷積不能很好地提取時間特征,Tran等[8]提出了一個比較經典的 C3D網絡來提取視頻的空間特征和時域特征.這是首次提出 3D卷積網絡,讓3D卷積網絡逐漸成為研究熱點.相比于2D卷積網絡,3D卷積網絡能夠更好地提取空間特征和時間特征,而且只需要配合簡單的分類器就能有很好的表現.其使用 3×3×3的卷積核在實驗中比其他幾個結構都要好,得出的結構特征通過線性分類器后,幾乎可以達到當時最好的精度.3D卷積雖然能很好擬合時間域和空間域上的特征,但在時空兩個維度同時反向傳播進行權重修正時,也很容易造成兩個維度上一定程度的特征提取混亂.同時,3D卷積網絡的網絡結構的參量和運算成本相對于 2D卷積網絡而言要大的多.
Carreira等[9]提出了 I3D 網絡,I3D 用于圖像分類的 2D卷積網絡變形成可以提取時空特征的特征提取器,彌補了 3D卷積網絡參數多以及需要從零開始訓練的不足,相較于 C3D網絡有顯著提升.Donahue等[10]提出長時循環卷積神經網絡(longterm recurrent convolutional network,LRCN),其將CNN與LSTM相結合,通過CNN提取單幀圖像的卷積特征并將其按時間順序輸入 LSTM 中,最終得到視頻數據的行為特征.
本文針對視頻分析中空間和時間兩個維度的特征,提出一種卷積神經網絡、循環神經網絡和注意力模型的融合模型(ResNet-LSTM-Attention).對于空間維度,將單幀圖像輸入 ResNet模型,提取空間維度特征;對于時間維度,將多幀疊加后的空間維度特征作為輸入,輸入到循環神經網絡(LSTM)和注意力(Attention)模型的融合網絡模型;然后將 ResNet-LSTM-Attention模型的輸出經過 Softmax輸出作為結果,得到一個多模型融合的視頻人體行為識別的網絡模型.最后將本文網絡模型結構應用到辦公領域人員行為視頻分析.本文提出網絡模型優勢在于將空間域和時間域的特征分開提取.首先在靜止的圖片上提取特征,隨后在時間序列上分別進行擬合.該模型的兩層神經網絡相互獨立,訓練過程分開進行,所以提取時間域的 LSTM 的反向傳播不會貫穿到ResNet,從而一定程度上避免造成時間域和空間域上特征提取的混淆.
深度卷積神經網絡(deep convolutional neural networks,DCNN)在數據分類領域應用廣泛并且取得了巨大的突破,例如語音和文字、視頻和圖像方面,這是因為DCNN具有3個重要特征:局部區域感知、時空域上采樣和權重共享.但是深度卷積神經網絡也存在 3個問題:(1)常規的網絡并不是隨著網絡層數增加,堆疊效果會更好;(2)網絡層數越深,會出現梯度消失問題,使得訓練效果不會很好;(3)層數較淺的網絡通常不會使識別效果明顯提升[11].
為了解決上述 3個問題,He等[12]提出了殘差網絡ResNet,引入了殘差塊(residual block)構建深層網絡,殘差塊結構如圖 1所示.其中 x為輸入,H(x)為輸出,F(x)為殘差映射函數,weight layer為卷積層.

圖1 ResNet殘差塊結構Fig. 1 Residual block structure of ResNet
構建深層網絡的基本約束條件,使堆疊后的網絡模型誤差應比基礎的淺層模型更低,因此在實際中采用恒等映射的方法構建深層模型,即用 H(x)=x作為最佳解映射.當層數較深時,模型難以直接擬合實際映射 H(x),因此 ResNet引入了“shortcut”快捷連接,這就使問題轉換為擬合殘差映射F(x),此時實際映射 H(x)表示為 H(x)=F(x)+x.當 F(x)=0時,就構成了一個恒等映射 H(x)=x,模型只需最小化殘差函數 F(x)=H(x)-x來逼近實際映射以解決網絡層堆疊的性能退化問題[13].
現假設有共計 L層殘差塊連接,x(l)表示第 l個殘差塊的輸入,x(l+1)表示該殘差塊的輸出,也是第l+1個殘差塊的輸入.可得第l個殘差塊的輸出為

由式(1)可見,每層殘差網絡都在累積上層的殘差特征,保證了 l+1層始終比 l層擁有更多的特征信息,第 L層始終擁有最多信息.在反向傳播過程中,根據鏈式求導法則,誤差損失項 loss對于網絡前端的第l個殘差塊的梯度計算式為

本文針對視頻分析中空間維度的特征,采用ResNet模型.
在深度學習中能良好表達時序的網絡結構是循環神經網絡(recurrent neural network,RNN),其中表現最優的是LSTM.由于LSTM是對序列進行操作,多層的 LSTM 堆疊可使輸入的抽象級別增加,當時間增大即可分塊觀察,或在不同的時間尺度上表示問題,使得網絡能提取出更加抽象的特征,所以本文通過堆疊多層 LSTM 進行時間域的特征提取.本文所研究的辦公人員視頻分析問題是典型的時序問題,即某一個時刻的值受前一個時刻或幾個時刻的影響[14],因此選擇LSTM模型.
LSTM屬于時序卷積神經網絡,是由循環神經網絡衍生而來的,通過引入門函數,可以挖掘時間序列中相對較長間隔和延遲等的時序變化規律[7].圖2為LSTM 內部結構.圖中:xt為第 t個輸入序列元素值;c為細胞狀態或稱為記憶單元,控制信息的傳遞,也是網絡的核心;i為輸入門,它決定了當前xt保留多少信息給當前狀態ct;f為遺忘門,它決定保存多少前一時刻的細胞狀態ct?1至當前的ct;o為輸出門,它決定ct傳遞多少至當前狀態的輸出ht;ht?1指代在t-1時刻的隱藏層狀態[15].

圖2 LSTM內部結構圖Fig. 2 LSTM internal structure diagram
上述過程對應式(3)—式(8).

輸入門it、遺忘門 ft和輸出門ot的結果均為當前輸入序列xt和前一狀態輸出ht?1乘以相對應權重加上對應偏移量,最后經過 sigmoid激活函數所得.而當前時刻單元的即時狀態則使用 tanh激活函數激活,見式(6).

而新的單元狀態ct則由當前記憶和長期記憶ct-1結合而成,按式(7)計算.

則LSTM單元的輸出ht的計算式為

上述公式中,Wxi、Wxf、Wxo、Wxc分別是輸入層到輸入門、遺忘門、輸出門與細胞狀態的權重向量;而Whi、Who、Whf、Whc分別是隱藏層到輸入門、輸出門、遺忘門與細胞狀態的權重向量;bi、bo、bf、bc分別是遺忘門、輸入門、輸出門與細胞狀態的偏移量;σ(·)為sigmoid激活函數;tanh為雙曲正切激活函數;·表示向量元素乘.
圖3為LSTM分類模型.

圖3 LSTM分類模型Fig. 3 LSTM classification model
圖3中的輸入層是對應的視頻幀特征向量,在輸入層上層是正向的 LSTM 層,由一系列的 LSTM 單元構成.再將全部時刻的 LSTM 輸出進行加權平均操作后的結果作為上層的表示.最后通過 softmax層,進行全連接的操作,最終可以得到預測結果的類別 y[16].
Attention機制即注意力機制,通常被運用在圖像處理和自然語言處理領域.學者們提出了不同種類的注意力機制,識別效果比較明顯.針對辦公人員行為識別問題,本文對LSTM模型引入了注意力機制,它能對輸入序列提取特征信息,尋找特征信息之間的時序內在聯系,并通過加權平均方式給出識別結果,從而提高模型的識別準確度.對于一系列權重參數,Attention機制主旨思想是從序列中學習到每一個元素的重要程度,并按其重要程度將元素合并.加入Attention機制可以使模型的性能得到顯著提升;另外,使用 Attention機制也可以觀察到輸入序列中的信息是怎樣影響最后的輸出序列,有助于更好地理解模型的內部運作機制,更便于對一些預設的輸入與輸出進行參數調試.因此,在模型構建中本文在 LSTM后接入一層 Attention網絡進行時序特征提取.圖 4為LSTM-Attention分類模型.

圖4 LSTM-Attention分類模型Fig. 4 LSTM-Attention classification model
圖 4中輸入序列 x0,x1,x2,…,xt表示視頻幀空間特征的向量,將輸入依次傳入到 LSTM 單元后,得到對應隱藏層的輸出 h0,h1,h2,…,ht.同時,在隱藏層中引入 Attention機制,計算每個輸入分配的注意力概率分布值α0,α1,α2,…,αt,其思想是計算該時刻的隱藏層輸出與視頻幀空間特征向量的匹配得分占總體得分的比重[17],設hi為第i個時刻隱藏層的輸出狀態,為比視頻幀高一級的特征表示向量.將進行隨機初始化,作為一個參數在訓練過程中逐步更新,αi, i ∈ [ 0 , t]的計算式[18]為

其中:βi表示第i個隱藏層輸出hi在視頻幀表示向量中所占的分值,βi越大,說明這個時刻的輸入在整體中的注意力越大,它的計算公式為

式中:V、W、U為權值矩陣;b為偏置量;tanh為非線性激活函數.
各個時刻的注意力概率分布值經計算得出后,再計算包含特征信息的特征向量ε,公式為

最后,經softmax分類函數后可得預測類別y,計算式為

本文訓練模型的迭代方法采用梯度下降法,通過計算損失函數的梯度并更新模型的參數,最終到達收斂.為了使目標函數更加平穩地收斂,同時也為了提高算法的效率,每次只取小批量樣本進行訓練.模型使用的損失函數為交叉熵,計算式為

2.1.1 數據獲取
本文所用的包括訓練集、測試集和驗證集數據均是實驗室自行采集.獲取數據的步驟:(1)將所有動作錄制成視頻;(2)將視頻每10幀抽1幀,即每秒抽取約 3幀圖片;(3)將圖片中主要表現的人體行為部分進行裁剪.
所采集的視頻數據共分為 8類,分別是打電話、吃東西、離崗、玩手機、睡覺、抽煙、工作和交流,數據集示例圖片如圖5所示.
為了充分利用計算資源,本文將所有數據集做成了隊列的形式,分批讀入內存緩沖區,訓練數據依次從緩沖區里讀取,使用的方法為 TFRecord,它是TensorFlow提供的一種數據存儲辦法.TFRecord理論上可以保存任何格式的信息,可以將任何類型數據轉化為Tensorflow所支持的格式,這種方法可以讓數據集和網絡模型更容易相互適應匹配,此外利用TFRecord可以很方便實現隊列.

圖5 數據集圖片Fig. 5 Dataset image
2.1.2 數據增強及預處理
首先對圖片進行了分類,將截取下來的圖片進行了手工標注,標注為同一動作的圖片序列歸于同一文件夾中.隨后,對圖片進行了分組.將現有數據集分為兩組,其中一組從中抽取部分有代表性的關鍵幀進行 CNN網絡訓練,訓練集每個動作抽取 1000張圖片,驗證集每個動作抽取 200張圖片,共計 9600張圖片,并使用 OpenCV進行圖片的預處理以固定圖片大小為 283×240,在訓練的時候進行隨機裁剪和圖片增強.另一組數據集每 16幀為一組,每個動作分出若干組序列幀,將圖片統一大小為224×224.由于本組圖片直接用于已經訓練好的CNN模型提取概率特征,隨后進一步提取時間特征,所以不需要隨機裁剪.這樣共有 7066組訓練集,1347組驗證集,共計134608張圖片.
此外針對C3D模型的訓練,將圖片每16幀分為一組,每張圖片裁剪為 171×128,在訓練的時候進行隨機裁剪和增強,同樣也得到 7066組訓練集與1347組驗證集.
最后,對數據集進行增強與歸一化處理.在實際的訓練過程中,數據集偏少,所以使用在線增強數據集的方式來擴充訓練數據,即應用模型進行訓練時,首先獲得一個 batch數據,然后對這個 batch的數據進行隨機增強,同時通過GPU優化計算.此外,由于圖像數據是0~255的uint數據,本文對圖像進行歸一化處理,使圖像數據轉化為介于 0~1之間分布的數據,若原始圖像數據為x,則本文使用最常用的最大最小值歸一化方法按式(14)計算.

其中:xi表示圖像像素點的值;xmax和 xmin分別表示圖像像素的最大值和最小值.通過歸一化的方法,可以有效防止仿射變換的影響,減小集合變換的影響,同時加快梯度下降求最優解的速度[19].
本文設計的ResNet-LSTM-Attention網絡模型的網絡結構共兩層,分別為圖像特征提取層和時序特征提取層,圖像特征提取層提取圖片在二維空間上的特征,時序特征提取層提取圖像序列之間的時序特征.
2.2.1 圖像特征提取層
圖像特征提取層本文使用的殘差網絡(ResNet),該網絡結構能很好地解決CNN增加深度會造成梯度彌散或者梯度爆炸的問題.本文在網絡模型構建中使用的為50層的ResNet網絡,其結構參數和數據流圖如圖6所示.

圖6 殘差網絡結構參數和數據流圖Fig. 6 Residual network structure parameters and data flow diagram
網絡分為 5個隱藏層,分別為 conv1、conv2_x、conv3_x、conv4_x和 conv5_x.ResNet-50首先輸入7×7×64的卷積,隨后經過 3+4+6+3=16個building block,每個 block為 3層,即有 16×3=48層,最后連接全連接層,所以共 1+48+1=50層(這里僅僅指的是卷積層或者全連接層,激活層或池化層并沒有計算在內).
本文輸入圖片的大小為 224×224×3,首先經過第一個卷積核為7×7,步長為2的卷積層,圖片降維度到 112×112×64,然后經過一個核為 3×3,步長為 2的最大池化層,之后依次進入 block1、block2、block3、block4這 4個殘差塊,每個殘差塊有 3層卷積層,輸出 7×7×2048的向量,隨后連接上一層平均池化層,輸出 1×1×2048的特征向量,最后連接一層全連接層,輸出得分向量(未歸一化的概率向量).由于本文一共進行 8類動作的分類,所以最終圖像特征提取層的輸出為8個概率特征向量.
2.2.2 時序特征提取層
時序特征提取是在已有的概率特征向量序列上進行時域上的特征提取,包括輸入層(in)、LSTM層、Attention層和輸出層(out),下面將結合圖 7的LSTM-Attention數據流圖逐層進行闡述.

圖7 LSTM-Attention數據流圖Fig. 7 LSTM-Attention data flow diagram
in層的輸入是圖像特征提取層的輸出,目的在于對圖像概率特征向量進行放大處理.隨后為兩層具有 128個單元的 LSTM,第一層 LSTM 的輸出作為第二層 LSTM 的輸入,即LSTM 層后緊跟Attention網絡,通過引入 Attention對序列進行權重分配.網絡模型的最后為 out層,Attention層輸出為加權后的得分向量,輸出每個元素的維度為 1*128,最后再連接 out層,對得分向量進行降維,最后的輸出為 1*8的未歸一化的概率向量.即最開始輸入時序提取層的維度為batch_size*16*8,至輸出層輸出的維度為batch_size*8.
本文對于圖像特征提取層和時序特征提取層的具體步驟總結如下:
(1)截取視頻中動作的關鍵幀,訓練出準確率較高的 ResNet模型,從而使得每幀圖片的行為類別的可能性體現在最后的得分向量中.
(2)整理序列幀,將序列中每一幀分別輸入訓練好的ResNet模型,得到logits序列,即未歸一化的概率序列.
(3)對每幀的得分向量進行特征放大,隨后進入時序提取層,通過連接輸出層將softmax概率歸一化.
將數據進行預處理后,對 ResNet-LSTM-Attention模型與 C3D模型進行實驗結果分析和對比.本文代碼基于 TensorFlow實現,運行環境:操作系統Windows 10,Python 版本 Python3.6,TensorFlow 版本 Tensorflow-1.11.0,GPU驅動為 CUDA9.0與CUDNN7.1.
實驗步驟分為定義階段、訓練階段和評估階段.其中:定義階段包括對于模型結構、損失函數及優化器等的定義[20],具體定義指標見表 1,其中Dropout參數取的是0.8,L2正則化lambda值取的是0.005,最大 batch值為 200000,收斂閾值為 0.01,即當訓練集損失低于 0.01時視為完全收斂,并記錄此時模型收斂時間與batch數.訓練階段使用3個模型對相同的數據進行訓練與測試,本文提出的 ResNet-LSTM-Attention模型作為實驗組,C3D和沒有Attention機制的ResNet-LSTM模型作為對照組.

表1 模型定義指標Tab. 1 Model parameters
首先將數據訓練 C3D模型,C3D模型損失率及準確率變化如圖 8所示,其中橙色的線代表訓練操作,藍色的線代表驗證操作.在 C3D模型中,大約經過3000個batch后模型開始收斂,準確率逐漸上升,損失逐漸下降.經過 130000個 batch后,訓練集的損失收斂到 0.007左右,準確率達到 1;驗證集的損失收斂在1~3,準確率達到0.55左右.
然后,使用 ResNet-LSTM 模型對同一數據集進行訓練和驗證.ResNet-LSTM 模型損失率和準確率變化如圖 9所示.在大約 2000個 batch后開始收斂,準確率逐漸上升,損失逐漸下降.經過200000個batch后,訓練集的損失收斂到0.002左右,準確率達到 1;驗證集的損失收斂在 1.56左右,準確率達到0.73左右.
最后,將同樣的數據驗證本文提出的 ResNet-LSTM-Attention模型,由于Attention機制的引入,將圖像特征提取層和時序特征提取層分開來看.圖像特征提取層損失率和準確率變化如圖10所示.

圖8 C3D模型的損失率和準確率變化Fig. 8 Loss change and accuracy change in C3D model

圖9 ResNet-LSTM模型的損失率和準確率變化Fig. 9 Loss change and accuracy change in ResNet-LSTM model
在圖像特征提取層中,大約經過 2000個 batch后模型開始收斂,準確率逐漸上升,損失逐漸下降.經過全部 200000個 batch后,訓練集的損失收斂到0.008左右,準確率達到1,即對訓練集的分類全部正確;而對驗證集的損失收斂到 1左右,準確率達到0.75左右.

圖10 本文模型圖像特征提取層損失率和準確率變化Fig. 10 Loss change and accuracy change in image feature extraction layer of the new model
經過時序特征提取層后,損失率和準確率變化如圖 11所示.在時序特征提取層,約經過 7000個batch后模型開始收斂,準確率逐漸上升,損失逐漸下降.經過200000個batch,訓練集的損失收斂到0.09左右,準確率達到0.96左右;對驗證集的損失收斂到1左右,準確率達到0.8左右.
上述實驗結果表明ResNet-LSTM-Attention的網絡結構最終對驗證集可以達到0.8左右的準確率,高于無 Attention機制的模型 7個百分點,并且遠遠高于經典的 C3D模型,證明了本文提出方法的可行性.無 Attention機制的模型相較于本文提出模型,雖然在訓練集的損失較低,精度較高,但驗證集卻全面落后,證明了其稍微出現過擬合現象,而本文模型由于Attention機制的加入,能夠更好提取重點特征,魯棒性加強,驗證集精度為所有模型中最高,表現最好.
從計算速度方面看,C3D 用時 348min,遠高于ResNet-LSTM 模型(294min)和 ResNet-LSTMAttention模型(266min),后兩個模型雖同為2D卷積模型,但本文提出的具有注意力機制的模型用時比無注意力機制的模型少28min.

圖11 本文模型時序特征提取層損失率和準確率變化Fig. 11 Loss change and accuracy change in time series feature extraction layer of the new model
本文提出了一種基于ResNet-LSTM-Attention網絡結構的辦公人員行為智能識別方法,并通過實驗對比證明了使用2D卷積神經網絡ResNet結合LSTM進行時序分類要比 3D模型用時少,精度高;而注意力機制的加入使得模型魯棒性增強,減少過擬合程度,并且訓練用時和精度都有提升,論證了本文提出的方法具備一定的意義與價值.在后續的研究中,本文將針對復雜環境下(如光線不良、有遮擋等)的視頻數據進一步提升方法的性能,可以通過在多種復雜環境下采集數據集用以擴張訓練集,同時通過對訓練集進行圖片增強的方式嘗試解決泛化能力不足的問題.