人工知能で中判フィルムカメラの味わいを再現する
中判フィルムカメラをデジカメ化する「ZANGI BRONICA」を作っています。
普通にこれで撮影するだけでも楽しいのですが、もう一工夫として「ZANGI BRONICA」で撮影したような味がある写真を、普通のデジカメの写真からディープラーニングで再現できないかなと考えて試して見ることにしました。
具体的には「pix2pix」という技術を使います。この技術は、1対1のペアの画像を大量に教師データとして与えると、2つの画像の関係を学習してくれるものです。例えば以下のような、ドット絵と普通の画像を学習させると、ドット絵からリアルな画像を生成することができます。
pix2pixを使ったドット絵->画像変換に関して、詳しくは以下記事参照下さい。
今回は「ZANGI BRONICA」で撮った写真と、Raspberry Piのカメラで普通に撮った写真をペアにして学習させます
これらのペアのデータを学習させることで、普通の写真からフィルムカメラ的なアナログな写真を生成します。
図的には以下のようなイメージとなります。
データを取得する際にRaspberry Piのカメラでの撮影に関しては、以下のVision Kitの自作アプリを活用して撮影しました。
「pix2pix」でデジタル写真をアナログ写真に変換
学習に関しては、以前実施した「ドット絵->画像変換」と同じ要領で実施しました。詳細は元記事参照下さい。
ただ、画像変換に関しては、そのままでは使いづらかったので、入力画像を引数として与えると、画像を変換できるプログラムを作成しました。
追加したソフト含めたリポジトリは以下にアップしています。
例えば以下のようなコマンドでtest.jpg
というファイルを変換します。変換したファイルは実行したディレクトリにpix2pix-outputs.png
という名前で保存されます。
$ python pix2pix_test.py --mode test --output_dir pix2pix_test --checkpoint pix2pix_train --input_img test.jpg
ここで、いつもの優良なフリー素材、ロンスタさん(id:lonestartx)の登場です。
鮮明なロンスタさん画像が
古臭い感じに!?
ちなみに、Raspberry Piでも実行できます。以下の通りセットアップします。/etc/dphys-swapfile
を書き換えてスワップファイルを増大するところもやっておきましょう(やらないと、pix2pixで変換中に落ちます)
あとは、以下コマンド実行するだけです。
$ python3 pix2pix_test.py --mode test --output_dir pix2pix_test --checkpoint pix2pix_train --input_img test.jpg
これでRaspberry Piで画像変換が実現できる!と言いたいところなのですが、些細な(?)問題として、Raspberry Piだと1枚画像変換するのに10分程度時間がかかります…デジカメ化への道は遠い…
まとめ
「ZANGI BRONICA」とディープラーニングを使ったアナログカメラシミュレータを紹介しました。
ラズパイだと処理時間が長すぎるのと、思ったよりクオリティが上がらないのが残念なところです。GANはどうしてもGAN臭さ(?)が出るのが嫌らしいですね。
ディープラーニングのネットワーク自体、今回くらいの簡易な変換であれば、そこまでディープにしなくても良いはずなので、ネットワークを単純化して画質上げつつ高速化もできないかなとか思っていますが、スキルががが…といったところです。いずれチャレンジしたいですね。
こちらに関しても、2018年12月1日(土)、12月2日(日)にOgaki Mini Maker Faire 2018(OMMF2018)でオリジナルのラズパイカメラに機能搭載してデモをする予定です。ただ、1枚の変換に10分かかるのでどうしようか検討中です(笑)
OMMF2018の特設ページは以下です。