港中文林達華團隊提出計算機視覺新方向:電影情節分析
介紹
“你要好好活下去,不管發生什麼,都不要放棄希望。”這令人心碎的場景來自電影《泰坦尼克號》,是由詹姆斯卡梅隆導演的史詩級浪漫災難電影,感動了每一位觀眾。
電影蘊含著巨大的價值,不僅僅是因為它的娛樂功能,更是因為它是人類文化、社會和歷史的縮影。從計算機視覺研究的角度來看,他們也是寶貴的資料資源。雖然電影早已進入計算機視覺研究的視線,但是關於電影資料的一個重要問題卻鮮有提及——我們可以用視覺模型來進行電影理解嗎?
這篇論文的目的是研究一種電影理解方法,從低階特徵表示到高階語義分析。這一問題面臨兩個重要挑戰:計算以及標註資料所需的成本過高。首先,目前的視訊分析研究主要物件是短視訊,只持續幾分鐘甚至幾秒,而電影通常要超過一個小時。對於這樣大小的視訊,簡單的提取特徵處理都需要很長時間,更不要說訓練模型的時間了。另一方面,視覺模型需要大量的標註樣本進行訓練,但是對電影進行標註幾乎是不可能的任務。
但是電影是有預告片的,導演將最重要的鏡頭組合起來,作為整部電影的預覽。從預告片中,可以看到大量具有代表性的鏡頭,並且能夠從中學習用於電影分析的視覺線索。並且預告片時間一般都在五分鐘之內,因此從預告片中學習模型的計算量是合理的。但是,雖然預告片能夠儲存一部電影的重要特徵,但是也失去了時序結構
受到電影預告片的啟發,我們提出了一種能夠高效地從電影中進行學習的框架。該框架由兩個關鍵模組構成:一個視覺分析模組,從預告片中學習得到,和一個時序分析模組,從電影和視覺模組提取的特徵中學習得到。這樣設計的原因在於,視覺提取模型通常比時序模型複雜,因此讓不同的模組從不同的資料中學習可以將計算成本維持在可負擔的水平,同時讓演算法能夠捕捉整部電影的時序結構。我們進一步提出了兩個訓練策略:(1)挖掘元資料,例如電影流派的資訊,故事情節關鍵詞,用它們作為視覺模型訓練的監督資訊。(2)以自監督的方式學習時序結構。即去掉一部分序列,讓模型依據已知的序列來預測被捨去的部分。
圖1 我們提出了一個有效的框架來分析電影,分別通過從預告片中學習視覺模型,和從電影中重構時序結構,不僅可以預測鏡頭級別的標註,並且可以應用於電影分析的各種任務中,例如鏡頭檢索,鏡頭預測和電影問答。
為了支援這一研究工作,以及未來對該研究方向的擴充套件,我們構建了一個大型電影和預告片資料集LSMTD,並且定義了一系列方法來評價電影分析模型。實驗結果顯示,提出的方法減少了訓練時間,並且在表現上超過了傳統方法訓練的模型。
論文貢獻
(1) 提出一種新的電影理解模型,其中視覺分析模組和時序理解模組分別在預告片和電影上訓練,分別使用元資料和自監督學習方法。
(2) 構建了一個大型電影和預告片資料庫,並基於該資料庫定義了一系列評價電影理解能力的任務,並且對不同的訓練方法進行系統化的對比。
大型電影和預告片資料集(LSMTD)
我們構建了一個大型電影和預告片資料集(LSMTD),包含508部完整的電影(大約10億幀,20000萬個鏡頭)和34219個預告片(大約10億幀,10000萬個鏡頭),總計超過2200小時。這是目前可用於電影視覺分析的最大的資料集。
電影從亞馬遜和其他商業途徑購買,預告片從YouTube下載,電影的流派資訊從ofollow,noindex" target="_blank">IMDB 上獲得,而使用者提供的情節關鍵詞則來自TMDB 。為了獲得更有意義的關鍵詞,我們將出現次數較少的關鍵詞過濾掉,並且將同義詞合併,將最初的20000個關鍵詞縮減到33個具有代表性的關鍵詞。
表1 預告片資料庫對比
圖2 LSMTD樣本展示。黑色單詞為電影標題,紅色為流派關鍵詞,藍色為情節關鍵詞。
電影分析框架
為了提高模型學習效率,我們並不是用所有的幀來進行學習,而是以鏡頭作為單元,因為一個鏡頭內的幀通常相似度很高。基於鏡頭,提出的框架將學習任務分解為兩個部分,分別是從預告片中學習視覺表示,以及從電影中學習時序結構。這一想法的原因有兩個,首先預告片比電影短很多,並且包含重要的鏡頭,因此我們可以從中學習視覺表示,但是預告片不能保持整部電影的時序結構。因此,為了捕捉時序結構,我們使用基於LSTM的模型,利用視覺特徵,用自監督的方式進行學習。
從預告片中學習視覺表示
視覺表示模型的目的是學習到能夠表示電影鏡頭的視覺特徵,因此可以將其視作一個鏡頭解碼器。
圖3 從預告片中學習視覺表示
該部分模型通過兩步將鏡頭進行解碼:通過卷積網路提取每幀的特徵,然後將每幀的特徵結合成基於鏡頭的表示。這裡需要解決的問題是如何快速有效的訓練該模型。
基於鏡頭的表示
雖然預告片相比於整部電影已經很短,一幀一幀的分析依然是十分耗時的。但是預告片具有一個特殊性質,即預告片中每個鏡頭的幀之間通常十分相近。基於這一特性,我們可以將預告片視為鏡頭序列,然後從每個鏡頭中稀疏取樣得到關鍵幀。
給定一個預告片,我們首先採用一個外部工具將其劃分成連貫的鏡頭序列:S1,S2,…,Sn。從每個鏡頭中,我們取樣m幀:\(I_{i1},\cdots ,I_{im}\) ,並且用特徵提取器來提取幀特徵,記為:\(f(I_{ij};\theta )\) ,theta是特徵提取器的引數。隨後,我們就可以通過平均池化得到基於鏡頭的特徵表示:
\(f(S_{i};\theta )=\frac{1}{m}\sum_{j=1}^{m}f(I_{ij};\theta )\)
考慮到卷積神經網路(CNN)的表達能力,我們用CNN作為特徵提取器。我們設定m=3,既增強了魯棒性,也防止過多的幀帶來的冗餘資訊。
訓練視覺模型
我們用相關的流派和情節關鍵詞來監督視覺模型的訓練。值得注意的是,電影製作人通常會為預告片選擇最具有代表性的鏡頭。因此,預告片中的鏡頭通常與流派和情節關鍵詞相關。因此我們可以用一種簡單的方法來學習模型。我們從預告片中取樣n個鏡頭,然後通過另一級別的平均池化累積它們的特徵:
\(f(T;\theta )=\frac{1}{n}\sum_{j=1}^{n}f(S_{\phi (j)};\theta )\)
隨後,通過一個全連線層和一個softmax層,將\(f(T;\theta )\) 轉換成類別預測,然後根據真實標籤對模型進行訓練。
從電影中學習時序結構
除了視覺表示,時序結構也是電影的一個十分重要的方面。幸運的是,我們不用從頭學習這個結構,而是可以利用從預告片中提取的視覺模型。
我們的時序結構模型基於LSTM網路,能夠保持長範圍的依賴,同時對短時間內的變化也很敏感,因此該網路很適合用於捕捉電影的時序結構。該LSTM網路將編碼過的電影鏡頭作為輸入,並且嘗試通過隱狀態捕捉語義資訊。
為了訓練LSTM模型,我們提出了一個自監督的學習方法。我們的想法來源於這樣的問題:怎樣才能知道模型有沒有捕捉到序列結構呢?一個自然的方法是讓模型基於已知觀測預測後面的序列。在我們的問題中,可以通過讓模型根據之前的鏡頭來預測第(m+1)個鏡頭。但是由於合成鏡頭過於困難,因此我們將問題轉換為:從候選池中選擇最好的第(m+1)個鏡頭。從而將該問題變成一個多選擇問答問題。這種問題可以進一步改寫成一個三路評分函式:\(s(q,a | C)\) 。其中q代表問題,a代表候選答案,而C是條件。對於“鏡頭預測”的問題,條件C為之前的m個鏡頭,a是候選鏡頭之一。那麼回答問題的過程可以轉換為找到s值最高的答案:
\(\widehat{i}=\underset{i\in {1\cdots n}}{argmax} s(q,a_{i}|C)\)
我們將這個評分方程表示為一個建立在CNN上的LSTM網路,如圖4所示。
圖4 從電影中學習時序模型
在視覺模型得到的特徵頂部,我們構建LSTM網路,每一個時間步對應電影序列中的一個鏡頭。在每一步,一個LSTM單元將之前狀態和當前鏡頭的視覺特徵都作為輸入,然後產生一個256維的特徵,表示為u。u將模型對所有鏡頭的理解進行編碼。同時,每一個候選鏡頭用自己的1024維的視覺特徵進行表示。
我們將u重複n次,然後將其與候選鏡頭表示連線起來,形成一個大小為n x 1280的矩陣。這個矩陣通過一系列1x1的卷積,壓縮成一個長度為n的分數向量。最終,通過softmax層,這些分數能夠轉換成歸一化的概率值,每個值代表一個選擇。我們可以通過最大化正確答案的對數概率來訓練網路。
實驗結果
為了測試學習模型的能力,我們設定了兩個benchmark任務,分別是標註分類和鏡頭預測,並且在Movie QA benchmark上測試我們的框架,以從多方視角來評價模型。
為了驗證從預告片學習視覺模型的有效性,我們對比了不同設定下的模型。模型分別從電影和預告片的不同子集中學習。表2給出了用於訓練的5種資料集合。
表2 不同訓練集的持續時間和鏡頭數
我們將LSMTD資料集中的508部電影分為3部分,361部用於訓練(“Movie 361”),41部用於驗證(“Movie 41”),以及106部用於測試(“Movie 106”)。對於預告片,我們首先濾除在驗證集和測試集中的電影預告片,剩下的組成了“Trailer 33K”,包含大約33000個預告片。從這整個預告片的訓練集中,我們隨機取樣了2000和10000個預告片,構造了兩個自己“Trailer 2K”和“Trailer 10K”。我們也構造了一個特殊的子集“Trailer 361”,其中的預告片都對應了361部電影。
標註分類
對於每一部電影,我們讓模型預測流派和情節關鍵詞。我們分別在5個訓練子集上訓練模型,獲得了5種不同的模型。在測試過程中,我們嘗試兩種方法來預測標註:(1)分數平均:將所有采樣鏡頭的預測進行平均得到最終預測。(2)特徵+LSTM:在鏡頭特徵表示上構建LSTM網路,然後訓練LSTM網路來編碼鏡頭序列。對輸出進行平均來獲得最終預測。
表3 類別標註實驗結果。
可以看出在“Trailer 33K”上訓練的模型預測準確率最高。隨著預告片數量增加,視覺模型的質量也隨之提高。並且,對比在電影上訓練的模型和預告片上訓練的模型可以看出,在預告片上進行訓練能夠獲得更有效的視覺表徵。
Movie Q&A資料集
我們也在Movie Q&A benchmark資料集上測試了視覺模型,來評價學習到的視覺表示與語義理解之間的關係。Movie Q&A資料集包含關於400電影的14944個問題,每個問題從5個答案中選擇一個正確答案。圖5給出了我們的Q&A模型。
圖5 Q&A模型整體結構。
表4 電影問答結果
表4給出了在“Movie 361”和“Trailer 33K”的測試結果,並且和SSCB方法進行比較。可以看出,在預告片上學習到的特徵的表現超越了從電影中學習到的特徵。這也驗證了我們的假設——在預告片上學習電影的視覺表示很有效。
鏡頭預測
給定m個鏡頭,我們期望時序模型能夠預測第(m+1)個鏡頭。我們將該問題描述為一個多選擇Q&A問題,問題是“給定m個鏡頭,哪個才是第(m+1)個鏡頭”。
我們基於LSMTD的508部電影構建了一個鏡頭預測的基準:(1)“In Movie”,干擾答案為同一部電影中的不同鏡頭,(2)“Cross Movie”,干擾答案為從所有508部電影中取樣得到的鏡頭。
我們將我們的時序模型與一個簡單的基線模型對比,該基線模型將給定鏡頭的特徵平均,然後計算它與測試鏡頭的特徵夾角距離。表5給出了實驗結果。
表5 鏡頭預測準確率
從表中可以看出,我們的時序模型的表現遠遠超過了基線模型。這表明我們的模型捕捉到了時序結構,從而提升了對下一個鏡頭的預測準確度。我們也發現“Cross Movie”的準確率比“In Movie”更高,這是因為在同一個電影中的鏡頭比其他電影中的鏡頭更有混淆性。
視覺化
最後,我們評價視覺模型是否捕捉到了語義概念和視覺觀察之間的關係。我們選擇了一些電影,並且期望找到與標註響應最高的鏡頭。
圖6 鏡頭檢索。左邊是電影《珍珠港》中與“浪漫”和“戰爭”關鍵詞對應的鏡頭。右邊是《歌舞青春》 中與“運動”和“音樂”高度對應的鏡頭。
我們可以看到對檢索標註響應較高的鏡頭之間具有較高的聯絡,說明視覺模型學到了視覺背後的語義資訊。
圖7 《泰坦尼克號》中與情節關鍵詞的響應幅度圖。這3幅圖分別是在“Trailer 33K”上訓練的視覺模型+LSTM,在“Trailer 33K”上訓練的視覺模型,以及在“Movie 361”上訓練的視覺模型。從對比中可以看出,從預告片中學習視覺資訊的效果比從電影中學習的效果要好,並且我們可以通過自監督的LSTM重構時序結構。
圖7給出了《泰坦尼克》的鏡頭對兩個情節關鍵詞“愛”和“反烏托邦”的響應。我們可以觀察到在“Trailer 33K”上訓練的模型產生了準確的響應,而在“Movie 361”上訓練的模型不能捕捉到這些語義概念。
總結
這篇文章提出了一個有效的方法從電影中學習視覺模型。該模型從預告片中學習視覺表徵,利用預告片具有鮮明特徵的優勢。然後從電影中通過自監督方法學習時序結構。我們蒐集了一個大型電影和預告片資料集,包含34K個預告片和508部電影,並且基於此定義了兩個任務:標註分類和鏡頭預測,來評價模型對電影的理解能力。我們也在電影問答任務上測試了我們的框架。這三個實驗結果均顯示了所提框架的有效性。
檢視論文原文:
From Trailers to Storylines: An Efficient Way to Learn from Movies
感謝蔡芳芳對本文的策劃和審校。