一. Image Caption任務(wù)簡介
1.傳統(tǒng)的計算機視覺任務(wù)
深度學(xué)習(xí)在圖像領(lǐng)域取得了爆炸式的發(fā)展,這些任務(wù)的正確率直逼人類水平,可是:
2.計算機已經(jīng)理解圖像了嗎?
這是faster-rcnn的一個目標(biāo)檢測結(jié)果,看似結(jié)果非常好,可是當(dāng)我們把這張照片輸入到一個計算機里時,它能告訴我們的只是:“這是馬,這是人,這是狗”,這遠遠沒有達到計算機已經(jīng)理解圖像這一個判斷。我們希望的是,當(dāng)輸入這一張照片時,計算機能夠告訴我們:“一個人騎在一匹馬上,他的狗坐在馬前面”。我們甚至希望計算機在看到這幅圖片后能夠說出下面這段話:“在一個陽光明媚的下午,一個穿著藍色衣服的年輕小伙坐在一匹健壯的馬上,他的愛犬坐在馬的前面,他們相互對望著,看起來非常開心”。這樣才能勉強說計算機已經(jīng)理解了圖像。
3.Image Caption涵義
(圖像標(biāo)注 圖像字幕 看圖說話)
本質(zhì)是視覺到語言(Visual-to-Language,即V2L)的問題
這張照片是一年級看圖說話的作業(yè),上面的描述:”圖上是什么時候?都有誰?在哪里?在干什么?在說什么?“ 正好對應(yīng)了image caption任務(wù)的要求:根據(jù)圖像給出能夠描述圖像內(nèi)容的自然語言語句。這對人類來說實在是一個小兒科的任務(wù),但是在計算機視覺領(lǐng)域卻不能不說是一個挑戰(zhàn)。因為這需要在兩種不同形式的信息(圖像信息到文本信息)之間進行“翻譯”。
4.Image Caption 當(dāng)前水平
和人類水平描述差距仍然明顯!
關(guān)于image caption這個topic階段性文章
??Explain Images with Multi modal Recurrent?Neural Networks, Mao et al.
?Deep?Visual-Semantic Alignments for Generating Image Descriptions,Karpathy?and?Fei-Fei
?Show?and Tell: A Neural Image Caption Generator,Vinyalset al.
?Long-term?Recurrent Convolutional Networks for Visual Recognition and Description,Donahue et al.
?Learning a Recurrent Visual?Representation for Image Caption Generation, Chen and?Zitnick
5.Image Caption 實際應(yīng)用
圖像標(biāo)注問題如果能夠得到很好的解決,那么價值是顯而易見的
圖像檢索(更細粒度的搜索)
視力受損人士的生活輔助(計算機成為另一雙眼睛)
6.Image Caption數(shù)據(jù)集
1. Microsoft COCO Caption數(shù)據(jù)集
? 原COCO數(shù)據(jù)集中約330,000張圖像,人工地為每張圖像都生成了至少5句標(biāo)注,標(biāo)注語句總共超過了約150萬句?
? MS COCO C5/C40
2. Flickr8K和30K
? 圖像數(shù)據(jù)來源是雅虎的相冊網(wǎng)站Flickr?
? 數(shù)據(jù)集中圖像的數(shù)量分別是8,000張和30,000張
3. PASCAL 1K
? 大名鼎鼎的PASCAL VOC challenge圖像數(shù)據(jù)集的一個子集
? 20個分類,隨機選出了50張圖像,共1,000張圖像?
7.Image Caption評價標(biāo)準(zhǔn)
BLEU
? 圖像標(biāo)注結(jié)果評價中使用最廣泛,設(shè)計初衷并不是針對圖像標(biāo)注問題,而是針對機器翻譯問題?
? 分析待評價的翻譯語句和參考翻譯語句之間n元組的相關(guān)性
二.Show and Tell: A Neural Image Caption Generator
1.摘要
? 對圖像內(nèi)容的自動描述是一個CV + NLP的AI問題
? 采用基于深度循環(huán)(recurrent)結(jié)構(gòu)的生成模型,融合了近期在計算機視覺和機器翻譯的前沿研究
? 模型學(xué)習(xí)的目標(biāo):給定訓(xùn)練圖像,最大化其對應(yīng)的目標(biāo)描述語句的似然概率
? 結(jié)果:
? BLEU-1 score指標(biāo)
? Pascal數(shù)據(jù)集:state-of-art:25分,該文59分,對比人類69分左右
? Flicker30k: 56分提高到66分
? SBU 19分提高到28分
2.introduction
? 這個任務(wù)比計算機視覺領(lǐng)域通常關(guān)注的圖像分類、物體識別任務(wù)難很多
? 任務(wù)的目的:object detection+ object relation+ object attributes+object activity
? 同時expressed in natural language
? 除了視覺理解模型外,還需要一個語言模型
? 輸入是圖片I,訓(xùn)練的目標(biāo)是最大化似然概率P(S|I),S是目標(biāo)word序列S={S1,S2,…},Si來源固定詞典
? 機器翻譯:Encoder(RNN)+Decoder(RNN)
? 貢獻:
? ?end-to-end系統(tǒng)
? ?state-of-art的sub-network的組合
? ?NIC的效果超出state-of-art
3.model
? NIC類似于將image “翻譯”成語言。最大化獲得正確描述的條件概率(條件是給定input image)
? 是模型的參數(shù),I是image,S是它對應(yīng)的翻譯結(jié)果
? S表示句子,所以長度沒有限制,比較普遍的做法是使用chain rule計算聯(lián)合概率
? 用RNN來model
4.LSTM
? 函數(shù)f的選擇需要考慮它應(yīng)對梯度消失和爆炸的能力
? LSTM的核心是memory cell c,對每個時刻的knowledge進行編碼
? cell的行為是被門“gates”控制的
? 是否forget當(dāng)前cell的值(forget gate f),
? 是否讀取當(dāng)前的輸入(input gate i)
? 是否輸出新cell的值(output gate o)
5.training
? Input: image I
? ground truth sentence:S=(S0 ,…, Sn)
? St是每個word的one-hot表示,維度等于詞典的大小.
? 圖片和words被映射到相同的空間,image通過CNN映射,words通過一個Word embedding We映射
? Loss是各個時刻上正確word的負log似然之和
? loss在全部參數(shù)(包含LSTM、CNN、We的全部參數(shù))上尋求最小化
6.result
三.neuraltalk2測試
1.torch安裝
$ curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
$ git clone https://github.com/torch/distro.git~/torch --recursive
$ cd ~/torch;$ ./install.sh# and enter "yes" at the end to modify your bashrc
$ source ~/.bashrc
安裝成功
2.依賴下載
sudo ~/torch/install/bin/luarocks install nn
sudo ~/torch/install/bin/luarocks install nngraph
sudo ~/torch/install/bin/luarocks install image
sudo ~/torch/install/bin/luarocks install hdf5?
sudo ~/torch/install/bin/luarocks install loadcaffe?
sudo ~/torch/install/bin/luarocks install cutorch
sudo ~/torch/install/bin/luarocks install cunn
(luarocks list命令查看是否安裝所有需要的依賴)
3.代碼模型
git clone?https://github.com/karpathy/neuraltalk2(代碼)
http://cs.stanford.edu/people/karpathy/neuraltalk2/checkpoint_v1.zip(模型)
th eval.lua -model model_id1-501-1448236541.t7_cpu.t7 -image_folder ./images/ -gpuid 1
4.結(jié)果
四.densecap 測試
1.依賴下載
luarocks install torch
luarocks install nn
luarocks install image
luarocks install lua-cjson
luarocks install https://raw.githubusercontent.com/qassemoquab/stnbhwd/master/stnbhwd-scm-1.rockspec
luarocks install https://raw.githubusercontent.com/jcjohnson/torch-rnn/master/torch-rnn-scm-1.rockspec
luarocks install cutorch
luarocks install cunn
luarocks install cudnn
2.代碼模型
git clone https://github.com/jcjohnson/densecap(代碼)
sh scripts/download_pretrained_model.sh(模型,可能下載很慢)
th run_model.lua -input_image imgs/elephant.jpg