こんばんは。
以前の記事で「OpenCVを使用したCartoon(漫画)フィルタ」というのを投稿しました。その結果はちょっと面白くない結果だったのですが、宮崎駿監督や新海誠監督のような綺麗なアニメが写真が作れるAnimeGANを使ってみたのでご紹介したいと思います。
なお、https://www.youtube.com/watch?v=R-DBiElq7OQをほぼ参考にさせて頂きました。ありがとうございます。
OpenCVを使用したCartoon(漫画)フィルタ
AnimeGANとは
AnimeGANとは「敵対的生成ネットワーク(GAN)」というディープ・ラーニングで画像をアニメ風に変換してくれるものです。AnimeGANのベースとなっているCartoonGAN、ComixGANなどの画像スタイル変換アルゴリズムモデルがあります。 GANの説明はこちらが分かりやすかったです。 https://ledge.ai/gan/
AnimeGAN https://github.com/TachibanaYoshino/AnimeGAN
AnimeGANをGoogleColabで動かす
トレーニングからしてみたかったので、GPUを使えるGoogleColabを使用方法を説明します。
①GoogleColab起動
GoogleColabを開きます。
\[ファイル\]-
\[ノートブックを開く\]をクリックします。ファイル名を適当な名前に変更します。 
\[編集\]-
\[ノートブックの設定\]よりGPUを指定します。 
接続されるまで少し待ちます。 
②AnimeGANを取得
「+コード」をクリックして以下を入力して実行▶します。
1
| !git clone https://github.com/TachibanaYoshino/AnimeGAN
|


次に「+コード」をクリックして以下を入力します。作業ディレクトリをAnimeGANに変更します。
1
2
3
| import os
os.chdir('AnimeGAN')
print(os.getcwd())
|

③学習済みモデルとDatasetを取得
データは以下にあります。これを作業フォルダに展開していきます。 https://github.com/TachibanaYoshino/AnimeGAN/releases
AnimeGANフォルダ配下に「download_staffs.sh」というファイルを新規作成します。 
そのファイルを開いて以下を入力します。事前トレーニング済みモデル、vgg19の重み、トレーニングデータセットを対応するディレクトリにダウンロードして保存しています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| URL=https://github.com/TachibanaYoshino/AnimeGAN/releases/download/Haoyao-style_v1.0/Haoyao-style.zip
ZIP_FILE=./checkpoint/Haoyao-style.zip
TARGET_DIR=./checkpoint/saved_model
mkdir -p ./checkpoint
wget -N $URL -O $ZIP_FILE
mkdir -p $TARGET_DIR
unzip $ZIP_FILE -d $TARGET_DIR
rm $ZIP_FILE
DatesetURL=https://github.com/TachibanaYoshino/AnimeGAN/releases/download/dataset-1/dataset.zip
ZIP_FILE=./dataset.zip
TARGET_DIR=./dataset
rm -rf dataset
wget -N $DatesetURL -O $ZIP_FILE
unzip $ZIP_FILE -d $TARGET_DIR
rm $ZIP_FILE
VGG_FILE=./vgg19_weight/vgg19.npy
wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1U5HCRpZWAbDVLipNoF8t0ZHpwCRX7kdF' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1U5HCRpZWAbDVLipNoF8t0ZHpwCRX7kdF" -O $VGG_FILE && rm -rf /tmp/cookies.txt
|
上記ファイルを保存したら、以下を入力して実行します。
1
| !bash download_staffs.sh
|
④モデルをトレーニング
以下を入力して、GPUの使用状況を確認します。
赤枠部分が0だったので、main.pyを開いて「os.environ
\["CUDA\_VISIBLE\_DEVICES"\]」を1→0に変更します。 
以下を入力してトレーニング開始します。(長いです40分程度)
1
| !python main.py --phase train --dataset Shinkai --epoch 1 --init_epoch 1
|
上記で以下エラーが出たらimportします。 
※現時点ではバージョン指定が必要です。
1
| !pip install tensorflow==1.15
|
以下でトレーニング終了です。 
データが以下に出来上がります。 
⑤テスト
以下でテストします。変換したい画像は「dataset/test/real」に配置します。
1
| !python test.py --checkpoint_dir checkpoint/AnimeGAN_Shinkai_lsgan_300_300_1_3_10 --test_dir dataset/test/real --style_name S
|
出来上がり。
\[colwrap\]\[col2\]
\[/col2\]\[col2\]
\[/col2\]\[/colwrap\]??? トレーニング不足という事ですかね(笑)
ちなみに事前学習済みモデル(宮崎駿監督Ver)を使用したのはこちら。
1
| !python test.py --checkpoint_dir checkpoint/saved_model --test_dir dataset/test/real --style_name H
|
\[colwrap\]\[col2\]
\[/col2\]\[col2\]
\[/col2\]\[/colwrap\]すごい!!宮崎駿監督の世界かは分からないけど、アニメになってる!