[テスト] 畳み込みニューラルネットワークを用いたモノクロ動画の自動彩色
2016 BLOG
遅ればせながら… 2016年もよろしくお願いします.
今年のお正月、元旦から体調を崩してしまったために期せずして寝正月となってしまいました。その間、ベッドに横になりながら、なんとなくNHK BSを見ていたのですが、「映像の世紀」のデジタルリマスター版の再放送に釘付けになってしまいました。気づいたら元旦はほとんどぶっ通しで見ていたように思います。
その中で感じたのは、ぼやけた白黒映像からクリアなカラー映像になるだけで、歴史映像の視聴体験が体感として大きく異なるということです。山に囲まれた別荘で愛犬と戯れるヒトラー。映画プラトーンさながらにベトナムの村を焼き払うアメリカ兵。鮮明なカラー映像として目の当たりにすることで、歴史が「遠い昔のこと」ではなく、いまにつながる自分ごととして感じられる、そんな風に思いました。昨今憲法改正などをめぐっての議論がきなくさくなりつつある昨今ですが、もし仮に太平洋戦争当時の日本、南方に出兵した兵士の苦難や親から引き離されて疎開させられた子供達の様子を、ハイビジョンや4Kの映像でリアルに見られたら… 国民の世論にも影響があるのではないでしょうか。
そんなことを考えていたら、ちょうど面白い試みに出会いました。
畳み込みニューラルネットワーク (CNN)で白黒写真から色情報を復元する(彩色する)というものです。
Automatic Colorization
http://tinyclouds.org/colorize/
画像の分類につかわれるCNNのモデルを転用、出力としてどのカテゴリーに属しているかという確からしさを出力するのではなく、各ピクセルの色差信号を2チャンネルで出力するものとしています。 YUV色空間を使うことで、もとの白黒画像を輝度情報として用いて、この2チャンネルの色差信号とあわせてフルカラーのRGBを再現しようというのです。訓練データはImageNetの120万の静止画を利用. ImageNetの画像をいったん白黒に変換し、今回の手法で推測されたRGB値とオリジナルの色を比較、その差を損失関数として、その最小化を図ります.
TensorFlowによる実装とすでに訓練済みのCNNが公開されているのでさっそく動画に転用してみました。僕がやったのは各フレームを切りだして上記のモデルに食わせて彩色されたフレームを出力。それを再度動画にまとめるというスクリプトを書いただけです。
まずやってみたのは誰もが知る名作中の名作映画. 「七人の侍」 僕の一番好きな映画です. 左がオリジナル。右が今回の自動彩色したものです。 深い緑の山を黒い甲冑を身にまとった野武士が駆け下りてくるシーンが生成されたときにはさすがに鳥肌が立ちました。
より長いシーン
木々の緑や幹、人の顔、体、さらには馬といったImageNetにあるものに関してはかなりの精度で彩色されているのが見て取れます。一方で衣服のような色に恣意性があり何色でもありうるような人工物の場合の彩色にはかなり難があります。また藁葺き屋根を草かなにと間違えて緑に彩色していることもわかります。
もう一つは長嶋さんのサヨナラホームランで有名なプロ野球初の天覧試合.
ジャイアンツのユニフォームが綺麗に再現されてます.
あとは自分の子供のころの白黒写真を。。。とも思ったのですが、さすがに僕が生まれたときにはすでに完全にカラー写真へと移行したあとでした(笑 かわりに両親がわかかりし頃の写真をもらってやってみたのがこちら。親父たちなかなかおしゃれです。
これを見た父の反応
お母さんの吊りスカートの色ははっきり覚えていて記憶通りとのことです。お父さんの写真の左から2人目のカーディガンも覚えています。
最後の写真の花の色は赤で葉っぱは緑だったというのですが。どうしてこんなことがわかるんだろう!ビックリポンです。花の周りが何となく赤っぽいけどねえ。若返ったようで^o^ 懐かしいなあ!
僕に取っても大好きだった他界した祖母の若かりし頃の雰囲気が伝わってきてなんとも言えない気持ちになりました。。。
元のリンク先にも書かれていた通り、今回のモデルを更に拡張、改良できればよりよい彩色が可能になりそうです。いくつか着想が得られたので、今後GPU用にチューニングするなども試しつつ、自分でもアイデアを試してみたいと思ってます。
Featured Articles