[論文筆記]Show and Tell: A Neural Image Caption Generator
Show and Tell:一個神經影像描述生成器
年份:2015年
期刊:CVPR
研究問題
學者們提出一個基於深度遞迴架構的生成模型,結合電腦視覺與機器翻譯的最新技術,用來產生描述影像的自然句子。
機器翻譯領域當時已經有 encoder–decoder RNN,把一串文字編碼成向量,再解碼成另一串文字。學者們認為RNN這類於機器翻譯有良好能力的模型概念,也能應用於影像描述,因為一張影像到一個語句也屬於另類機器翻譯。
該模型經過訓練,使目標描述句子在給定訓練影像時的機率最大化。
學者們的模型是資料驅動並以端到端方式訓練,並搭配豐富多元資料集,為了解答以下問題:
- 資料集規模如何影響泛化能力?
這篇工作最直接的做法,是在多個規模與性質不同的資料集上訓練與測試,包括較小的 Pascal、較中等的 Flickr30k、大一些但 noisy 的 SBU,以及當時很大的 MS COCO。
針對較大、標註較多樣的 COCO 能讓模型學到更豐富的語言模式與視覺概念,並在 BLEU-4 上達到當時 SOTA,顯示規模擴大對泛化有明顯幫助。 - 能達成哪些種類的遷移學習?
語言與圖片之間的遷移
影像用 CNN 映射到固定向量,再與文字 embedding 一起送進 LSTM,形成共享的語意空間。此外原文也探討到word embedding 的鄰近詞,如「horse」附近有「pony、donkey、goat」,作者明講這種語義鄰近可以幫助 CNN 對「長得像馬的動物」提取較通用的特徵,屬於語言資訊反向影響視覺表徵的例子。
任務形式上的遷移(同一任務只是跨資料集)
這裡的「遷移」都是「同一任務(圖像描述)但不同資料分布、標註品質」之間的遷移。在一個大型 caption 資料集(如 COCO)上訓練好的 CNN+LSTM,可以在較小的資料集(如 Pascal、Flickr30k)上 fine-tune改善小資料集表現。論文有提到,從較大的 Flickr30k 訓練,轉去 Flickr8k 測試,觀察資料量對泛化的影響。 - 如何處理弱標註的範例?
論文沒有設計額外損失或半監督方法專門處理弱標註;對於噪音帶來的負面效果,幾乎沒有細緻分析,只用整體指標改善來做「實證」。
研究背景
過去做圖片理解多半是「標籤分類」或「偵測特定物體」,像是輸出「dog, grass」這種關鍵字,而不是自然語句。
自動以語法正確的英文句子描述影像內容是一項非常具挑戰性的任務,但它可能產生重大影響,例如幫助視障者更好地理解網路上的影像內容。
早期的影像描述方法,通常是:先用手工特徵或傳統視覺模型偵測物體與關係,再套模板組句,產生的句子不夠自然也不夠彈性。
這項任務明顯比研究已久的影像分類或物體辨識任務更困難。事實上,一個描述不僅必須抓住影像中包含的物體,還必須表達這些物體彼此之間的關係、它們的屬性以及它們所參與的活動。除了視覺理解之外,還需要一個語言模型。
模型架構
整體就是CNN 編碼圖片 + LSTM 解碼成句子的單一神經網路架構。
圖片編碼:
採用在當時最強的卷積網路(如 Inception/GoogLeNet 類型)在 ImageNet 上預訓練,取倒數第二層的特徵向量當作圖片的高維表示。這個向量被視為句子生成模型的語意條件。
文字解碼:
使用單層 LSTM 做語言模型,輸入是前一步生成的單字 embedding,外加圖片向量(通常在初始時間步或當作額外 bias 注入)。LSTM 逐步輸出下個單字的機率分布,直到輸出「end」標記為止。
端到端訓練:
損失是「給定圖片與前面單字時,最大化整句真實描述的條件機率」,等效於把每個時間步的交叉熵 loss 相加,對整個 CNN+LSTM(或至少 LSTM 和最後幾層 CNN)做反向傳播。
生成時推論:
給一張訓練資料集以外的新影像,先用 CNN 算出向量,丟進 LSTM。
從起始符號開始一步一步選字;為了增加句子品質,使用 beam search 而不是每一步只選機率最高的字。這樣能找到更高總機率的整句。
實驗方法
使用資料集:
- Pascal dataset:較小的資料集,有每張圖 1 句或少量描述,主要用來與早期方法比較。
- Flickr30k:約 3 萬張圖,每張圖有 5 句描述,常用來評估 caption 模型。
- SBU dataset:規模較大但標註品質較雜,由網路圖片和其說明文字組成。
- MS COCO:當時新釋出的大型資料集,每張圖配多句自然語言描述,是主要 benchmark。
評估指標與方法 :
使用機器翻譯常用的 BLEU 分數(尤其是 BLEU-1 和 BLEU-4)衡量自動生成描述與人工描述之間的 n-gram 重疊情況。
量化結果顯示,在 Pascal、Flickr30k、SBU 上的 BLEU-1 都大幅超過先前方法(例如 Pascal 從 25 提升到 59),在 COCO 上達到 BLEU-4 27.7,屬當時最佳表現。
程式實作測試
(LOCAL測試時候Batch Size有調降為16 因為記憶體跑到不足)
模型能力上的限制
缺乏細粒度與關係理解,模型只用單一整圖 CNN 特徵作為條件,沒有識別多個物體、空間關係或注意力機制,因此對複雜場景或多物體互動的描述能力有限。
留言
張貼留言