2015年12月20日

画像から説明文生成の実装

このエントリーをはてなブックマークに追加
画像から説明文生成を実際に出来た実装ですが
https://github.com/ryankiros/visual-semantic-embedding
これは、この実装です。
Unifying Visual-Semantic Embeddings with Multimodal Neural Language Models
Ryan Kiros, Ruslan Salakhutdinov, Richard S. Zemel University of Toronto
NIPS 2014 deep learning workshop

git clone https://github.com/ryankiros/visual-semantic-embedding.git

基本的にはこうするだけですが、
書いてある通り、追加ファイルが色々必要です。

wget http://www.cs.toronto.edu/~rkiros/datasets/f8k.zip
wget http://www.cs.toronto.edu/~rkiros/datasets/f30k.zip
wget http://www.cs.toronto.edu/~rkiros/datasets/coco.zip
wget http://www.cs.toronto.edu/~rkiros/models/vse.zip
等々


wget https://s3.amazonaws.com/lasagne/recipes/pretrained/imagenet/vgg19.pkl

これがcaptionのモデルファイルです。

demo.py中の path_to_vgg で指定するファイルです。



説明文生成は、以下のコードを何かファイルに書いて実行するだけですが、
import demo, tools, datasets
net = demo.build_convnet()
model = tools.load_model()
train = datasets.load_dataset('coco', load_train=True)[0]
vectors = tools.encode_sentences(model, train[0], verbose=False)
demo.retrieve_captions(model, net, train[0], vectors, 'image.jpg', k=5)

これだけだと実行しても何も出力されないのではないでしょうか?
こうしないと
print( demo.retrieve_captions(model, net, train[0], vectors, 'image.jpg', k=5) )



また、実行時の設定で明示的に書かれてないことが多いです。
ImportError: No module named lasagne

lasagneのインストールですが明示的に0.1でなければならないような情報もあります。
pip install -r https://raw.githubusercontent.com/Lasagne/Lasagne/v0.1/requirements.txt
pip install Lasagne==0.1
pip install --upgrade https://github.com/Lasagne/Lasagne/archive/master.zip
pip install --upgrade https://github.com/Theano/Theano/archive/master.zip


fc7 = numpy.array(lasagne.layers.get_output(net['fc7'], im, deterministic=True).eval())
AttributeError: 'module' object has no attribute 'get_output'

こういうエラーだったので明示的にこのように指定しましたが...
sys.path.append('.../dist-packages/lasagne')


File "/layers/corrmm.py", line 22, in
raise ImportError("requires a GPU to work") # pragma: no cover
ImportError: requires a GPU to work

これは、GPU実行の設定が必要です。
export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH

やその他のパス追加です。



GPUの明示的指定として
多分実行時にこうするのだと思います。
THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python run.py




NameError: global name 'warnings' is not defined
utils.py でなぜか 
import warnings
されていません。

npzファイルとかpklファイルなどは多分vse.zip に、有ります。



TypeError: resize() got an unexpected keyword argument 'preserve_range'



File "/usr/lib/python2.7/subprocess.py", line 1223, in _execute_child
self.pid = os.fork()
OSError: [Errno 12] Cannot allocate memory

AWSのg2.2xlarge インスタンスではメモリが足りないようでした。
g2.2xlarge でメモリを充足させる実装が出来るのでしょうか?


g2.8xlarge ではメモリ不足のエラーなしで実行できましたが、
このスペックでも1画像に対して20分以上かかるのでしょうか


この画像に対してのcaptionがこうでした。
['Toilet in corner with hole in tiled wall behind',
'A group of sailboats in a large harbor',
'a close up of a chair at a table with a brick wall behind',
'a red and white train in a large station',
'A bunch of bananas sitting on a pile of candy']
image


トラックバックURL

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
 
 
 
adsense
Categories
サイト内検索
にほんブログ村 科学ブログへ
にほんブログ村

amazon
Profile
Archives
blogchart
QRコード
QRコード
Recent Comments