モノクロや線画からカラー画像を生成できたりするpix2pixが面白そう

Ubuntu 18.04+GPU で遊ぶ Visual SLAM, Structure from Motion, Deep Learningなどの先進技術の記事の続きです。
Deep Learningといえばモノクロ写真をカラー化する技術が話題になったけど、実行したりできるのかな?と調べてみたところ、下記の記事およびリソースを見つけました。

Let there be Color!: Automatic Colorization of Grayscale Images
https://github.com/satoshiiizuka/siggraph2016_colorization

学習済みモデルが公開されているので簡単に試すことができるのですが、私の環境ではTorch7のインストールがCUDA絡みでエラーが出ました。色々調べるとCUDA10以上用に修正されているTorch7を見つけましたので下記をインストールしました。

Unofficial maintenance repository of Torch7. It supports CUDA10.1
https://github.com/nagadomi/distro

モノクロ写真を検索して色々変換してみましたが、なかなかおもしろいですね。風景に最適化されているようですが、人なんかも色付けされます。

さらにこんな記事もあり入力画像と出力画像のセットで学習して、着色や線画などからイメージ生成ができるpix2pixに興味を持ちました。

初心者がchainerで線画着色してみた。わりとできた。
https://qiita.com/taizan/items/cf77fd37ec3a0bef5d9d

できそうなことはだいたいできる画像生成AI、pix2pixの汎用性に驚く
https://wirelesswire.jp/2017/01/58467/

chainerはすでに開発を終了しているので、下記の記事を参考にpytorchでpix2pixを動かすことができるpytorch-pix2pixをインストールして動かしてみました。

ここでも素直には動かず「invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number」というエラーが発生。pytorch0.5以上ではエラーになるようなので、下記のようにloss_d.data.item[0]→loss_d.data.item(), loss_g.data.item[0]→loss_g.data.item(), mse.data[0]→mse.data.item() に変更したら実行できるようになりました。

学習はやはりかなりの時間がかかりますね。白黒写真に色を付けるための花のデータセットを–nEpochs 100で学習するとGPUを使っても一日ほどかかりましたね。

ノートパソコンを閉じてサスペンドしたら途中で停止してしまうので、下記で無効にして動かしましたが、ずっとファンが回ってました。

寝るなUbuntu、寝るんじゃない! – パタンしてサスペンド、を無効にする
https://bitto.jp/posts/%E6%8A%80%E8%A1%93/linux/ubuntu-dont-suspend/

生成(予測)の方はかなり速くて、1枚40msほどでした。とても面白いので、何かデータセットを作って試してみたい。

ゼロから作るDeep Learning も読みながら勉強中

saya: