白黒写真をカラー化するsiggraph2016_colorizationを試してみた

torch

早大の研究グループが、白黒写真を彩色する手法を確立し、GitHubのsiggraph2016_colorizationにソースコードを公開しているということなので試してみました。

白黒写真を彩色する手法の概要は、こちら(https://www.waseda.jp/top/news/41520)。

なお、GitHubに公開されている実装はTorchを用いているので、以下の記事「NVIDIA DIGITS 3.0をインストールしてみた」のNVIDIAのMachine LearningリポジトリでUbuntu 14.04にインストールしたTorch(torch7-nv)を使います。

NVIDIA DIGITS 3.0をインストールしてみた
NVIDIAからDeep Learning用トレーニングシステムのDIGITS 3.0がリリースされていたので、Ubuntu 14.04にインストールしてみました。
スポンサーリンク

準備

最初に、作成したgithubディレクトリに移動し、GitHubのsiggraph2016_colorization(https://github.com/satoshiiizuka/siggraph2016_colorization)をcloneします。

$ mkdir ~/github
$ cd ~/github
$ git clone https://github.com/satoshiiizuka/siggraph2016_colorization

次に、siggraph2016_colorizationディレクトリに移動し、モデル(colornet.t7)をダウンロードします。

$ cd siggraph2016_colorization
$ ./download_model.sh

白黒写真のカラー化

siggraph2016_colorizationの使い方は、以下のようにcolorize.luaの後に、オプションなしでinput_imageとoutput_image(省略可、省略時はout.png)を指定すると、input_imageを色付けし、output_imageに出力するようです。

$ th colorize.lua <input_image> [<output_image>]

最初に、siggraph2016_colorizationディレクトリにあるansel_colorado_1941.pngを色付けしてみます。

$ th colorize.lua ansel_colorado_1941.png out.png

原風景が分からないのですが、それらしい感じになっています。

次に、OpenCVのサンプル画像として有名なレナさんの画像(lena.jpg)をImageMagickで白黒画像に変換して、色付けを試してみました。

lena

lena.jpg

$ convert lena.jpg -monochrome lena_mono.jpg
$ th colorize.lua lena_mono.jpg lena_color.jpg

input_imageが白黒2色変換した画像の場合、色が付きません。

今度は、ImageMagickでグレースケール画像に変換して、色付けを試してみました。

$ convert lena.jpg -colorspace Gray lena_grayscale.jpg
$ th colorize.lua lena_grayscale.jpg lena_color2.jpg

input_imageをグレースケール画像に変更すると、セピア調の色が付きました。

最後に、風景のカラー写真をグレースケール画像に変換して、色付けを試してみました。

$ convert okinawa.jpg -colorspace Gray okinawa_grayscale.jpg
$ th colorize.lua okinawa_grayscale.jpg okinawa_color.jpg

少し色味が違いますが、結構いい感じにカラー化できています。

まとめ

白黒写真をカラー化するsiggraph2016_colorizationを試してみたところ、白黒2色変換したレナさんの画像は色が付きませんが、グレースケール画像に変換した画像はセピア調の色が付くことが分かりました。

また、風景写真は、少し色味を調整したい気もしますが、結構いい感じにカラー化できています。