石 開,胡 燕
武漢理工大學 計算機學院,武漢430070
用機器自動生成自然語言文字來描述視頻內容稱為視頻標注。它在視覺和文字之間起到非常重要的橋接作用,同時它也是計算機視覺領域當中一項非常有挑戰性的任務。視頻標注有非常廣泛的實際應用前景,例如,可以利用文字標注來高效地進行視頻索引和視頻分類。結合語音合成技術,使用語音描述視頻內容也可以使視障人士受益[1]。由于基于序列學習的方式相比基于句子模板的方法產生視頻標注更加直接且產生的句子結構更加靈活,因此,近年來提出的模型很多都是基于序列學習的方法[2-7]。在序列學習的方法上結合注意力機制或語義信息目前已經開始逐漸受到研究人員的關注[8-11]。
文獻[3]提出名為S2VT(Sequence to Sequence-Video to Text)的序列到序列的視頻標注模型。它采用了機器翻譯領域廣泛應用的編碼器-解碼器框架,用CNN 和LSTM 共同組成編碼器,解碼器單獨由LSTM 構成。它的訓練過程是端到端的,而且可以處理變長輸入輸出并能學習輸入序列中的任意時間結構。在S2VT模型的基礎之上,文獻[8]結合時序注意力機制,通過在解碼生成每個單詞時給編碼端第一層LSTM 的輸出分配不同權重的方式提升焦距關鍵信息的能力。文獻[1]中提出的基于3D CNN-LSTM 結構的視頻標注模型中,使用3D CNN 網絡學習視頻局部信息的同時使用了注意力機制學習視頻特征的全局時序關系。這兩種模型在一定程度上使解碼端能夠獲取更多的視頻編碼信息。還有一些視頻標注模型引入了語義信息,如文獻[9]提出了一個統一的框架,同時學習標注生成和語義嵌入,后者通過創建一個語義空間強化視頻內容和生成文字之間的語義關系。文獻[10]在視頻標注過程使用了語義探測機制預測視頻的語義標簽概率,并將語義概率信息用來擴展解碼端LSTM 網絡的參數矩陣,取得了非常優秀的效果。但是它提出的模型由圖像標注模型拓展而成,在生成視頻特征表示的時候和文獻[9]中的方法一樣簡單的對特征序列進行了聚合平均,使得模型失去了學習原始視頻特征時間序列信息的能力,而且,它采用的分階段的策略,語義探測模型和視頻標注模型分開訓練,訓練過程不是端到端的。文獻[11]提出的視頻標注模型在LSTM 內部結合了注意力機制,并且在計算損失時考慮了視頻內容和產生句子語義相關性,標注效果有較大提升。
還有許多其他的視頻標注方法,有的方法采用多模態信息,如視頻、音頻和類別信息等,同時使用這些信息產生視頻特征表示[12-13]。有的方法探尋使用多記憶模型來加強長距離依賴關系學習能力[14]。還有的方法同時利用了編解碼框架中視頻到句子的前向信息和句子到視頻的后向信息[15]。這些方法極大地提升了視頻標注的水平,但是仍然有一些問題存在,例如將各種信息編碼成單一特征表示導致解碼信息單一。大部分的視頻標注模型都先將各種信息經過編碼器生成視頻的特征表示而后傳遞給解碼端,導致解碼信息過少。
針對這個問題,本文提出一個名為MHA-S2VT 的改進模型,通過使用多頭注意力[16]機制使解碼端能夠獲得更多視頻編碼信息。S2VT是一個簡單但是有效的視頻標注模型,以它為基礎進行改進。MHA是Multi-Head Attention 的首字母縮寫,代表多頭注意力,原本用在機器翻譯領域并取得優秀的效果。為了使解碼信息進一步豐富,還在模型中加入了語義探測和語義融合機制。將優化后的MHA-S2VT 模型和原始S2VT 模型以及其他一些模型進行對比,和模型自身也進行了分步對比,分析多頭注意力和語義信息給模型帶來的效果提升。
視頻標注模型總體結構如圖1 所示,在S2VT 模型的基礎上添加了上下文環境向量用來作為多頭注意力的鍵和值。為了能夠使用語義信息,還在解碼端添加了語義探測單元。模型遵從編碼器-解碼器結構,編碼器的主體是一個雙層LSTM 網絡,接收由CNN 提取的視頻特征序列,并用第二層LSTM 的輸出構建上下文環境向量。解碼器由語義探測單元和雙層LSTM 解碼網絡組成。圖1中Tag代表預先提取的語義概念標簽。雙層解碼LSTM 網絡接收編碼網絡、語義預測單元的輸出以及上下文環境向量和語義標簽作為輸入。

圖1 模型總體結構
S2VT 模型的主體部分是一個雙層LSTM 網絡。LSTM 由于可以通過遺忘門釋放無關信息使得它可以避免消息飽和和梯度消失問題,在機器翻譯和視頻標注領域使用非常廣泛。
對于一個LSTM 單元,在步數t 的時候給定輸入xt,LSTM單元可以用公式表述為:

其中it,ft和ot代表輸入門、遺忘門和輸出門。σ 代表用sigmoid 激活函數,φ 代表tanh 激活函數,*代表元素點乘。ct代表細胞狀態,ht是在第t 步產生的輸出。
對于第一層LSTM網絡可用公式表述為:

其中,xt在編碼端代表由CNN 提取的單個視頻特征,在解碼端則代表用零填充的空向量。
第二層LSTM網絡也可以用公式表述為:

其中,wt-1在解碼端代表上一次生成的詞向量,在編碼端則用零填充。代表第一層LSTM網絡的輸出。在解碼端的每一步t,用第二層LSTM 網絡的輸出生成單詞。生成單詞y的概率分布可以表示為:

其中,yι∈V,V 代表整個詞表。模型選擇詞表中概率最大的單詞生成句子。為了和后面形式統一,把標注生成部分的損失定義為:

N 和M 代表生成句子總數、句子中單詞的數量。p(wj)代表根據當前狀態和前一個生成的單詞生成的第j 個單詞在標注中的概率。
如圖2 所示,用A 表示多頭注意力機制,在解碼的每一步第二層LSTM 都要使用多頭注意獲取編碼端信息。多頭注意力的鍵和值都是在編碼階段生成的上下文環境向量,問題則是上一步的輸出狀態。和文獻[8]使用第一層LSTM 輸出作為上下文環境向量的方式不同,使用第二層LSTM 網絡的輸出向量。受到文獻[15]中機器翻譯模型的啟發,在改進的模型中使用多頭注意力,多頭注意力的優點在于可以捕獲不同子空間上的相關信息,在機器翻譯中取得了更好的效果。

圖2 解碼單元
多頭注意力的第一步是將問題、鍵和值線性映射到多個不同的子空間,分別計算映射后每一子空間的上下文向量的加權和。用C 代表上下文環境向量代表LSTM 第二層網絡上一步輸出向量,第一步可以用公式表述為:

第二步是將n 個子空間上的注意力輸出拼接得到多頭注意力輸出,用公式表述為:

WO∈Rndv×dh。拼接之后的結果作為第二層LSTM 單元的輸入之一。
對于每一個子空間,進行線性映射需要的參數個數為2×dh×dk+dh×dv個,為了方便計算,將n設置為10,上下文向量映射到10 個子空間,dk=dv=dh/10。加上拼接所用的參數WO,最后總的參數個數為4×dh×dh個。由于每個子空間都把維度減少到了原來的十分之一,所以總的參數個數和所有維度下單頭注意力相比并沒有增加多少。
受文獻[10]和圖像標注[17-18]的啟發,將語義探測看成一個多分類任務。給定一個輸入向量V,以及標簽向量T=[t1,t2,…,tK]∈{0 ,1}K,目標是使生成的預測標簽和T 的交叉熵損失最小。同文獻[10]中一樣使用多層感知機和sigmoid 函數實現多分類,語義探測單元可用公式表述為:

其中,f 代表多層感知機,σ 是sigmoid 函數。s代表預測結果,e代表損失。
預先選擇數據集中出現次數最多的K 個名詞、動詞和形容詞組成一組語義概念集合,然后根據數據集中每個視頻的文字標注中是否含有語義概念集合中的單詞生成視頻對應的真實語義標簽Y。將編碼完成時第一層LSTM 和第二層LSTM 的的細胞狀態拼接作為語義探測單元的輸入,產生語義概率S,可用公式表述為:

c(1)和c(2)分別代表編碼端第一層和第二層的細胞狀態。對于大小為N 數據集來說,總的語義探測損失為:

模型是端到端的,因此總損失為標注模型的損失加上語義探測單元的損失。總的損失可用公式表述為:

λ是一個常量系數。
如圖2 所示,用D 和W 代表兩種語義融合方式,在解碼端三個地方用到。對于第一層網絡,D 代表對預測的語義概率和預提取的語義標簽進行簡單的點乘。在圖2 中用Tag 代表預先提取的語義標簽集合,由單詞的one-hot向量組成,D操作用公式表述為:

WS∈Rdh×K,WT∈Rdh×K,*代表元素點乘。S(1)對于解碼端每一步都是相同的,將S(1)作為解碼端LSTM 網絡第一層的輸入。
對于解碼LSTM 網絡,W 代表將語義概率用來對LSTM 進行參數矩陣擴展。這一部分借鑒了文獻[10]的方式處理,但是在LSTM 單元外部進行參數擴展,以減少總的參數數量和訓練時間。
在公式(1)中,以輸入xt-1為例,對它進行參數矩陣語義擴展:

其中,Wb∈Rdf×K,Wc∈Rdf×dx。df代表參數擴展后的維度,dx代表詞向量維度,*同樣代表元素點乘。
同理,對于ht-1進行同樣的操作。然后將參數擴展后的結果和多頭注意力輸出或第一層LSTM 輸出狀態進行拼接。特別的,xt-1和ht-1分別代表第二層LSTM單元上一步生成的單詞向量和上一步狀態輸出。將參數擴展之后的結果和多頭注意力的輸出以及第一層LSTM單元的輸出拼接作為第二層LSTM的解碼輸入。
在語義探測和語義融合中,總共引入的參數數量為4×dh×K+2×df×K+df×(dh+dx)。在實驗中將K 大小設置為300,dh和dx都設置為相同維度,df設置為隱藏層單元數的一半。
改進模型在S2VT模型的基礎之上結合了多頭注意力以及語義信息的探測和使用。改進后的模型總體訓練流程如下:
步驟1視頻特征提取
對于訓練數據集中的每一個視頻,先用預訓練的CNN提取序列特征。
步驟2建立詞表
對訓練數據集中每個視頻對應的文字標注,統計單詞出現次數,將出現次數大于閥值的單詞加入詞表當中。
步驟3語義概念選擇
在詞表中選擇出現次數最多的前K 個名詞、動詞和形容詞作為語義概念,加入到語義概念集合中。
步驟4文字標注處理
為詞表中每個單詞生成one-hot 向量表示,將視頻標注和語義概念集合中的單詞用one-hot向量進行替換。
步驟5視頻真實語義標簽生成
根據視頻對應的標注以及語義概念集合,生成一個K 維的真實語義標簽。若語義集合某個單詞出現在標注中,則真實語義標簽對應位置為1,否則為0。
步驟6數據讀取
采用批數據處理的方式,一次讀取一批數據,包括視頻特征、真實標注和真實語義標簽。
步驟7視頻特征編碼
按序將視頻特征序列中的一個特征向量輸入LSTM 編碼網絡中,產生的輸出加入上下文環境向量中。循環直到達到最大編碼步數。
步驟8語義探測
將編碼端雙層LSTM 網絡的細胞狀態拼接后作為語義探測單元輸入產生視頻的語義概率信息。
步驟9解碼端第一層使用語義信息
通過公式(12),為解碼端第一層LSTM 網絡生成固定的語義輸入。并和上一步輸出狀態一起輸入到第一層LSTM,產生當前步數第一層的狀態輸出。
步驟10多頭注意力
通過公式(7)使用多頭注意力機制,獲得上下文向量在不同子空間的加權和。
步驟11參數矩陣語義擴展
通過公式(13)的方式對第二層LSTM 進行參數矩陣語義擴展。
步驟12拼接輸入
將步驟9~11 的結果拼接輸入到第二層LSTM 中,通過公式(4)產生單詞輸出。轉到步驟9,直到達到最大解碼步數。
步驟13權值更新
通過公式(11)計算模型總損失,并對權值進行更新。判斷是否達到最大訓練次數,如果達到則訓練完成,否則,轉到步驟6。
在微軟視頻標注數據集(the MicroSoft Video Description corpus,MSVD)上進行實驗。MSVD 數據集由一系列從YouTube 上剪輯的視頻片段組成,總共包含1 970 個視頻片段,視頻片段的長度大約在10~25 s,每個片段包含單個活動。MSVD 數據集中每個視頻片段都由多種語言進行標注,為了方便進行對比,在實驗中只使用了英文標注,大約每個視頻都有40 條英文標注。預處理工作第一步是用預訓練的卷積神經網絡提取視頻序列特征。第二步是將數據集視頻標注中的英文單詞全部轉換成小寫格式,去除標注中的標點符號,并建立詞表,詞表中只收錄出現次數大于等于5 次的單詞。然后在出現次數最多的名詞、動詞和形容詞中選擇K 個單詞組成語義集合。根據詞表產生語義集合以及視頻文字標注的one-hot向量表示。根據選取的語義概念和視頻對應的文字標注,為每個視頻參數語義標簽。然后將這些數據組織成三元組的方式以方便后續使用。對于數據集的劃分,與文獻[2-3]使用相同的比例,用1 200 個樣本作為訓練集,100 個樣本作為驗證集,剩下670樣本作為測試集。
采用了4 個廣泛使用的指標來評價MHA-S2VT 模型的標注效果,4個指標如下所示:
(1)BLEU:由IBM 在2002年提出,是一個基于精度的評價指標,用于評估機器翻譯自動生成譯文和參考譯文n 元組共同出現的程度。隨著n 的增加,評分值會下降,使用的參考譯文越多,則BLEU 評分值就越高。在模型評價時取n=4。
(2)METEOR:對機器翻譯自動生成的譯文與參考譯文進行詞對齊,計算詞匯完全匹配、詞干匹配和同義詞匹配等各種情況的準確率、召回率。和單純基于精度的評價指標相比,其結果和人工判斷的結果有較高的相關性。
(3)CIDEr:針對圖片標注提出的評價指標。將生成的每個句子看成文檔,表示成tf-idf向量形式,計算和真實標注之間的余弦相似度。生成的標注越接近人類語言其評價的分就越高。
(4)ROUGE-L:是一個針對自動文摘的評價指標。它基于機器自動生成的摘要和人工摘要的最長公共序列長度計算召回率。主要考察翻譯的充分性和忠實性,無法度量翻譯的流暢性。
對于MSVD數據集中的視頻,為了防止背景干擾先去除頭尾2 幀數據,每個視頻固定采樣64 幀,然后將采樣到的幀大小統一調整為224×224。由于不是固定間隔進行采樣,所以對于短的視頻來說,采樣比較密集。用預訓練的vgg16 網絡提取采樣幀的特征,采用的是vgg16的fc7層的輸出,因此,每一個特征都是4 096維。
對于編碼端,將最大編碼長度設置64,對于特征序列不足64 的情況,用零進行填充。對于解碼端,將最大解碼序列長度設置為20,已經可以滿足大部分單句標注的需求了。用“BOS”和“EOS”分別代表標注句子的開頭和結尾,作為解碼端第一個文字輸入和最后一個文字輸出。
在參數設置上,把學習率設置為0.000 1。LSTM 隱藏層單元數目是1 000,為了方便計算,實驗中將詞向量的維度也設置為1 000,而不是很多模型中使用的512維。語義標簽維度設置為K=300。在計算模型損失的時候,由于語義預測部分損失較小,所以將λ設置為5。MHA-S2VT 模型增加了許多參數,因此將最大迭代次數增加到了2 000次。
對于文獻[7]中的模型而言,輸入的特征由ResNet和C3D[19-21]特征分別聚合平均之后拼接而成。為了公平地進行比較,將統一使用vgg16提取特征。
表1 展示了MHA-S2VT 模型和原始模型和其他的視頻標注模型在4 個具體評價指標上的對比,MP 代表文獻[2]提出的標注模型,它是基礎S2VT 模型的前身,S2VT 只是沒有將特征序列進行聚合平均。TA 代表文獻[8]提出的時序注意力視頻標注模型,SCN代表文獻[10]提出的語義視頻標注模型,ALSTM代表文獻[11]提出的注意力LSTM 標注模型。由表1 中可以看到,模型在BLEU、METEOR 和CIDEr 三個評價指標上取得了不錯的成績,在ROUGE-L指標上取得了微弱的優勢。對比于基本S2VT模型,在CIDEr指標上提升最大,在ROUGE-L指標上,兩個模型最接近。在METEOR 指標上幾個模型評分都比較低,說明這些模型自動產生的標注和人工標注相關度都不高。

表1 模型對比結果
表2 展示了MHA-S2VT 模型自身的對比實驗。在表中,A 代表使用了多頭注意力機制,TAG 表示在解碼器端第一層LSTM 單元使用語義信息,S 表示在解碼器第二層使用參數矩陣語義擴展。從表2 中可以看到多頭注意力機制和在解碼端第二層LSTM 使用語義信息是模型標注效果提升的關鍵原因,而在模型第一層使用語義信息標注效果提升的幅度不是很高。一個可能的原因是多頭注意力和在解碼端第二層進行參數矩陣語義擴展時引入的參數較多。另外可以看到同時使用多頭注意力和參數矩陣語義擴展,標注效果相對于單獨使用多頭注意力或參數語義擴展的提升有限,可能是兩者的結合方式不是很合理。

表2 MHA-S2VT實驗結果
將表1 和表2 進行對比,可以看到多頭注意力帶來的提升效果比單頭的大。說明將原始信息映射到不同的線性子空間之后,通過注意力機制確實能夠學習到更加關鍵的信息。在原始的S2VT模型上結合參數矩陣語義擴展帶來的效果比文獻[10]中的方式有微小提升,原因一方面可能是和后者編碼視頻信息的方式相比,序列到序列的方式將時序信息編碼進了視頻特征表示中,另一方面也有可能因為S2VT使用的雙層LSTM 網絡比后者使用的單層LSTM網絡解碼效果好。
需要重點指出的是,多頭注意力機制發揮的效果受到子空間映射數量的影響,本文中為了計算簡單將子空間數量設置為10 個,也許并不是一個比較好的選擇。同時本文沒有對多頭注意力結果進行歸一化操作,也在一定程度上限制了實驗效果的提升。
圖3 展示了一個標注樣例,在真實人工標注中選出了兩條和幾個模型生成的標注進行對比。可以看到不管是改進的MHA-S2VT 模型還是其他的模型,標注效果和真實人工標注之間差距還是比較明顯,主要體現在生成句子長度比較短和只能表達視頻語義信息不完整上。對于人類而言,讀懂視頻信息非常容易,但是對于機器而言,機器很難理解高維的語義信息,往往生成的句子只能保證語法正確。

圖3 視頻標注樣例
在本篇論文中,在S2VT 模型中加入多頭注意力和語義信息給標注效果帶來很大提升。但是正如圖3 所展示的那樣,MHA-S2VT 模型生成的標注和人工標注之間差距還是很大,視頻標注的提升空間依然寬廣。
接下來工作的一個重點是研究語義信息的使用,本篇論文在使用語義信息上還處于初級階段,對于語義信息的使用上缺乏解釋性,沒能真正發揮語義預測的作用。在MHA-S2VT 模型中,多頭注意力和語義信息之間沒有什么關聯,不能達到疊加的效果。另一個重點將會是探索多頭注意力子空間的劃分方案,使之能發揮最大效果。此外,對于幀采樣方式、Dropout大小等也會繼續摸索。希望能夠在未來的工作當中在減少模型使用的參數數量的同時,繼續保持現有的標注效果。