一、論文資訊
論文位址:https://arxiv.org/abs/1812.05252
項目位址:https://github.com/bupt-cist/DFAF-for-VQA.pytorch,複現代碼
二、論文模型
2.1預處理部分
使用了Faster-RCNN對每個目标image提取了100個RoI,得到 100 × 2048 100\times 2048 100×2048 大小的向量。論文中使用了GLoVe作為詞嵌入算法,使用GRU對question進行特征提取,得到 14 × 1280 14 \times 1280 14×1280的word-level features。詞嵌入長度被固定為14。下面的公式用來表示提取特征。
2.2 Inter-modality Attention Flow (InterMAF)
InterMAF接受傳入的Visual Feature和Question Feature,這一部分建構的目的是進行跨模态的資訊互動,就是将Visual Feature和Question Feature進行互動得到新的特征。
- 論文中對于跨模态互動使用的是self-attention方式, 文中的(3)後面一個公式應該是E,可能是論文作者的錯誤。
- 首先得對R和V(R表示問題特征,V表示圖像特征)使用全連接配接得到各自得到三個矩陣,作者為了進行模态融合使用了對R_Q、R_K和E_K,E_Q進行内積,使用softmax方式分别得到R→E和E→R的融合權重矩陣,并且由于内積值的大小與次元dim關系很大,是以進行了歸一化。
- 接下來就利用兩個InterMAF進行進行注意力的權重,得到 R u p d a t e 和 E u p d a t e R_{update}和E_{update} Rupdate和Eupdate。
- 最後利用更新完成的 R u p d a t e 和 E u p d a t e R_{update}和E_{update} Rupdate和Eupdate與原R和V進行融合,并用全連接配接的方式輸出改變後的R和E,完成這一步後R,E将會被送Dynamic Intra-modality Attention Flow module
2.3 Dynamic Intra-modality Attention Flow (DyIntraMAF)
DyIntraMAF的輸入是上一步的輸出,即R和E,這一部分的主要目的是進行模态内的互動。
首先是進行模态自身間的互動,這一部分的初始化的方式與InterMAF中的是一樣的,即得到 R K , R Q , R V , E Q , E Q , E V R_K,R_Q,R_V,E_Q,E_Q,E_V RK,RQ,RV,EQ,EQ,EV。與InterMAF不同的是進行自身互動時互動方式變為與自身矩陣進行内積。即:
- 上面部分作者認為是一種naive的方式。然後在文中引入了動态機制,所謂動态就是能根據另一種模态來調節目前模态的值。具體表現就是使用了另外一個模态的條件門向量來控制目前模态的Key和Query,這裡使用question門控機制為例,來解釋條件門機制的工作。
- 對問題特征進行average pooling和sigmoid操作得到Conditional Gating Vector,操作公式如下:
- 然後對 R Q , R K , E Q , E K R_Q,R_K,E_Q,E_K RQ,RK,EQ,EK進行更新操作,我認為下面的公式可以拆開更好了解,即 R ^ Q = R Q + G R ← E ⊙ R Q \hat{R}_{Q}=R_{Q}+G_{R \leftarrow E} \odot R_{Q} R^Q=RQ+GR←E⊙RQ,可以看作點乘之後的融合
- 後面的步驟與InterMAF類似,直接給出公式: 與InterMAF不同的是在于公式19和20使用的是加和方式,而InterMAF使用的是級聯方式。作者在實驗中發現DyIntraMAF的性能超過了單純的IntraMAF。
2.4 Intra- and Inter-modality Attention Flow (DFAF)
DFDA是由InterMAF和DyIntraMAF組合起來的,作者說明多個DFAF疊加對于模型具有更好的效果。DFDA内部使用了類似于殘差的結構,是以不會出現梯度問題。原始的特征會根據沿通道維數劃分成組,不同的組會産生平行的attention,獨立地更新不同組中的視覺特征和單詞特征。
2.5 輸出層和損失函數
問題特征和圖像特征經過DFDA以後,輸出的是更新後模态互動的特征,把問題特征和圖像特征分别進行average pooling後進行融合,作者嘗試了級聯,加和,點乘等方式的融合,發現點乘方式有更好的融合效果。
跟其他的前沿方式一樣,把VQA看成分類問題。将融合的向量經過兩層MLP,在兩層MLP中間加入ReLU激活函數,然後通過softmax輸出結果。損失函數使用的是經典的交叉熵損失函數。
三、實驗部分
3.1 資料集
資料集使用的是VQA2.0。實驗參數的具體初始化可以看論文。
3.2 模型簡化測試
下面是模型簡化測試的一些修改組分和實驗精度
3.3 實驗對比
作者的實驗acc在很多項超過了最先進的實驗,最終在測試集上的精度達到了70.34%。
四、總結
這篇文章的主要貢獻在于:
- 提出了一種新的帶有模态内和模态間注意流的動态融合架構(DFAF),該方法通過交錯模内和模态間特征融合來實作多模态融合。 這樣的架構首次在解決VQA任務的統一架構中整合了互動模式和動态模式内部資訊流。
- 提出了動态内部模态注意(DyIntraMAF)子產品,用于在每個模态内生成有效的注意流,該子產品動态地以其他模态的資訊為條件。 這是我們提出的架構的核心新穎性之一。
- 進行了廣泛的實驗和模型簡化研究,以檢驗所提出的DFAF架構的有效性,提出的DFAF架構實作了最先進的VQA性能。
個人認為作者在使用DyIntraMAF還是使用了模态間的控制方式,并不能算作完全的模态内的互動,我将這個模态内的互動看成一種偏重各自特征的跨模态互動。
如有錯誤,歡迎在評論區留言!