Python + CycleGanで茶毛のウマをシマウマに変換する
画像生成系のCycleGanを実装します.Python + CycleGanで茶毛のウマをシマウマに変換します.
今回はGoogle ColabとGoogle Driveを連携させて,notebook形式で実行してます.
Google Colaboratory(以下Google Colab)は、Google社が無料で提供している機械学習の教育や研究用の開発環境です。開発環境はJupyter Notebookに似たインターフェースを持ち、Pythonの主要なライブラリがプリインストールされています。
引用元:Google Colabの使い方 (opens new window)
最終的に,実写モンハンのディアブロス亜種を原種に戻す試みをします.
全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】
# 作業ディレクトリのファイル構成
プロジェクトディレクトリはdiablos_ganとしています.度々,省略しています.
diablos_gan
├── /pytorch-CycleGAN-and-pix2pix
│ ├── /checkpoints <- 学習モデルの保存先
│ │ └── /horse2zebra
│ │ └── latest_net_G.pth <- 学習モデル
│ │ └── /horse2zebra_pretrained
│ │ └── latest_net_G.pth <- 学習済みモデル
│ ├── /results <- 出力される変換画像
│ │ └── /horse2zebra
│ │ └── /horse2zebra_pretrained
│ ├── /datasets <- 学習データ
│ │ └── /horse2zebra
│ ├── /scripts <- モデルのダウンロード
│ │ └── download_cyclegan_model.sh
│ ├── /datasets <- データセットのダウンロード
│ │ └── download_cyclegan_dataset.sh
│ ├── requirements.txt
│ ├── train.py
│ ├── test.py
│ └── (省略)
└── diablos_gan.ipynb <- 実行用ノートブック
# pytorch-CycleGAN-and-pix2pix
# pytorch-CycleGAN-and-pix2pixのダウンロード
Google ColabとGoogle Driveを連携させて,gitからjunyanz/pytorch-CycleGAN-and-pix2pix (opens new window)をダウンロードします.
# Google ColabとGoogle Driveを連携
from google.colab import drive
drive.mount('/content/drive')
%%bash
# ディレクトリの移動
cd /content/drive/My\ Drive/diablos_gan
# gitのダウンロード
git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git
# CycleGANのデモ
起動チェックのため,茶毛ウマ->シマウマ,シマウマ->茶毛ウマへ色を変換する学習済みモデルを実行します
# 学習済みモデルをダウンロード
以下のコマンドで,学習済みモデルをダウンロードします.
学習済みモデルは, ./checkpoints/horse2zebra_pretrained/latest_net_G.pth
として格納されています.
# ディレクトリの移動
%cd /content/drive/My\ Drive/diablos_gan/pytorch-CycleGAN-and-pix2pix
# 学習済みモデルをダウンロード
!bash ./scripts/download_cyclegan_model.sh horse2zebra
# データセットをダウンロード
以下のコマンドで,シマウマと茶毛ウマのデータセットをダウンロードします.
データセットは,./datasets/horse2zebraに格納されます.
trainA・testAは茶毛ウマ,trainB・testBはシマウマの画像となっています.
# 現在ディレクトリ
# /content/drive/My\ Drive/diablos_gan/pytorch-CycleGAN-and-pix2pix
# データセットをダウンロード
!bash ./datasets/download_cyclegan_dataset.sh horse2zebra
# モジュールのダウンロード
以下のコマンドで,モジュールをダウンロードします.
# 現在ディレクトリ
# /content/drive/My\ Drive/diablos_gan/pytorch-CycleGAN-and-pix2pix
# モジュールのダウンロード
!pip install -r requirements.txt
# デモの実行
以下のコマンドで,学習済みモデルからテストを実行します.
--datarootはCucleganで変換するデータセット,--nameは/checkpointsの中で使用したいモデルが格納されているディレクトリ名です.(/checkpoints/ --nameの引数 /latest_net_G.pth)
# 現在ディレクトリ
# /content/drive/My\ Drive/diablos_gan/pytorch-CycleGAN-and-pix2pix
# デモの実行
!python test.py --dataroot datasets/horse2zebra/testA \
--name horse2zebra_pretrained \
--model test --no_dropout
学習済みモデルでの変換前画像
学習済みモデルでの変換後画像
# CycleGANの学習
先ほどダウンロードしたシマウマとウマのデータセットから,CycleGANの学習します.
google colabで実行する場合は,--display_id 0
と設定しておかないと学習が途中で止まります.
# 現在ディレクトリ
# /content/drive/My\ Drive/diablos_gan/pytorch-CycleGAN-and-pix2pix
# 学習実行
!python train.py --dataroot ./datasets/horse2zebra \
--n_epochs 50 \
--name horse2zebra \
--model cycle_gan \
--display_id 0 \
--gpu_ids 0
# 学習モデルのテスト
以下のコマンドで学習のテストができます.
--nameでは/checkpointsの中にある学習モデルのディレクトリ名を記述します.
学習モデルの名前はlatest_net_G.pth
としてください.
Aのデータ -> Bのデータに変換するモデルは***_G_A.pth
で,Bのデータ -> Aのデータに変換するのモデルは***_G_B.pth
です.
※trainA・testAはウマ,trainB・testBはシマウマの画像となっています.
# 現在ディレクトリ
# /content/drive/My\ Drive/diablos_gan/pytorch-CycleGAN-and-pix2pix
# 学習モデルの名前変更
!cp checkpoints/horse2zebra/latest_net_G_A.pth checkpoints/horse2zebra/latest_net_G.pth
# 学習モデルのテスト実行
!python test.py --dataroot datasets/horse2zebra/testA \
--name horse2zebra \
--results_dir ./results/ \
--model test --no_dropout
学習モデル(50エポック)での変換前画像
学習モデル(50エポック)での変換後画像
# まとめ
画像生成系のCycleGanを実装し,茶毛のウマをシマウマに変換しました.
今度は,ディアブロス亜種->ディアブロスに変換するモデルを実装します.