Edited at

白黒写真の彩色プログラムを使用してみた(2019年対応版)

この度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)については、何度も実行することになるためシェルスクリプトに分けておくと日々の修正が苦痛になりません。

また、うっかりコマンドラインで設定するべきパラメータを忘れたり、結びつけるべきディレクトリを指定し忘れたりすることも防げるので、忘れずシェルスクリプトにしておくとよいでしょう(今回はあまりやり直しをせずにすみましたが)。


参考

siggraph2016_colorizationのREADME.mdを読む限り、メモリは4GB以上あればよいみたいですね。