[論文名稱]:Dual-Path Convolutional Image-Text Embedding
[來源]:http://cn.arxiv.org/abs/1711.05535
在這篇文章中我們嘗試了 用CNN分類113,287類圖像。
實際上我們將每張訓練集中的圖像認為成一類。(當然如果只用一張圖像一類,CNN肯定會過擬合)。同時,我們利用了5句圖像描述(文本),加入了訓練。所以每一類相當於 有6個樣本 (1張圖像+5句描述)。文章想解決的問題是instance-level的retrieval,也就是說 如果你在5000張圖的image pool中,要找「一個穿藍色衣服的金髮女郎在打車。」 實際上你只有一個正確答案。不像class-level 或category-level的 要找「女性「可能有很多個正確答案。所以這個問題更細粒度,也更需要detail的視覺和文本特徵。
同時我們又觀察到好多之前的工作都直接使用 class-level的 ImageNet pretrained 網絡。但這些網絡實際上損失了信息(數量/顏色/位置)。以下三張圖在imagenet中可能都會使用Dog的標籤,而事實上我們可以用自然語言給出更精準的描述。也就是我們這篇論文所要解決的問題(instance-level的圖文互搜)。
[Method]:
對於自然語言描述,我們採用了相對不那麼常用的CNN 結構,而不是LSTM結構。來並行訓練,finetune整個網絡。結構如圖。
2. Instance loss。 我們注意到,最終的目的是讓每一個圖像都有區分(discriminative)的特徵,自然語言描述也是。所以,為什麼不嘗試把每一張圖像看成一類呢。這招其實在之前做行人重識別就常用,但行人重識別(1467類,每類9.6張圖像)沒有像我們這麼極端。
Flickr30k:31,783類 (1圖像+5描述), 其中訓練圖像為 29,783
MSCOCO:123,287類 (1圖像 + ~5描述), 其中訓練圖像為 113,287
注意到 Flickr30k中其實有挺多挺像的狗的圖像。
不過我們仍舊將他們處理為不同的類,希望也能學到細粒度的差別。
(而對於CUHK-PEDES,因為同一個人的描述都差不多。我們用的是同一個人看作一個類,所以每一類訓練圖片多一些。CUHK-PEDES用了annotation,而MSCOCO和Flickr30k我們是沒有用的。)
3. 如何結合 文本和圖像一起訓練?
其實在最後分類fc前,讓文本和圖像使用一個W,那麼在update過程中會用一個軟的約束,這就完成了(詳見論文 4.2)。 在實驗中我們發現光用這個W軟約束,結果就很好了。(見論文中StageI的結果)
4.訓練收斂麼?
收斂的。歡迎大家看代碼。就是直接softmax loss,沒有trick。
圖像分類收斂的快一些。文本慢一些。
5. instance loss 是無監督的麼?
instance loss的假設是無監督的,因為我們沒有用到額外的信息 (類別標註等等)。而是用了 「每張圖就是一類」 這種信息。
[Results]
TextCNN 有沒有學出不同詞,不同的重要程度?(文章附錄)
我們嘗試了從句子中移除一些詞,看移除哪些對匹配score影響最大。
一些圖文互搜結果(文章附錄)
自然語言找行人
細粒度的結果
論文中可能細節說得還不是很清楚,歡迎看代碼/交流。
https://github.com/layumi/Image-Text-Embedding