- 名前: 中西克典
- 所属: 有限会社 来栖川電算(バイト)
- twitter: @n_kats_
- mastodonで遊んでいます。https://aidon.club/@n_kats_
学習済みモデルを使って画像の特徴を獲得し、二つの画像の特徴を混ぜた画像を作成する。 片方の画像から画風を獲得し、それをもう片方の画像に混ぜる。
chainer-goghを参考にtensorflowで書いたもの。caffemodelを読み込む部分でchainerのcaffemodelを読み込むものを使っているが、それ以外はtensorflow。
systemのpythonを使う、pyenv-virtualenvなどのversion管理ツールのpythonを使う、dockerを使うという方法を想定します。 python3を想定して作ってありますが、_py2ディレクトリにpython2用のものがあります。note.ipynbは、解説用にjupyterでみるためのもので、python3でのみ動作します。
- このソースコードをダウンロード。
git clone https://github.com/n-kats/tf-gogh.git
cd tf-gogh
- 特徴量のパラメータを次のリンクからcaffemodelをダウンロードし、このファイルと同じディレクトリに配置する。(ファイル名を変えないでください)
- 画風を変換したい元画像と、画風画像を用意。
- 依存するパッケージをインストールする。いずれもpipでインストールできます。
- chainer
- pillow
- tensorflow
- jupyter
- matplotlib
main.pyを実行します。画像のパス、画像のサイズ、学習のハイパーパラメータなどを指定します。
例:
python3 main.py -i ./images/cat.png \
-s ./images/gogh.png \
-m nin \
--iteration 5000 \
--lr 4.0 \
--lam 0.005 \
--height 300 \
--width 300
python3 main.py --help
で詳細の説明が読めます。
jupyter notebook
でjupyterを起動し、note.ipynbを開き、上から順に実行。
トークンを入力せよという画面が出る場合は、コンソールに表示されるhttp://localhost:8888?token=ほにゃらら
と書かれたリンクを開く。
python2を使う場合は_py2
ディレクトリのものを使います。
caffemodelファイルを_py2
ディレクトリに入れてください。
依存するパッケージをインストールしてください
- chainer
- pillow
- tensorflow
あとは、python3のCLIと同様です。
例:
python main.py -i ../images/cat.png \
-s ../images/gogh.png \
-m nin \
--iteration 5000 \
--lr 4.0 \
--lam 0.005 \
--height 300 \
--width 300
(画像の相対パスが変わっていることに注意)
こちらでもpython main.py --help
を参考にしてください。
tensorflow公式のDockerイメージは日本語が使えないので、DockerHubにdockerイメージを用意したのでそれを使ってください。 Dockerイメージはサイズが大きいので会場でダウンロードしないでください。
docker pull nkats/mln:20170513
でダウンロードできます。対応するDockerfileはdocker
ディレクトリにあります。
このdockerイメージには、日本語環境、python3とtensorflowとその他もろもろのパッケージが含まれます。
docker run -v $(pwd):/workspace --rm -it nkats/mln:20170513 \
python3 main.py -i ./images/cat.png \
-s ./images/gogh.png \
-m nin \
--iteration 5000 \
--lr 4.0 \
--lam 0.005 \
--height 300 \
--width 300
のようにpython3の場合と同様に実行します。
ヘルプも次のようにして見ることができます。
docker run -v $(pwd):/workspace --rm -t nkats/mln:20170513 python3 main.py --help
次のコマンドで実行できます。
docker run -v $(pwd):/workspace -p 8888:8888 --rm -it nkats/mln:20170513 jupyter notebook --ip=0.0.0.0 --allow-root