CycleGAN、pix2pixで画像処理


久々に画像処理したい気分で機械学習が気になったのでGANを試します。

PyTorchで利用できる実装があったのでそれを使わせてもらいます。

PyTorch

PyTorchPythonの機械学習ライブラリです。

https://pytorch.org/

 

Pythonのバーションを確認して古すぎるようなら更新する。

また、NvidiaGPUを使っていてCUDAをインストールしている場合はそのバージョンも確認する。

 

ちょっと古い気もしますがpipだけ更新して続けます

※のちにバージョン起因のエラーで悩むのでバージョンアップ推奨。

 

PyTorchのページから環境を選択するとコマンドを教えてくれます。

GAN

GAN (Generative Adversarial Network / 敵対的生成ネットワーク)は機械学習の手法の1つです。その中でもCycleGAN(2つのデータセットの特徴を変換する)とpix2pix(ペアデータを学習して変換する)を試します。

https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

サンプルの実行

まずはリポジトリを持ってくる。

 

サンプルデータセットのダウンロードですがそのままだと以下のエラーが出るのでシェルのwget--no-check-certificateオプションを追記する。

 

visdomという情報視覚化ツールを起動させます。

確認は http://localhost:8097

初回は少し時間がかかります。また実行ターミナルはメインとは別で。

 

メインターミナルで学習を始めましょう。

 

ここで以下のエラーが出ました。

 

原因はわかりませんでしたが、どうもPythonのバージョンが悪い気がする。

3.8.2にアップデートしてPytorch, visdomもインストールしなおします。

 

今度はこのようなエラー。

これは pip install dominate で解決しました。

 

エラーも解決したので学習に戻りますが、CycleGANのサンプルはめちゃくちゃ時間がかかります。途中で止めましたがGTX1060で50時間くらいかかりそう。

pix2pixの方は3時間弱でした。

サンプルの動きを見たら pre-trained model にあるように、学習ファイル(.pth)をダウンロードすることもできます。結構容量ありますが。

 

pix2pixの場合このようにテストを行います。こっちはすぐに終わります。

./results/facades_pix2pix/test_latest/index.htmlを開くと簡単に確認できます。

その他のサンプル

正直これらのREADMEのサンプルを見てもうーんといった感じだったので、モネの絵画を写真に変換するサンプルも紹介します。

どれもが上手くいくわけではないですが、わりと面白いです。

 

この辺のサンプルを眺めて興味を持ったものを試してみましょう。

pix2pixデータセット, pix2pixモデル, CycleGANデータセット, CycleGANモデル

 

写真をモネ風にするモデルも欲しかったのですが見当たらない。

CycleGANの学習って双方向の変換ができるのかと思いきや、学習で方向を決めてるのでこんな風にする学習してみます。

しかしこれは 1 epoch にやたら時間がかかります(90分。200epochだと…)。

 

再度モデルを探しに行くとstyle_monetという名前で用意されていました。

 

同様にukiyoe, gogh cezanneなどを使って思い出の写真を絵画にしてみるのも面白いかもしれません。ただ色々やってみた感じだと基本的に風景以外は難しいです。

冬の華厳の滝の画像が思いのほかいい感じに変換できたので載せます。

所感

こういったものの中では比較的エラーも少なくてすんなり楽しめました。

ツールとしてのドキュメントが欲しい気はしますがなんとなくわかりますし。

 

面白いデータセットとかモデルを見つけたら、色々試してみたいですね。

学習はちょっと時間と暇のある時に気合入れないときつそうですが。


コメントを残す

メールアドレスが公開されることはありません。