乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

GAN

本日は画像をジブリアニメ風に加工することのできる
CartoonGANというものを試してみました。

解説動画はこちら



さて
まずはGANは

敵対的生成ネットワーク
英: Generative adversarial networks

と呼ばれるもので
画像を用いた学習を行うことによって
様々なスタイルの画像を
生成できるというものです。

沢山の種類がありますが
今回はジブリアニメを学習に用いた
Cartoon-GANというものを用います。
cartoon-gan

ここのリンクからソースなどを
ダウンロードする事ができます。

動かすには他に
Anacondaや各種ライブラリが必要です。
opencv,tqdm,pillow,numpy
python -m pip install tqdm pillow numpy matplotlib opencv-python

Pytorch
conda install pytorch torchvision -c pytorch

ZIPを展開すると
中にpredict.pyというファイルがあるので
GPUが使えないマシンを使用する方は
以下の部分のコードをコメントアウトして
1行追加してもらう必要があります。

# Load weights
#netG.load_state_dict(torch.load(pretrained_dir))
netG.load_state_dict(torch.load(pretrained_dir,map_location=torch.device('cpu')))

さてこれでコードの準備はできました。

実行方法は
predict.pyのあるディレクトリに移動し

python predict.py -i 画像の場所 -o 変換後の画像の場所 -d cpu

となります。

今回の検証では10枚ほどを
変換して試してみました。

download

download-2
download-1

なかなか面白いですね
全体的に青み、緑みが強めになり
服などはアニメ風に塗りが行われ
ジブリっぽいところもあります。

他の画像の変換については
是非動画の方でご覧くださいませ。

他のアニメ風にスタイル変換する
GANもあるようですので
他のも試してみたいですね。

今回はこれまでです
それでは。

BabyGANという
父親と母親の画像から子供の画像を
生成するツールが公開されていたので
早速遊んでみました。

解説動画はこちら


 

BabyGANのリンクはこちらです。

GoogleColab:
BabyGAN


GitHub:
BabyGAN

さて、早速GoogleColabの
プロジェクトで遊んでみましょう。

開くとこんな感じになってます。
スクリーンショット 2020-08-30 14.53.32


まずは
「Clone Git repository and install all requirements」
と書かれているコードセルを実行します。


そうするとプロジェクトが
ディレクトリにコピーされます。
スクリーンショット 2020-08-30 14.55.32



次に
「Save the weights of the pretrained model and mount Google Drive」
と書かれたコードセルに移動して
そこに書かれたGoogleDriveのリンクを開きましょう。

ドライブに移動したら
「BabyGAN」のディレクトリを右クリックして
「ドライブにショートカットを追加」を選択します。
スクリーンショット 2020-08-30 14.57.40
これを先にやっておかないとエラーになります。
ショートカット追加の作業が終わったら
このコードセルを実行しましょう。

続いて
「Upload portrait of a MAN」
と書かれたコードセルを実行すると
父親画像のファイルアップロードボタンが現れるので
これをクリックして、ファイル選択して
アップロードします。

「Upload portrait of a WOMAN」
と書かれたコードセルを実行して
母親画像も同様にアップロードします。

今回は
父親に「クロちゃん」
母親に「フワちゃん」
でやってみました。

続いて
「Get latent representation」
と書かれたコードセルを実行すると
学習が始まるようです。

0%から始まり100%になって
「Generation of latent representation is complete! Now comes the fun part.」
と表示されたら終わりです。

だいたい五分くらいかかるので
遊んで待っていましょう。

学習が終わったら
「Generating a child's face」
と書かれたコードセルを実行すると
父親、母親の画像とともに
子供画像が生成されます。

パラメータをいじれるようですね。
「genes_influence:」の部分では
0.01-0.99で遺伝要素の割合を設定できます。

0に近いほど父親の要素を強くし
1に近いほど母親の要素を強くする設定です。

「person_age:」の部分では年齢設定ができます。
10-50歳を指定できるようです。

スクリーンショット 2020-08-30 15.07.16

パラメータをいじると色々なパターンで試せるので
遊んでみてください。

画像を変えるとつど学習で
時間かかるのが難点ですが
試してみるのは面白いと思います。

生成結果がどうなったかは
動画を見ていただければと思います。

父親に「クロちゃん」
母親に「フワちゃん」

だから
子供は「クワちゃん」
ですね!!!

今回はこれまでです
それでは。

このページのトップヘ