Chainerで画像のキャプション生成

きっかけ

パターン認識の講義でなにかツールを使って自分で動かした 結果をレポートにまとめるという課題が出されたため

ゴール

Geforce GTX1080を搭載したPCを持っていたため,GPUを使って データセットをtrainして画像のキャプション生成をやってみる. cudaなどの準備に手間が掛かりそうだったのでnvidia-docker というものを使ってみた.

環境

  • Ubuntu16.04.5 LTS

手順

dockerは使える前提

  • nvidia-dockerのインストール

github.com

# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
$ docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker

# Add the package repositories
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt update

# Install nvidia-docker2 and reload the Docker daemon configuration
$ sudo apt install -y nvidia-docker2
$ sudo pkill -SIGHUP dockerd

# Test nvidia-smi with the latest official CUDA image
$ docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
  • nvidia-docker でchainer環境にログイン

GitHub - chainer/chainer at v4

$ nvidia-docker run -it chainer/chainer /bin/bash
  • gitインストールとchainerのサンプルプログラム実行(docker内)
# ~ apt update && apt install git
# ~ git clone https://github.com/chainer/chainer
# ~ python chainer/examples/mnist/train_mnist.py --gpu 0
  • 画像キャプション生成サンプルプログラム実行(docker内)

chainer/examples/image_captioning at v4 · chainer/chainer · GitHub

# ~ cd chainer/examples/image_captioning
# ~/chainer/examples/image_captioning# python download.py
# ~/chainer/examples/image_captioning# MPLBACKEND=Agg python train.py --rnn nsteplstm --snapshot-iter 1000 --max-iters 50000 --batch-size 128 --gpu 0
# ~/chainer/examples/image_captioning# python predict.py --img cat.jpg --model result/model_20000 --rnn nsteplstm --max-caption-length 30 --gpu 0

補足

python download.py で MSCOCO のデータセットを落とすときに時間がかかりすぎるときは gsutil rsync を使ってダウンロードした後に,chainer/examples/image_captioning/dataに置く.

http://cocodataset.org/#download