圖像描述(Image Captioning)是從圖片中自動生成一段描述性文字。可以認為是一種動態的目標檢測,由全局信息生成圖像摘要。對於人來說,圖像描述是一件簡單的事,但對於機器來說,這項任務卻充滿了挑戰性。原因在於機器不僅要能檢測出圖像中的物體,而且要理解物體之間的相互關係,最後還要用貼近人類的語言表達出來。
早期的研究例如《Baby Talk》,《Everypicture tell a story》等都是利用圖像處理的一些算子提取出圖像的特徵,經過SVM分類等等得到圖像中可能存在的目標。根據提取出的目標以及它們的屬性利用CRF或者是一些人為規則來生成出圖像的描述。這種做法非常依賴於1)圖像特徵的提取2)生成句子時所需要的規則。
隨著深度學習技術的發展和COCO等圖像標註數據集的出現,圖像描述相關的技術得到了快速的發展。目前圖像描述的方法主要是在編碼器-解碼器框架上進行改進與不斷嘗試。
圖1 圖像描述示意圖
本文著重介紹幾個基於深度學習的圖像描述技術的開原始碼,包括訓練深度學習模型的常用數據集和幾個經典的圖像描述模型。
1.Flickr數據集
介紹:Flickr數據集,是雅虎發布的一個大型數據集,這個數據集由1億張圖片和70萬個視頻的URL以及與之相關的元數據(標題、描述、標籤)所組成的。Flickr8k、Flickr30K分別包含8000和31000張圖片,每一張圖片都有人工標註的5句話。
主頁:http://shannon.cs.illinois.edu/DenotationGraph/
2. SBU captioned photo數據集
介紹: SBU captioned photo數據集是Flickr數據集的一個子集,是從Flickr數據集中經過篩選出100萬張圖像以及相關的描述。
主頁:http://www.cs.virginia.edu/~vicente/sbucaptions/
論文:http://tamaraberg.com/papers/-
generation_nips2011.pdf
3.MSCOCO Caption 數據集
介紹:MS COCO 數據集是微軟構建的一個數據集,圖片主要從複雜的日常場景中截取,數據集中一共包括91類別,328,000張圖像和2,500,000個標籤,以及通過精確的語義分割進行標定的位置。
主頁:http://cocodataset.org
4.nocaps數據集
介紹:nocaps包含了來自OpenImages平臺上一共15100張圖像,以及相應的166100個人工描述。數據集中包括MS COCO缺失的400多種類別。
主頁:http://places2.csail.mit.edu/
論文:https://nocaps.org/paper.pdf
5.AICHALLENGER數據集
介紹:AI CHALLENGER圖像中文描述是場景最豐富、語言描述最豐富、規模最大的圖像中文描述圖像數據集。每一張圖片都有對應的五句話的中文描述。描述句子符合自然語言習慣,點明了圖像中的重要信息,涵蓋主要人物、場景、動作等內容。數據集包含30萬張圖片,150萬句中文描述。
主頁:https://challenger.ai/dataset/caption
論文:https://arxiv.org/abs/1711.06475
6.VISUALGENOME數據集
介紹:VISUAL GENOME數據集是一個致力於將語言描述與結構化圖像聯繫在一起的數據集。圖像包括三種描述屬性:地區、屬性和關係。數據集一共包括108,077張圖片,540萬地域性描述,3.8百萬個對象實例,2.8百萬個屬性,230萬關係以及170萬視覺問答對,
主頁:http://visualgenome.org
論文:http://visualgenome.org/static/paper/-
Visual_Genome.pdf
7.IAPRTC-12數據集
介紹:IAPR TC-12數據集包含20000張真實圖像,這些圖像包括不同運動和動作的照片,人物,動物,城市,風景和當代生活的許多其他方面的照片。每個圖像都有最多三種不同語言(英語,德語和西班牙語)的描述。
主頁: https://www.imageclef.org/photodata
論文: http://nla.gov.au/anbd.bib-an43036734
8.Adaptive attention
論文:Gao L, Li X, SongJ, et al. Hierarchical LSTMs with Adaptive Attention for Visual Captioning[J].IEEE Transactions on Pattern Analysis & Machine Intelligence (1): 1-1.
工作:目前大多數基於注意力機制的圖像描述採用的都是編碼器-解碼器框架,然而解碼器應該對不同的詞有不同的注意策略。一些英文代詞連詞等不需要視覺信息的詞彙生成更多依賴語義信息而不是視覺信息。這種非視覺詞的梯度會影響視覺信息的有效性。本文提出了一種帶有視覺標記的自適應注意力模型,模型可以決定在一個時間點依賴於視覺信息還是語義結構。具體架構如下:
圖2 自適應注意力模型
代碼:https://github.com/jiasenlu/AdaptiveAttention
9.Neural Baby Talk
論文:Lu J, Yang J,Batra D, et al. Neural baby talk[C]//Proceedings of the IEEE Conference onComputer Vision and Pattern Recognition. 2018: 7219-7228.
工作:該論文認為當前典型的圖像描述模型過分依賴於語言模型,導致生成的圖像描述與圖像內容關聯不夠。論文的基本思想是採用物體檢測器檢測圖像中的物體,然後借鑑了自適應注意力模型的做法,學習了一個哨兵參數來決定在生成每個詞的時候是選取數據集中的詞彙還是檢測到的詞彙。下圖為具體架構:
圖3 Neural Baby Talk
代碼:https://github.com/jiasenlu/NeuralBabyTalk
10.Self-critical Sequence Training for Image Captioning
論文:Rennie S J, Marcheret E, Mroueh Y, et al. Self-criticalsequence training for image captioning[C]//Proceedings of the IEEE Conferenceon Computer Vision and Pattern Recognition. 2017: 7008-7024.
工作:該論文認為當前圖像描述主要存在的問題是模型訓練時,輸入RNN的上一時刻的單詞是來自訓練集的單詞。而在測試的時候依賴的是自己生成的單詞,一旦生成得不好就會導致誤差的積累,導致後面的單詞也生成得不好。模型訓練的時候用的是交叉熵損失函數,而評估性能的時候卻用的是BLEU、ROUGE、METEOR、CIDEr等衡量指標,存在不對應的問題。由於生成單詞的運算是不可微的,本文的思路是用強化學習來優化誤差。
圖4 強化學習網絡結構圖
代碼:https://github.com/ruotianluo/self-critical.pytorch
11.Show, Attend and Tell: Neural Image Caption Generation withVisual Attention
論文:Xu K, Ba J, Kiros R, et al. Show, attend and tell: Neuralimage caption generation with visual attention[C]//International conference onmachine learning. 2015: 2048-2057.
工作:該方法提出了將注意力機制與傳統的encoder-decoder框架結合的方法。在編碼器端,模型使用一些預訓練的模型來提取特徵,本方法提取的特徵向量來自於低層,這樣解碼器可以通過選擇特徵向量的子集來聚焦圖像的某些部分。在解碼器端採用RNN來解碼並生成詞序列,與傳統方法不同的地方在於本文採用兩種注意力機制的結合併增加一個跟時間有關的維度因子,從而讓模型的注意力更加集中在目標圖像區域,進而解碼得到更加合理的詞序列。
兩種注意力機制分別是 Stochastic 「Hard」 Attention和 Deterministic 「Soft」 Attention。「硬」注意力機制是計算將不同圖像區域輸入解碼器的信息的概率,「軟」注意力機制是計算將圖像區域輸入解碼器所佔的比例。下圖為該方法的網絡結構圖:
圖5 Visual Attention網絡結構圖
代碼:https://github.com/sgrvinod/a-PyTorch-Tutorial-to-Image-Captioning
12.DenseCaps: Fully ConvolutionalLocalization Networks for Dense Captioning
論文:Johnson J, Karpathy A, Fei-Fei L. Densecap: Fullyconvolutional localization networks for dense captioning[C]//Proceedings of theIEEE Conference on Computer Vision and Pattern Recognition. 2016: 4565-4574.
工作:這篇文章的主要貢獻在於提出了新的密集定位層,它完全可微並且可以將其單獨插入其他任何圖像處理的網絡中來實現區域定位的訓練和預測。該層預測了圖片中的一系列感興趣的區域(ROI)並使用了雙線性插值來較為平滑得提取區域中的激活值。其網絡模型由三部分組成:卷積網絡、密集定位層和RNN語言模型。其模型結構如下圖示:
圖6 DenseCaps模型結構圖
代碼:https://github.com/deepsemantic/image_captioning
13.Towards Diverse and Natural ImageDescriptions via a Conditional GAN
論文:Dai B, Fidler S,Urtasun R, et al. Towards diverse and natural image descriptions via aconditional gan[C]//Proceedings of the IEEE International Conference onComputer Vision. 2017: 2970-2979.
工作:當前的Image Captioning工作由於大多使用極大似然估計來訓練模型。這種類似的方法會帶來模型產生的圖片描述高度與ground truth一致,缺失了多樣性,顯得生硬。該論文提出利用ConditionalGAN讓模型產生的圖片更加描述貼合人類的表達,改善句子的多樣性。
Generator方面,以CNN提取的圖像特徵及噪聲作為輸入,用LSTM生成句子,隨後通過蒙特卡洛方法從Evaluator那裡得到反饋,並通過策略梯度算法來更新參數。
Evaluator方面,使用LSTM對句子編碼,然後與圖像特徵向量合併再處理,得到一個概率值。Evaluator既要判別句子是否像是人類生成的,同時要判別句子和圖片是否相關。在訓練時,作者就把對句子是否自然和對與圖像內容是否相關的區分開。
該模型結構如下圖所示:
圖7 Conditional GAN示意圖
代碼:https://github.com/msracver/Deep-Exemplar-based-Colorization
14. Contrastive Learning for ImageCaptioning
論文:Dai B, Lin D.Contrastive learning for image captioning[C]//Advances in Neural InformationProcessing Systems. 2017: 898-907.
工作:本文是為了解決一些圖像描述算法由於採用極大似然估計來訓練模型,使得生成的描述不具備獨特性的問題。本文就此提出了通過構造損失函數利用了負樣本參與訓練,來提高模型的獨特性。
最終的損失函數:
代碼:https://github.com/doubledaibo/clcaption_nips2017