【CVPR2020 image caption】读Meshed-Memory Transformer for Image Captioning
論文信息
論文名稱:Meshed-Memory Transformer for Image Captioning(用于圖像描述的帶存儲器的網狀Transformer)
原論文地址: 下載地址
官方開源代碼地址:代碼
本篇博客參考文章:
1、[CVPR2020] Meshed-Memory Transformer for Image Captioning
2、論文筆記:Meshed-Memory_Transformer_for_Image_Captioning_CVPR2020
全文翻譯
Abstract
基于transformer的架構代表了序列建模任務(如機器翻譯和語言理解)的最新水平。然而,它們在圖像描述等多模態上下文中的適用性在很大程度上仍未得到充分探索。為了填補這一空白,我們提出了M2一個帶有內存的網狀Transformer,用于圖像描述。該體系結構改進了圖像編碼和語言生成步驟:它集成學習到的先驗知識學習圖像區域之間關系的多級表示,并在解碼階段使用網狀連接來利用低、高級特征。實驗中,我們研究了M2Transformer的性能和不同的完全注意模型,并與 recurrent使用的模型進行了比較。在COCO上進行測試時,我們的建議在“卡帕西”測試分割和在線測試服務器上實現了單模型和集成配置的新狀態。我們也評估它在描述訓練集中看不見的物體時的表現。訓練模型和代碼復制實驗是公開的:https://github.com/aimagelab/
meshed-memory-transformer.
1. Introduction
圖像標注是用自然語言描述圖像的視覺內容的任務。因此,它需要一個算法來理解和建模視覺元素和文本元素之間的關系,并生成一個輸出單詞序列。這通常通過循環神經網絡模型來解決[40,15,43,42,7],其中語言的順序性質是用rnn或lstm的循環關系來建模的。為了建模圖像區域、單詞和最終標簽[20]之間的關系,添加注意力或圖狀結構[46]經常被添加到遞歸[43,12]中。
除了卷積語言模型[5]的研究之外,這種模式在過去幾年中一直是主要的方法,但是[5]并沒有成為主要的選擇。最近出現的充分關注模型,復發的關系放棄了自我關注的使用,提供了獨特的機會在設置和序列建模表演,作證的Transformer[37]和Bert[8]模型及其應用[33]檢索和視頻理解[35]。此外,這種設置還提供了新穎的架構建模功能,這是注意力操作符第一次以多層和可擴展的方式使用。然而,圖像字幕的多模態性質要求特定的框架,不同于那些用于理解單一的模態。
在此前提下,我們研究了一種全新的圖像描述方法的設計。我們的架構從用于機器翻譯的Transformer模型[37]中獲得靈感,并結合了兩個與之前所有圖像字幕算法相關的關鍵創新點:
(i)圖像區域及其關系以多級方式編碼,其中考慮了低級和高級關系。當建模這些關系時,我們的模型可以通過使用持久記憶向量來學習和編碼先驗知識。
(ii)句子的生成采用多層架構,利用低級和高級的視覺關系,而不僅僅是視覺形態的單一輸入。這是通過一個學習的門控機制來實現的,該機制在每個階段權重多級別的貢獻。由于這在編碼器和解碼器層之間創建了一個網格連接模式,我們將我們的模型命名為網格內存轉換器(mesh-memory Transformer,簡稱M2 Transformer)。圖1描述了架構的模式。
通過實驗,我們探索了不同的全注意基線和最近的建議,獲得了關于全注意模型在圖像字幕中的表現的見解。在COCO基準測試中,我們的M2 Transformer在“卡帕西”測試集上達到了一個新的先進水平,無論是單模型還是整體配置。最重要的是,它超過了在線測試服務器上的現有提議,在已發布的算法中排名第一。
的貢獻。綜上所述,我們的貢獻如下:
Contributions.
?我們提出了一種全新的 fully-attentive圖像描述算法。我們的模型封裝了一個用于圖像區域的多層編碼器和一個生成輸出句子的多層解碼器。為了開發低級和高級的貢獻,編碼和解碼層以網狀結構連接,并通過可學習的門控機制進行加權;
?在我們的視覺編碼器中,圖像區域之間的關系以多層次的方式編碼,利用學到的先驗知識,這是通過持久記憶向量建模;
?我們展示的M2變壓器超越了所有先前的圖像字幕建議,實現了在線COCO評估服務器上的一個新狀態;
?作為補充貢獻,我們使用最近提出的nocaps數據集進行實驗,比較不同的fully-attentive的圖像字幕架構,并驗證我們的模型在新對象字幕上的性能。最后,為了提高再現性,促進該領域的新研究,我們將公開所有實驗的源代碼和訓練過的模型。
3. Meshed-Memory Transformer
我們的模型可以在概念上分為編碼器模塊和解碼器模塊,它們都是由一堆attentive的層組成的。編碼器負責處理輸入圖像的區域并設計它們之間的關系,解碼器則從每個編碼層的輸出中逐字讀取,生成輸出描述。所有模態內和跨模態交互之間的詞和圖像級特征建模通過縮放點積注意,沒有使用 recurrence。注意操作三組向量,即一組查詢Q、鍵K和值V,根據查詢和鍵向量之間的相似度分布,取值向量的加權和。在標量點積注意的情況下,算子可以被正式定義為
其中Q是一個有nq個查詢向量的矩陣,K和V都包含了nk個鍵向量和值向量,三種向量都有同樣的維度,d是一個縮放因子。
3.1. Memory-Augmented Encoder
給定從輸入圖像中提取的一組圖像區域X,可以通過Transformer[37]中使用的自注意操作來獲得X的置換不變編碼。在這種情況下,查詢、鍵和值是通過線性投影輸入特征獲得的,operator可以定義為
where Wq, Wk, Wv are matrices of learnable weights.
self-attention operator的輸出是一組新的元素S(X),與X具有相同的基數,其中X的每個元素都被替換為值的加權和,即輸入的線性投影(Eq. 1)。
值得注意的是,attentive權值僅僅依賴于輸入集本身的線性投影之間成對的相似性。因此,self-attention operator可以被視為一種編碼輸入集中的成對關系的方法。當使用圖像區域(或從圖像區域派生的特征)作為輸入集時,S(·)可以自然地對理解輸入圖像之前描述它所需的區域之間的成對關系進行編碼。
然而,自我注意定義中的這種特性有一個顯著的局限性。因為每件事都僅僅依賴于成對的相似性,所以自我注意不能模擬圖像區域之間關系的先驗知識。例如,給定一個區域編碼一個人,一個區域編碼一個籃球,在沒有任何先驗知識的情況下,將很難推斷出球員或游戲的概念。同樣,給定編碼雞蛋和烤面包的區域,我們可以通過對關系的先驗知識很容易地推斷出這幅圖描繪的是一頓早餐。
Memory-Augmented Attention. 為了克服自我注意的這種局限性,我們提出了記憶增強注意操作。在我們的建議中,用于自我注意的鍵和值的集合被擴展為附加的“槽”,它可以編碼先驗信息。為了強調先驗信息不應依賴于輸入集X,額外的鍵和值被實現為簡單可學習的向量,可以直接通過SGD更新。形式上,該operator定義為:
其中Mk和Mv是有著nm行的可以學習的矩陣,[·, ·] indicates concatenation.直觀地說,通過添加可學習的鍵和值,通過注意,將有可能檢索尚未嵌入x的已學習知識。同時,我們的公式保持查詢集不變。
就像 self-attention operator一樣,我們的記憶增強注意可以多頭運用。在本例中,記憶增強注意操作重復進行h次,每個頭部使用不同的投影矩陣Wq、Wk、Wv和不同的可學習記憶槽Mk、Mv。然后,我們連接來自不同頭部的結果,并應用一個線性投影。
Encoding layer. 我們將記憶增強算子嵌入到一個Transformer-like層中:記憶增強注意的輸出被應用到一個由兩個具有單一非線性的仿射變換組成的position-wise前饋層中,這兩個仿射變換獨立地應用于集合中的每個元素。在形式上,
Xi表示input set中第i個向量,F(X)i是輸出向量的第i個向量。Also, σ(·) is the ReLU activation function, V and U are learnable weight matrices, b and c are bias terms.
每個子組件(memory-augmented attention and position-wise feed-forward)然后被封裝在一個residual connection和layer norm operation.中。編碼層的完整定義可以寫成:
where AddNorm indicates the composition of a residual
connection and of a layer normalization.
Full encoder. 在上述結構下,多個編碼層按順序堆疊,使第i層消耗第i - 1層計算的輸出集。這相當于為圖像區域之間的關系創建多級編碼,其中較高的編碼層可以利用和細化前一層已經識別的關系,最終使用先驗知識。因此,一堆N編碼層將產生一個多層輸出X = (X1,…~ XN),從每個編碼層的輸出獲得。
3.2. Meshed Decoder
我們的解碼器以之前生成的單詞和區域編碼為條件,并負責生成輸出標題的下一個標記。在這里,我們利用前面提到的輸入圖像的多層次表示,同時仍然構建一個多層結構。為此,我們設計了一個meshed attention operator,與Transformer中的 cross-attention operator不同,它可以在句子生成過程中利用所有編碼層。
Meshed Cross-Attention. 給定向量Y的輸入序列,以及來自所有編碼層X ~的輸出,Meshed
Attention operator通過gated cross-attentions將Y連接到X中的所有元素。我們不是只關注最后一個編碼層,而是對所有編碼層執行交叉注意cross-attention。這些多層次的貢獻在被調制后匯總在一起。形式上,我們的 meshed attention operator被定義為
其中C(·,·)表示encoder-decoder cross-attention,使用解碼器的查詢和編碼器的鍵和值計算:
αi是一個權重矩陣,其大小與cross-attention結果相同。αi中的權重既調節了每個編碼層的單一貢獻,也調節了不同編碼層之間的相對重要性。通過測量每個編碼層的cross-attention計算結果與輸入查詢之間的相關性,計算結果如下:
where [·, ·] indicates concatenation, σ is the sigmoid activation, Wi is a 2d×d weight matrix, and bi is a learnable bias vector.
Architecture of decoding layers. 至于編碼層,我們在一個多頭的fashion上應用meshed attention。由于單詞的預測只能依賴于之前預測的單詞,解碼器層包含一個隱藏的自我注意操作,該操作將來自其輸入序列Y的第t個元素的查詢與從左側子序列(即Y≤t)獲得的鍵和值連接起來。此外,解碼器層包含一個position-wise的前饋層(如Eq. 4),所有組件都封裝在AddNorm操作中。解碼器層的最終結構可以寫成:
其中Y為向量的輸入序列,Smask表示隨時間的a masked self-attention。最后,我們的解碼器是將多個解碼器層堆疊在一起,幫助改進對文本輸入的理解和下一個token的生成。總的來說,解碼器以詞向量為輸入,其輸出序列的第t個元素編碼t+1時刻的一個字的預測,條件是Y≤t。在進行線性投影和softmax操作之后,它對字典中單詞的概率進行編碼。
3.3. Training details
按照圖像字幕的標準做法[29,31,4],我們使用詞級交叉熵損失(XE)預訓練我們的模型,并使用強化學習來微調序列生成。當使用XE進行訓練時,訓練模型預測給定先前ground-truth單詞的下一個標記;在這種情況下,解碼器的輸入序列立即可用,整個輸出序列的計算可以一次完成,所有操作隨時間并行化。
在強化學習訓練時,我們對使用波束搜索[4]采樣的序列采用一種自批判序列訓練方法[31]的變體:解碼時,我們從解碼器在每個時間步的概率分布中抽樣前k個單詞,并始終保持最高概率的前k個序列。由于序列解碼在此步驟中是迭代的,因此無法利用上述隨時間變化的并行性。然而,用于計算t時刻的輸出令牌的中間鍵和值可以在下一次迭代中重用。
在之前的作品[4]中,我們使用apple - d分數作為獎勵,因為它與人類的判斷[38]很好地相關。我們使用獎勵的平均值作為獎勵的基線,而不是像之前的方法那樣貪婪解碼[31,4],因為我們發現它可以略微提高最終的表現。一個樣本的最終梯度表達式為:
背景:
transformer-based architectures 沒有充分利用到多模型圖像字幕。
引言:
圖像描述是用自然語言描述圖像的視覺內容的任務。因此,它需要一種算法來理解和建模視覺元素和文本元素之間的關系,并生成一個輸出單詞序列。 這通常是通過循環神經網絡模型來解決的,其中語言的順序本質是用rnn或lstm的循環關系來建模的,為了建立圖像區域、單詞和最終標簽之間的關系模型,常常在遞歸中加入附加注意力或圖形樣結構。
在最近出現的fully attentive models中循環關系被拋棄,而使用self-attention,在集合和序列建模性能方面提供了獨特的機會,此外,此設置還提供了新穎的架構建模功能,因為注意力操作符首次以多層和可擴展的方式使用。然而,圖像描述的多模態本質要求特定的架構,不同于那些用于理解單一模態的架構。
雖然基于Transformer的體系結構代表了序列建模任務(如機器翻譯和語言理解)的最新水平。然而,它們對圖像描述等多模態上下文的適用性仍然有待探索。作者提出了 M2,一個用于圖像描述的帶存儲器的網狀Transformer。該體系結構改進了圖像編碼和語言生成步驟:它結合學習到的先驗知識學習圖像區域之間關系的多層次表示,并在解碼階段使用網狀連接來挖掘低級和高級特征。
論文方法(M2 Transformer)
整個模型分為編碼器和解碼器模塊,編碼器負責處理輸入圖像的區域并設計它們之間的關系,解碼器從每個編碼層的輸出中逐字讀取并輸出描述。文字和圖像級特征之間的模態內和跨模態的交互都是通過縮放點積注意力來建模的,而不使用遞歸。注意力操作基于三個向量:Q,K,V。根據Q和K向量之間的相似度分布,計算V向量的加權和,表示如下:
其中Q,K,V都是由向量組成的矩陣,具有相同的維度。
背景:
transformer-based architectures 沒有充分利用到多模型圖像字幕。
創新點:
我們提出了一個新型fully-attention圖像字幕算法,對于image caption我們提出了一個帶有內存的 網格transformer。這個結構優化了圖像編碼器和語言生成步驟,它學習集成先驗知識的圖像區域之 間關系的多級表示,并在解碼階段使用網格狀連接來利用低和高級特征。
結論:
我們的模型包含了一種區域編碼方法,它通過內存向量和利用先驗知識編碼和解碼模塊之間的網狀 連接。 值得注意的是,對于其他fully-attention的架構來說,這種連接模式是前所未有的。
memory augmented encoder
給定從輸入圖像中提取的一組圖像區域X,attention可以通過transformer中使用的自注意操作來獲得X的排列不變編碼。在這種情況下,query、key和value是通過線性投影輸入特征來獲得的。
meshed decoder
解碼器以之前生成的單詞和區域編碼為條件,生成輸出字幕的下一個標記,為了構建多層結構,我們設計了一個meshed attention operator,它能夠利用到句子生成中的所有編碼層。
Memory-Augmented Encoder
傳統的Transformer可表示為:
本文提出,這種self-attention有一定的局限性,因為一切都完全取決于pairwise similarities,所以self-attention不能對圖像區域之間關系的先驗知識進行建模。 例如,給定一個region encode一個人,一個region encode一個球,如果沒有任何先驗知識,就很難推斷出球員或比賽的概念。
由此引入了Memory-Augmented Attention的概念
Memory-Augmented Attention
這里與傳統的self-attention有一定的區別,為了編碼出先驗知識,它在key和value部分新增了一部分slotsMk,Mv,這兩個矩陣可以通過SGD自動學習,及可以自動學習到輸入X XX 所不能表達的先驗知識。
除此之外,Multi-Head Attention的步驟和Transformer并沒有什么不同。
Encoding layer
類似Transformer有:
Feed Forward可以表示為:
Full encoder
由此可以堆疊多個encoding layer,上一個layer的輸出作為下一個layer的輸入。
這相當于創建圖像區域之間關系的多級編碼,其中更高的編碼層可以利用和改進先前層已經識別的關系,最終使用這些先驗知識建模。最終可以獲得一系列layer的輸出:
Meshed Decoder
在這里,在構建多層結構的同時利用了上述輸入圖像的多級表示。 與傳統的Transformer不同,可以充分利用不同的Encoding Layer的信息。
Meshed Cross-Attention
如上如所示,將Y與不同Layer Encode出來的信息進行Cross-attention,再由Y與Cross-attention進行一個attention,將不同layer的Cross-attention 信息加權起來,放入feed-forward層。
Cross-attetion表示如下:
加權因子:
Meshed Cross-attention:
Architecture of decoding layers
同樣類似于Transformer:
其中Smask代表t時刻只能知道t-1及之前的信息,要為模型加上mask
淺談 Attention 機制的理解
圖解Transformer(完整版)
【NLP】Transformer模型原理詳解
總結
以上是生活随笔為你收集整理的【CVPR2020 image caption】读Meshed-Memory Transformer for Image Captioning的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: image caption优秀链接
- 下一篇: HTML、CSS、javascript总