2015 CVPR-2014.12.7 submitted
摘要
該文提出了一個給定圖片或區域,生成對應的自然語言描述的模型。我們的方法,在圖片和它們對應的語句描述(sentence description)構成的數據集合上,學習語言和視覺數據內在的模式對應關系。我們的對齊模型(alignment model)是基于一個新模型組合方式:在圖片上利用CNN模型,在sentence上利用雙向RNN模型(bidirectional Recurrent Neural Networks),同時也基于一個結構化目的:通過一個多模編碼來對齊兩種模式輸入。之后又給出了一個多模的RNN架構,來學習如何對圖片區域生成描述。我們的對齊模型在Flickr8K、Flickr30K、MSCOCO數據集上的檢索實驗(retrieval experiments)取得了state-of-art的效果。之后我們證明生成的描述在full images 和region-level annotations都明顯優于retrieval baseline。
一、介紹
圖片描述對于視覺識別模型(visual recognition models)是個elusive task。之前視覺識別大部分的工作是對具有固定的視覺類別集合的圖片進行分類,并且取得了很多進展[45,11]。然而,雖然封閉詞典表達的視覺概念構成了一個相對便利的模型假設,但是當與人類能夠表達的豐富描述相比,這同樣是極大的限制。
在解決生成圖片描述方面已經提出了一些先驅方法。但是,這些方法往往依賴硬編碼視覺概念(hard-coded visual concepts)和語言模板(sentence templates),這些導致了多樣性上的限制。并且,這些工作的重點目前放在如何將復雜的視覺場景縮減到一個語句中,這在我們看來是沒必要的。
在本文中,我們致力于生成稠密(dense descriptions)的圖片描述。這個目標的首要挑戰是如何設計我們的模型,使它能夠在描述圖片中的內容的同時并用自然語言來表述它們。此外,模型需要盡量不依賴于假設,例如特殊的硬編碼模型,規則或者是類別,而僅僅是從訓練語料中學習它們。其次,一個實際中的挑戰是,在互聯網上存在大量image caption的數據集,但是這些描述中常常提到在圖片中位置未知的一些實體。
我們的核心觀點是,我們可以利用這些大量的圖片-句子數據集,將sentences看成弱標注(weak labels),這些句子中連續分割的word對應圖片中一些特殊但未知的位置。我們的工作就是推斷這些“對齊”并且將他們應用到學習描述生成模型。具體的,我們的貢獻主要是兩點:
1)我們提出了一個深度神經網絡模型,能夠推斷語句分片(sentence segments)和它們描述的圖片區域(image regions)間的潛在對齊(latent alignment)關系。我們的模型通過一個共同的、多模的編碼空間,以及一個結構化目標,將兩種形態(模式)聯系在一起。在image-sentence的檢索實驗中測試了這個方法的效果,超過了state-of-art的方法
2)我們提出了一個多模的RNN架構,輸入一個image,生成對應的文本描述。我們的實驗顯示,生成的sentence明顯優于基于檢索的baseline。在推斷的對應關系上,我們訓練了這個模型,并且用一個新的局部注釋的數據集來測試了它的效果。
二、相關工作
1、Dense image annotations
對圖片內容的稠密注釋的目標,在之前已經有很多工作。[2,48]研究words和images之間的多模對應關系,來對圖片片段進行注釋。[34,18,15,33]研究全景理解(holistic scene understanding),場景類型、物體以及他們在圖片中的空間信息可以被推斷出來。但是,這些工作的焦點是對場景、物體、具有固定類別的圖片區域的正確標注(correctly labeling),然而我們關注的是更加豐富的和更高層面的圖片區域的描述。
2、Generating description
用sentence描述圖片的任務,已經有很多探索。一些方法把這個任務定義為檢索問題,訓練集合中最適合的注釋在檢索時返回給一個測試圖片[21,49,13,43,23],或者訓練數據里的注釋被拆解后粘結在一起[30,35,31]。其他一些生成圖片描述的方法是基于固定的模板的,這些模板的內容是基于圖片內容填充的[19,29,13,55,56,9,1]或者基于一些生成語法[42,57],但是這樣的方法限制了可能輸出的多樣性。
和我們工作更相關的,[26]提出了一個Log-Bilinear模型,可以生成完整的語句描述,但是他們的模型使用了一個固定窗口的context(我們的RNN模型可以根據全部的已經生成的words來預測下一個word的概率分布)。
在本文的提交過程中,出現的和本文更相近的工作,同樣使用RNN來生成圖片描述[38,54,8,25,12,5]。我們的RNN比上述大部分的方法都更加簡單同時性能有優勢,在實驗中會比較這部分。
3、Grounding natural language in images
一些方法嘗試從視覺領域里grounding文本[27,39,60,36]。我們的方法受到[16]的啟發,通過一個語義編碼(semantic embedding)關聯words和images。更相關的工作是[24],將突破和語句分解成片段,并通過一個排序目標來推斷它們內部的對齊。與之它們基于grounding dependency tree relations不同,我們的模型是對齊連續的語句片段,這更具意義且可解釋,同時對長度不要求固定。
4、Neural networks in visual and language domains
在對圖片和文本的high-level表示上已經有一些方法。在圖像上,CNN[32,28]在圖片分類和物體識別[45]上,近期涌現出了一類模型。在文本上,我們的工作受利于預先訓練的Word vector,可以獲得低維的文本表達。最后,RNN模型之前已經用再語言模型中,但是我們使這些模型適應圖片數據。
三、Our Model
模型的最終目標是生成圖片區域的描述。在訓練的過程中,模型的輸入是圖片和對應的句子描述。首先模型通過一個多模編碼(multimodal embedding)將sentence片段(snippets)對齊到它們描述的視覺區域。之后,我們把這些對應關系視為訓練數據,訓練一個multimodal RNN模型來學習生成這些片段(snippets)。
1、學習對齊視覺和文本數據Learning to align visual and language data
我們的對齊模型的輸入是圖片和它們對應描述的數據集。我們的關鍵insight是人工寫的描述語句,常常針對一些特別的但在圖片中的未知的位置。例如Figure2,“Tabby cat is leaning”針對cat,“wooden table”針對table。我們希望在從圖片區域中學習生成這些語言片段的同時,推斷出這些潛在的對應關系。我們的方法建立在[24]的基礎上,它使用排序模型來學習 ground dependency tree relations to image regions。我們的貢獻是使用雙向RNN網絡來計算句子中的word表示,免除計算dependency trees的需求,同時允許語句中詞和它們上下文之間無限的交互(其實就是不限串窗口的影響)。我們也充分的簡化了它們的目標函數,并證明所有的修改都提升了排序效果。
首先,我們設計了一個神經網絡來將words和image regions映射到一個公共的多模編碼(multimodal embedding)。之后,我們介紹我們新的目標函數,使具有相似語義概念的兩種模式同時落在相近的空間區域內。
1)圖片表示Representing images
根據前人的工作[29,24],我們觀察到圖片的語句描述,常常與圖片中的物體以及它們的屬性有關系。因此,我們根據[17]的方法,采用RCNN(Region Convolutional Neural Network)在每張圖片中檢測detects物體。CNN是預先在ImageNet[6]數據上訓練,按照ImageNet 200類的檢測挑戰目標調優[45]。根據[24]的工作,除了整個圖片,我們使用top 19個檢測到的位置,根據每個邊界框內(inside each bounding box)的全部像素Ib來計算圖片表示,公式如下:
V= Wm*[CNN(Ib)] + Bm
其中,CNN(Ib)將邊界框內的像素Ib,轉換成在分類之前的全連接層的4096維activations。CNN包含6億個參數,矩陣Wm是h*4096維,h是多模編碼空間的大小(其實就是隱藏節點個數),在我們實驗中嘗試了1000~1600。于是,每個圖片就被表示成了一個h維向量的集合{Vi | i=1,2,..,20}
2)語句表示Representing sentences
為了建立模式間的內在對應關系,我們希望將語句中的詞word,同樣編碼到圖片區域所表示的h-dimensional空間中。最簡單的方法是直接將每個單獨的word投影到這個編碼空間。但是,這個方法沒有考慮到詞在sentence中的順序和上下文信息。這個方法的一個擴展是用bigram word替代individual word,或者是dependency tree relations[24]。然而,這些方法依然要求一個最大的上下文窗口,并且dependency tree parsers可能還要使用在不相關的文本語料上訓練的結果。
為了解決這些問題,我們提出使用雙向RNN(BRNN)[46]來計算word的表示。BRNN輸入N個詞的序列,每個用one-hot編碼,將每個word轉換成一個h-dimensional向量。因為使用了word周圍長度變化的上下文,word的表示得到了豐富。用t表示word在sentence里的位置,準確的BRNN公式如下:
IIt是word的one-hot向量。Ww是詞的編碼矩陣,初始化采用300維的word2vec[41]權重,并且在訓練過程中保持固定以避免過擬合(雖然在實際中我們發現,這些向量被預先訓練好或者只是隨機的初始化,對最終的效果沒有什么影響)。注意到,BRNN包含兩個獨立的處理流,一個從左到右(h[f,t])和一個從右到左(h[b,t])。最終的h-dimensional表示st是一個關于location t以及它周圍的上下文的函數。從技術角度來說,每個st是sentence中全部word的函數,但是經驗發現,最終的Word representation(st)和它自己的location(IIt)的關系最大。
我們學習到參數We、Wf、Wb、Wd和對應的偏置be、bf、bb、bd。再我們實驗中,一個典型的隱層表示的大小可以從300~600維。激活函數(activation function)f采用ReLU(Rectified linear unit)。
3)對齊目標Alignment objective
通過上述方法,我們已經可以將每個圖片和sentence轉化成一個公共的h維向量集合。因為有監督語料是在整個圖片和整個句子粒度的,但是我們的策略是把image-sentence打分看成是獨立region-word打分的函數。直覺地來看,一個sentence-image對,如果它的words在圖片image中能找到充足的物體或屬性支持,那么它們應該得到較高的匹配得分。[24]的模型將第i個圖片區域和第t個word的vi·st點積(dot product),解釋成相似度的度量,并且使用它來進一步定義image k和sentence l之間的得分:
Skl = ∑t∈gl∑i∈gk max(0, vi·st)
這里,gk是圖片k中片段fragment集合,gl是語句l中的片段集合。k和l的范圍是全部訓練集合中的圖片和語句。當這個得分為正positive時,表明語句sentence fragment和一部分圖片regions是對齊的。我們將上述公式簡化了,減少了對額外目標函數及超參的依賴:
Skl = ∑t∈gl ?Max i∈gk {vi·st}
這里,每個word st對齊到單個最佳的image region。如我們的實驗數據,這個簡化同樣在最終的rank效果上得到提升。假設當k=l時代表對應的image和sentence是pair(即圖片和文本是一個樣本里的),最終的max-margin,結構化損失函數如下:
這個目標函數使對齊的image-sentence對,比非對齊的對有更高的得分,1代表margin。
4)Decoding text segment alignments to images
從3),我們可以將vi·st的大小,作為第t個詞描述image中任何一個邊界框的未normal過的log概率。但是,我們最終是要生成文本text sippets,而不是一個個單個的詞word,我們希望將連續的詞序列word sequences對齊到一個邊界框a single bounding box。
注意到最naive的solution中,每個獨立的word依據最高的region匹配得分對齊是有問題的,將導致詞被不一致的分散到不同的regions。
為了解決這個問題,我們將真正的對齊看成MRF(Markov Random Field)里的隱變量(latent variables),其中相鄰words間的雙向鏈接(binary interactions)表示對齊到同一個region。具體地,給定有N個詞的sentence和有M個邊界框的image,針對N個詞我們引入M個隱對齊變量,沿著sentence中的順序,形成一個鏈式結構的MRF。模型的輸出是一個圖片區域集合,每個用文本片段(text segments)標注。
現在我們來介紹,基于這些對應關系,生成圖片描述短語的方法。
2、多模RNN支持生成圖片描述multimodal Recurrent Neual Network for generating description
在這個章節,我們假設輸入是image和對應文本描述的輸入集合,可以是完整的image-sentence,也可以是從之前章節infer出的region-snippet。
關鍵難點在如何設計一個模型,在給定image的前提下,預測一個長度可變的輸出序列。在以前基于RNN的語言模型[40,50,10]中,通過給定當前word和從上一個時刻step得到的上下文context,來預估下個word的概率分布來實現。我們提出了一個簡單但效率比較高的方法,它額外限制了輸入圖片對應描述的生成過程。更為正式的,輸入圖片像素數據I和一個輸入向量序列(x1,…,xt)。之后,計算隱層狀態序列(h1,…,ht)和輸出層序列(y1,…,y2),迭代公式如下:
學習參數包括:Whi、Whx、Why、Who、xi、bh、bo。CNN(I)是CNN的最后一層隱層狀態。向量Yt代表了詞典中詞的分布log概率(非Normal的),詞典中包含一個特殊的END詞。
注意,我們僅在RNN的第一次迭代中輸入了圖片上下文向量Bv,經過試驗發現會比每一次迭代都輸入要好。同時,我們也發現,將Bv,(Whx*xt)都輸入給激活函數activation function會有效果。RNN典型的隱層節點個數是512。
1)RNN訓練
RNN的訓練是將當前word(xt)和之前的上下文(ht-1)結合在一起,去預測下一個word(yt)。
首先,設置h0=0’,x1設置為一個特殊的START向量,之后希望label Y1是序列中的第一個word。類似的,x2設置為第一個word的向量,希望輸出label是第二個word。最終,在最后一步xt是最后一個word的時候,目標label希望是一個特殊的END詞。代價函數是最大化Log概率。
2)RNN預測
為了預測一個句子sentence,我們首先計算輸入image的bv,設置h0=0’,x1為START向量,之后計算第一個詞y1的概率分布,我們從分布中采樣一個word(或者選擇最大值),把第一個詞的編碼向量輸入給x2,重復這個過程直到END詞被采樣到。在實驗中我們發現beam search可以得到較好的效果。
4、優化
我們使用mini-batch SGD,batch大小是100(100個image-sentence對),momentum系數是0.9。交叉驗證學習率和weight decay。我們同樣在除了recurrent層之外的其他層使用了dropout歸一化,clip gradients element wise at 5(important)(這句沒有太理解就不寫了)。由于在稀有詞和常見詞(如’a’和END詞)之間的詞頻存在差距,生成式RNN模型調優的難度比較大。我們通過RMSprop[52]獲得了最好的結果,它是一種自適應step大小的方法,采用梯度norm后的平均值來更新每個weight。
四、實驗
數據預處理:轉小寫、提出頻度小于5的詞
1、Image-Sentence 對齊評估
我們是首先調研了在rank實驗中推斷的text和image對齊的質量。我們在圖片和sentences集合上,用其中一種模式作為query檢索并根據Skl打分排序另外一種模式。最后的衡量指標是Recall@K,即一個正確的結果處在TOP K里的次數占比。
2、生成描述評估:Fulframe evaluation
使用BLEU1-4作為評估指標。