この度NPO法人 まちづくりエージェント SIDE BEACH CITY.で、パソコン・スマートフォンの活用方法を紹介するパフォーマンスをすることになりました。
6/15開催のいそご地域活動フォーラムにて、PC活用パフォーマンスを開催 | まちづくりエージェント SIDE BEACH CITY.
まあそれはそれとして、この場で以前紹介されていた、白黒写真を彩色するプログラムを見せることになり、オープンソースなので実際にビルドし、実行してみることに。
大まかには以下の記事にあがっていますので、環境が揃っている人は特に問題はないかと。
ただし、わたしはWindowsのPCしか持っていないため、とりあえずDockerを使って実行環境を構築しました。また、2019年現在は上記プログラムのままでは動作しない部分があるため、それも含めてメモ。
手順
だいたい上記の通りですが、ひとつだけ。
ubuntu 14.04 でのapt-add-repositoryのインストール - Qiitaに書いてあるとおり、「python-software-properties」というパッケージは2019年5月24日現在のUbuntuの環境には存在しないため、「software-properties-common」に変更する必要があります。
また、DockerhubでインストールできるUbuntu環境にはwgetなどの基本的なコマンドが入っていないため、apt-getでちゃんとインストールしておきます。
で。
で、つくってみたDockerfileがこちら。
d_build.sh
でコンテナイメージをビルドし、d_run.sh
でコンテナを実行、bashに入れます。
README.mdにも書いているとおり、事前に
- 仮想マシンに8GBくらいの容量を割り当てておくこと
- /dockerというディレクトリを共有フォルダとして作成しておくこと
ということが必要になります。
では結果はどうなるかというと、とりあえずWebサービス版と同じなようです。ImageNet Modelというものもあるようなので、そちらを使うとまた違うのかもしれません。
色鮮やかになるかどうかは、「とりあえず写真による」という感じです。すごく鮮明に彩色される写真もあれば、全体的に茶色っぽくなるだけという写真もあるという感じ。また、最近になってモノクロレンズで撮影したり、別のアプリで白黒化した写真は、おおよそ元の画像に近くなるという印象がありました。
そのほか
そのほかDockerfile作成に当たって気をつけた点
RUN
コマンドの扱いについて
Dockerfileでは、ファイルを修正したあと再イメージのビルドを行うと、「修正したより下の行だけ」再構築されます。
torchのビルドなどはなるべくRUN
コマンドを1行ごとに分けておくと、ビルドイメージの作成に失敗したときの手戻りが少なく安心です(よくあるサンプルのように別のshファイルで処理したり、複数コマンドを&&で繋いだりすると、コマンドが失敗したときに一からやり直しになる)。
Dockerfileのビルドと実行について
Dockerfileのビルド(docker build)と実行(docker run)については、何度も実行することになるためシェルスクリプトに分けておくと日々の修正が苦痛になりません。
また、うっかりコマンドラインで設定するべきパラメータを忘れたり、結びつけるべきディレクトリを指定し忘れたりすることも防げるので、忘れずシェルスクリプトにしておくとよいでしょう(今回はあまりやり直しをせずにすみましたが)。
参考
- 白黒写真に着彩する人工知能を使い、実際の色見と推測による色見を比較してみた - Qiita
- ubuntu 14.04 でのapt-add-repositoryのインストール - Qiita
- satoshiiizuka/siggraph2016_colorization: Code for the paper 'Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification'.
siggraph2016_colorizationのREADME.mdを読む限り、メモリは4GB以上あればよいみたいですね。