5月頃に早稲田大学から発表された,ディープラーニングを用いて白黒画像をカラー画像に着色するプログラムを実行してみた.Luaで書かれたソースコードと学習済みモデルがGitHubで公開されているので自由に試すことができる.ありがたい.
白黒画像とカラー画像の組を大量に使って,着色に必要となる特徴をディープラーニングで学習しているらしい.学習後は,成果物として得られた特徴を使うことで,与えられた未知の白黒画像に対して,"これを自然な感じで色付けするとこんなふうになるだろう" というカラー画像を生成できる.以下は『ディープネットワークを用いた大域特徴と局所特徴の学習による白黒写真の自動色付け』より引用した,ネットワークのモデル構造のスクリーンショットです.
併せて公開されている論文も読んでいるところだが,難しい.
ここからは,手元のMacで画像変換を実行するまでの手順といくつかの実行例を書いていく.
Torch7
先に挙げたリポジトリのREADMEを読むと分かるが,実行するにはtorchが必要.torchは A SCIENTIFIC COMPUTING FRAMEWORK FOR LUAJIT
ということで,機械学習アルゴリズムを幅広くサポートしているライブラリである(初めて知った).image
, nn
, nngraph
のようにニューラルネットワークを構成する上で便利なパッケージが用意されている.
公式の説明に従って,まずはTorchをインストールする.cmakeが必要なので入っていない場合は
$ sudo brew install cmake
などを実行してインストールしておく.torch本体は下記を順に実行すればインストールできる.
$ git clone https://github.com/torch/distro.git ~/torch --recursive $ cd ~/torch $ ./install.sh
最後に to PATH and LD_LIBRARY_PATH in your /Users/daiki/.zshrc? (yes/no)
のように聞かれるので,yesと答えてインストール完了.仕上げに source ~/.zshrc
するのを忘れない.
$ th
と打って,
のように表示されればインストール成功.
siggraph2016_colorization
最初に挙げたリポジトリをcloneする.続けて,READMEにある通り,colorization model をダウンロードする.
$ ./download_model.sh
これを実行すると colornet.t7
というファイルがダウンロードされる.約690MBあるので少々時間がかかる.
着色実験
- input_image: 白黒画像ファイルパス
- output_image: 生成されたカラー画像ファイルの保存パス
を指定して実行する.
$ th colorize.lua <input_image> [<output_image>]
サンプル画像
リポジトリ内に用意されていた白黒画像 ansel_colorado_1941.png で試してみる.左の白黒画像から,右の画像が生成された.
那須で撮った入道雲の写真を白黒に変換したもので試すとこうなった.
山の斜面はこうなる.
風景以外ではどうか.ケンタッキーのチキンとポテトで試す.
正解カラー画像(オリジナル画像)はGoogle フォトのアルバムに置いておいた.プログラムによって生成された画像と比べてみると,良い感じに再現されていることが分かる.すごい技術だ.