對Image caption的一些理解(看圖說話)
1. 背景
在計算機視覺中,影象分類和目標檢測任務是比較成熟的領域,已經應用到實際的產品領域。而“看圖說話”要實現的功能是,給定一張影象,計算機能告訴我們圖片的內容,顯然,這會使一個比較複雜的任務,因為它涉及到了如下的子任務:
1)檢測影象中的目標;
2)目標的屬性,比如顏色、尺寸等;
3)目標之間的關聯;
4)語言模型,用於把上面的資訊表述成句子;
2. 相關的論文
2.1 “Show and Tell: A Neural Image Caption Generator”
為了實現看圖說話的功能,初步的想法是使用多個模型,分別實現上面的各個子任務,然後把每個子任務的結果進行邏輯上的組合。作為谷歌的大作,“Show and Tell: A Neural Image Caption Generator”這一篇論文首次使用端到端的神經網路實現圖文轉換功能,該網路結構與語言翻譯模型的對比如下,
語言翻譯模型:source sentence —> encoder —>fixed length vector —> decoder —> target sentence
圖文轉換模型:source image —> encoder —>fixed length vector —> decoder —> target sentence
可以看出,它們是很相似的,區別在於輸入的不同,語言翻譯模型的輸入是序列資料,對應的encoder便是RNN了,而圖文轉換模型的輸入是圖片,對應的encoder則為CNN網路,具體的網路結構如下,
注:引用自論文“Show and Tell: A Neural Image Caption Generator”
在訓練階段,模型經過兩大階段:影象訊號的forward propagation和誤差訊號的back propagation。前向傳播的公式表示如下,
誤差訊號的定義如下,
其中,
,因此,優化的目標是給定任意輸入影象I,輸出序列S的聯合概率最大化,這裡是將聯合概率展開成了條件概率的乘積的形式。
2.2 “Captioning Images with Diverse Objects”
上面的文章使用的是有監督的方法,只能識別訓練集中出現的目標,因此在應用中是非常受限制的。大牛Lisa Anne在CVPR 2016上發的一篇文章“Deep Compositional Captioning”,第一次解決了描述novel 目標的目的(訓練集中不存在該目標),作為一篇oral文章,作者提供了文章的程式碼,https://github.com/LisaAnne/DCC。
為了優化半監督看圖說話模型的效果,作者所在團隊在CVPR 2017發了一篇新的文章“Captioning Images with Diverse Objects”,這裡主要闡述這篇文章中的思想。
2.2.1 網路結構
文中將所提模型稱之為“Novel Object Captioner (NOC)”,其網路結構如下圖,它包含了三個子任務:語言建模+目標識別模型+圖文生成。從直覺上可見,當聯合訓練時,模型可以實現下面的目標:(1)生成讀起來通順的文字;(2)識別影象中的視覺目標;(3)生成合理的圖片描述。當(2)和(3)互補時,可以使的生成的文字包含(2)的結果,這裡(2)為imagenet 1000類的目標,(3)為MSCOCO caption資料集,只包含了80類目標,也即在inference階段,生成的文字中可以包含其餘的920種目標。
2.2.2 優化的目標函式
模型優化的目的是,在給出影象描述的同時儘可能多地識別圖中的物體,包括image caption資料集(paired)中未出現或者很少出現的目標,在訓練過程中聯合優化Image model、Language model 和 Caption模型,整體的目標函式如下,
2.2.2.1 Image-specific Loss
與常用的CNN分類模型不同,這裡我們希望能夠儘可能全地描述出影象中存在的所有目標,所以這裡的CNN為一個多標籤模型,其cross-entropy 損失如下,
其中,
表示標籤的總個數,
表示第
個輸出的真實標籤,0或者1。
2.2.2.2 Text-specific Loss
該路分支是一個語言模型,輸入文字序列
,預測下一個詞
,損失函式定義如下,
2.2.2.3 Image-caption Loss
該路分支用於根據輸入影象,輸出對應的sentence描述,損失函式定義如下,
其中,
程式碼連結:https://github.com/vsubhashini/noc/tree/recurrent/examples/noc
3. 資料集介紹
資料集名稱 | sentence數量/每幅影象 | 圖片數量 | 資料集介紹 |
---|---|---|---|
Flickr 30k | 5 | 3.1w | http://web.engr.illinois.edu/~bplumme2/Flickr30kEntities/ |
MS coco | 5 | 8w+ | https://arxiv.org/abs/1504.00325 |
由上表可以看出,每幅圖片對應了5個sentence,這是因為給定一幅影象,不同的人對它的描述會是多種多樣的,所以這樣構造訓練集,是很合理的。
4. 評測方法
在得到了看圖說話模型後,有多種用於評測模型效果的指標,比如BLEU, METEOR, ROUGE 和 CIDEr,這裡主要解釋BLEU,在解釋BLEU之前,需要說明一下n-Gram模型。
4.1 n-Gram模型
n-Gram模型用於對一個序列的聯合概率進行建模,也就是估計一個序列(比如一句話)出現的可能性。舉例來說,比如一句話有m個詞,分別為
,若想求聯合概率
,很直接地我們會想到鏈式法則,即將聯合概率的求解分解如下,
n-Gram模型的假設條件是,第k個詞出現的可能性只於相鄰的n個詞有關,用公式表達如下,