飯塚らによるディープラーニングでグレースケール画像に自動的に着色する手法のデモ実装をWebでサクッと試せるサービスを作った

概要

SIGGRAPH 2016で発表される Satoshi Iizuka and Edgar Simo-Serra and Hiroshi Ishikawa: "Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification" は、ディープラーニングを使ってグレースケールの画像の色を推定して自動的に着色する手法であるが、著者本人らがデモ実装を GitHub:satoshiiizuka/siggraph2016_colorization で公開している。

実装はよくできていて、コマンドライン1行で入力画像を簡単に着色することができる。とはいえ、依存しているTorchの環境構築が面倒(複雑というより、単純にビルドに時間がかかる)なので、簡単に使えるようなWebサービスを作成した。

http://colorize.dev.kaisou.misosi.ru/

で試すことができる。

例えばよく見るクソコラのひとつであるわかり哲也(作者不詳: 以下の画像は1から始めるクソコラの作り方 - わかれのアレから引用)を入力すると わかり哲也

以下の画像が生成される。この画像は一度色情報が削除されグレースケール化された後に再度着色されたものである。海についてはむしろより自然色に近くなっているように見える。すごい。

一度グレースケール化された後に再着色されたわかり哲也

出力はpermalinkがつくので、例えばわかり哲也の例について下のリンクで全ての結果を見ることができるし、共有することもできる。

http://colorize.dev.kaisou.misosi.ru/result/545104d8-de74-4b69-b3a8-c332817ef04d

友人らに試してもらったところ、(たまたまなのか理由があるのかはともかく)ライカM モノクロームで撮られた画像がわりかし上手くカラー化されることに気づいた。

例えば

Andreas Øverland - The Burial 2/6

(photo by Andreas Øverland, CC-BY 2.0) が

Andreas Øverland - The Burial 2/6 (colorized)

になる(http://colorize.dev.kaisou.misosi.ru/result/bad14345-97ae-485c-a997-6b1ca6d9cb67)。

他にもLeica公式の作例をいれるといい感じになるものが多い。みんなでライカを買おう

上手く行く場合も上手く行かない場合もあるが、色々試すと楽しいと思う。著者らによれば、学習データの関係で屋外の写真のほうが良い結果が出やすい(This model was trained on the Places dataset and thus best performance is for natural outdoor images.)そうだ。

制限

現在与えられる画像は長辺が800pxまでに制限している。もしより大きいサイズの画像が与えられた場合は、縮小された上で処理される。これは画像が大きくなるほど処理に時間がかかり、メモリも多く要求するためだ。実際iPhone 6で撮った3264x2448みたいな写真をそのまま投げたら仮想マシンに割り当てた8GBのメモリを全部食べた上にスワップしまくってやばかった。

副産物

元プログラムを動かすための環境構築済みのDockerイメージも作った。もしDockerを使えるならば、このイメージを使うことで簡単に試すことができる。

https://hub.docker.com/r/mecab/siggraph2016_colorization/

さいごに

Webの実装はかなり雑で、ジョブキューも使っていないのでボタン連打とかされると多分一瞬で死ぬ。

(7月7日追記)
6月10日の記事で書いたように、現在はキューイングしていて、良い感じに処理されるようになっている。

やさしく使ってあげてください(๑´•.̫ • `๑)