Heterogeneous Memory Enhanced Multimodal Attention Model for Video Question Answering git
2019-04-25 21:43:11
github
Paper:https://arxiv.org/pdf/1904.04357.pdf 網絡
Code: https://github.com/fanchenyou/HME-VideoQA app
1. Background and Motivation: ide
用 Memory Network 作視覺問題回答並非特別新鮮,由於 CVPR-2018 已經有不少工做,都是用這種外部記憶網絡來進行知識的讀取,從而更好的輔助 VQA。可是本文作的是另一種 task,video question answer,相對來講,視頻的確定要更難一些。如何很好的根據問題,到視頻中去定位相關的視頻幀,從而更好的完成問題回答,是一個須要關注的問題之一。學習
現有的方法都嘗試對視頻或者問題進行 attend 處理,以獲得更好的結果:測試
1. Jang et al. 對視頻特徵的空間和時間維度都進行加權處理(spato-temporal attention mechansim on both spatial and temporal dimension of video features);他們也提出用 VGG 和 C3D 來提取 appearance 和 motion feature 來更好的表達視頻幀;可是他們採用前期融合的方法,而後輸入到 video encoder 中,這種方式獲得的效果,並非最優的;優化
2. Gao et al. 提出用更先進的 co-attention mechanism 來替換掉 Jang 的前期融合的方法;可是這種方法並無同速進行 appearance 和 motion feature 檢測到的 attention;與此同時,這種方法也丟失了能夠從表觀和運動特徵中獲得的 attention;編碼
做者認爲:現有方法未能正確的識別 attention,是由於他們分開進行了特徵的融合 (feature integration) 和注意力學習 (attention learning) 的步驟;爲了解決這一問題,做者提出一種新的多種記憶(heterogeneous memory)來同時完成融合 appearance and motion features 以及 learning spatio-temporal attention。spa
另外,若是 question 有很是複雜的語義信息,那麼 VideoQA 就會變得異常複雜,從而須要多個步驟的推理。現有的方法都是簡單的用 Memory Network 來處理這種狀況,可是做者認爲他們的方法太多簡單,用 LSTM 或者 GRU 獲得的 single feature vector 缺少捕獲問題中複雜語義的能力,如圖 1 所示。因此,就須要設計一種新的模型來理解問題中複雜的語義信息。爲了解決這一問題,做者提出一種新的網絡結構,嘗試將 question encoder 和 question memory 來互相加強。question encoder 學習問題的有意義表達,而後從新設計 question memory 來理解複雜的語義,而後經過存儲和更新全局內容來強調檢索的物體。
此外,做者也設計了一種多模態融合層,經過對齊相關視覺內容和關鍵問題單詞,來同時對 visual 和 question hints 進行加權處理。在逐漸優化聯合 attention 以後,再將其進行加權融合,而後進行 multi-step reasoning,以從複雜的語義中進行正確答案的推理。
2. The Proposed Method:
2.1 Video and Text Representation:
對於 video,做者用 Resnet, VGG 和 C3D 模型來提取 appearance and motion feature, $f^a, f^m$. 而後用兩支 LSTM 模型分別對 motion and appearance features 進行處理,最終放到 memory network 中進行特徵融合;
對於 question,先用 Glove 300-D 獲得 embedding,而後用 LSTM 對這些向量進行處理。
2.2 Heterogeneous Video Memory:
與常規的 external memory network 不一樣,做者新設計的網絡處理多個輸入,包括編碼的 motion feature,appearance feature;用多個 write heads 來決定內容的寫入,如圖 3 所示。其中的 memory slots M = [m1, m2, ... , ms] 以及 三個 hidden states $h^m, h^a$ and $h^v$。前兩個 hidden state $h^m$ 和 $h^a$ 用來表示 motion 和 appearance contents,將會寫入到記憶中,$h^v$ 用於存貯和輸出 global context-aware feature,該特徵是融合了 motion 和 appearance information 的。
2.3 External Question Memory:
該問題記憶的目標是存貯 sequential text information,學習不一樣單詞之間的相關性,而且嘗試從全局的角度來理解問題。
2.4 Multi-modal Fusion and Reasoning :
如上圖所示,該模塊的輸入是 視頻特徵,問題的特徵。核心之處在於 LSTM,其隱層狀態記爲 s,在每次迭代的過程當中,該控制器會嘗試 attend 到 video feature 和 question feature 的不一樣部分,而後將這些特徵與學習到的權重,進行結合,而後更新其 hidden state $s_t$。
Temporal Attention:在第 t-th 迭代中,咱們首先經過 attend 不一樣視覺特徵,問題特徵的不一樣部分,產生兩個 content vector。而後 temporal attention weights 能夠計算以下:
而後,加權以後的 content vector c,以及轉換的 d 計算以下:
Multimodal Fusion:經過將轉換以後的 content vector d 和 以前的 hidden states $s_{t-1}$ 進行交互,獲得多模態 attention weights:
最終融合的知識 $x_t$ 能夠經過與權重的加權求和獲得:
Multi-step reasoning: 爲了獲得第 t-th 迭代的推理結果,咱們用 LSTM 來更新 hidden state,即:$s_t = LSTM(x_t, s_{t-1})$。這個推理過程進行了 L 次(實驗中設置爲 3 次)。最後一次迭代的結果 $s_{L}$ 記爲 distilled knowledge 的最終表達。咱們也採用了標準的 temporal attention 在編碼的 video feature,而且將其與 $s_L$ 進行組合,獲得最終的答案表達 $s_A$。
2.5 Answer Generation:
Multiple-choice: 是從多個候選答案中,選擇一個正確的答案。咱們將 question 和 每個候選的 answer 分別組合起來,而且將 QA pair 進行前傳,獲得最終的 answer feature,咱們用 linear layer 來對全部的候選答案進行打分。在訓練過程當中,咱們最小化 positive answer 和 each negative answer 的 pairwise hinge loss:
咱們能夠端到端的進行網絡的訓練。在測試的時候,咱們選擇一個具備最高得分的 answer 做爲最終的答案。
Open-ended task is to choose one correct word as the answer from a pre-defined answer set of size C. 做者這裏採用 linear layer 和 softmax function,來預測全部候選答案的機率。訓練的偏差用交叉熵損失來衡量:
其中,y 是 gt label。測試的時候,也是從中選擇一個最大得分的候選,做爲 final answer:$c^* = arg max_c (P)$。
疑問:看到這裏,我表示有點疑惑,都是從中選擇一個響應最大的做爲 final answer,爲啥搞這兩種看似不一樣的方式?
3. Experiments:
==