1. 程式人生 > >image caption項目調研及實踐

image caption項目調研及實踐

one challenge 比較 相同 版本 實現 維數 安裝方法 mach

image caption, 或者說叫image story teller,就是用一句話把一張圖片的內容描述出來。

比較先進的是以下這篇論文所描述的方法:

Vinyals, Oriol, et al. "Show and Tell: Lessons learned from the 2015 MSCOCO Image Captioning Challenge". In IEEE Transactions on Pattern Analysis and Machine Intelligence, 2016. [pdf]

它采用一個CNN+LSTM的架構。CNN將一張圖片映射為一個固定維數的向量,維數和LSTM中詞的詞嵌入維數相同,然後和LSTM中的序列一樣,參與最終句子生成概率的預測。文中將CNN的映射看作LSTM的第-1層。所以整個模型的目標就是:已知當前圖片作為輸入的情況下,使描述圖片的句子的概率最大。算法細節詳見論文。

下面這個github項目是上面論文架構的tensorflow版本的實現:

Tensorflow-im2txt: https://github.com/tensorflow/models/tree/master/im2txt

後來Google Brain團隊用這個方法參加了 2015 MSCOCO競賽,和MS的團隊並列第一。在models目錄下有好多其它的tensorflow項目,咱們需要的是im2txt項目,但是使用時要把整個models目錄都git clone下來。以上github鏈接中有詳細的環境構建、構建訓練數據以及訓練模型的方法,下面簡要敘述。

首先是環境的配置,要安裝tensorflow1.0或更高版本,安裝tensorflow的時候出現了好多錯誤,最終是在python的virtual env中安裝成功的,具體安裝方法可以參考tensorflow官方文檔。然後要安裝nltk和nltk data,安裝nltk data的時候如果使用自帶的接口下載,速度極慢,所以可以自行下載nltk然後導入。

image caption項目調研及實踐