実写をアニメ風に変換してくれるAnimeGANやーる（Windows10、Python3.6）

# はじめに
実写をアニメ風に変換してくれるAnimeGANをやってみました。

# システム環境
- Windows10（RTX2080 Max-Q、i7-8750H、RAM16GB）
- Anaconda 2020.02
- Python 3.6
- CUDA 9.0

# 導入
[AnimeGAN](https://github.com/TachibanaYoshino/AnimeGAN)をクローンします。

animegan用の環境を作成します。

~~~
$ conda create -n animegan python=3.6
$ conda activate animegan
$ pip install tensorflow-gpu==1.8.0
$ pip install tqdm
$ pip install scipy
$ pip install opencv-python
$ cd AnimeGAN-master
~~~
<!-- 
cudatoolkit=9.0を入れるためにpip install torch==1.5.0+cu92 torchvision==0.6.0+cu92 -f https://download.pytorch.org/whl/torch_stable.html
pip install glob
 -->

AnimeGAN-masterに[dataset](https://github.com/TachibanaYoshino/AnimeGAN/releases/tag/dataset-1)を置きます。

[Haoyao-style](https://github.com/TachibanaYoshino/AnimeGAN/releases/tag/Haoyao-style_V1.0)の中身をcheckpoint\AnimeGAN_Hayao_lsgan_300_300_1_3_10へコピペします

[CUDA 9.0](https://developer.nvidia.com/cuda-90-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exenetwork)をインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/16a0dabc-5bb2-52cc-35b1-13c3859044f6.png)

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\cudart64_90.dllをAnimeGAN-masterにコピペします。

下記を実行すると

~~~
$ python test.py --checkpoint_dir checkpoint/AnimeGAN_Hayao_lsgan_300_300_1_3_10 --test_dir dataset/test/real --style_name H
~~~

エラーが出ました。

~~~
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
~~~

[windows10 への tensorflow インストール（特定のエラー向け）](https://note.com/existy/n/n253c1800c9d2)を参考に[vc_redist.x64.exe](https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads)をインストールします。

~~vgg19_weightに[vgg19.npy](https://github.com/TachibanaYoshino/AnimeGAN/releases/tag/vgg16%2F19.npy)を置きます~~

実行するとまたエラーがでました。

~~~
tensorflow.python.framework.errors_impl.InternalError: Blas SGEMM launch failed : m=36864, n=128, k=64
~~~

[TensorFlowで"Blas GEMM launch failed"が出た場合の対処法](https://itips.krsw.biz/tensorflow-blas-gemm-launch-failed-error/)を参考にすると、GPU1を指定する必要がありました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/e3b4639b-3d58-4aad-1f6c-74dfa6f16617.png)

test.pyの9行目のos.environ["CUDA_VISIBLE_DEVICES"] = "0"を"1"に変更し、実行します。

~~~
======================End of Report==========================
FLOPs: 7937325
100%|██████████████████████████████████████████████████████████████████████████████████| 22/22 [01:24<00:00,  3.84s/it]
test-time: 84.46189665794373 s
one image test time : 3.839177120815624 s
~~~

1枚あたり3.84秒でできました！

## before
dataset/test/realフォルダに入力画像があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/3789043d-8198-82cb-d102-15d703b6c437.png)

## after
出力結果はresults\Hにあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/b5b69f11-d4cc-334f-4423-31e3406cc90a.png)

お疲れ様でした。

# AnimeGANv2
先日、AnimeGANv2が出ました！

<blockquote class="twitter-tweet"><p lang="et" dir="ltr">AnimeGANv2<br>github: <a href="https://t.co/a74PV1427U">https://t.co/a74PV1427U</a> <a href="https://t.co/lHrlDA1STr">pic.twitter.com/lHrlDA1STr</a></p>&mdash; AK (@ak92501) <a href="https://twitter.com/ak92501/status/1291775907175309313?ref_src=twsrc%5Etfw">August 7, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

早速、[ここ](https://github.com/TachibanaYoshino/AnimeGANv2)からクローンして、上の環境でやってみたところ、

~~~
CUDA9.0
tensorflow-gpu==1.8.0
~~~

GPUでは、下記のエラーが出ました。

~~~
InternalError (see above for traceback): Blas SGEMM launch failed : m=126720, n=256, k=128
         [[Node: generator/G_MODEL/C/r1/Conv/Conv2D = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="VALID", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](generator/G_MODEL/C/LeakyRelu/Maximum, generator/G_MODEL/C/r1/Conv/weights/read)]]
~~~

環境を下記に変えるとできました。

~~~
CUDA10.0、
tensorflow-gpu==1.15.0
~~~

dataset\test\HR_photoフォルダを作成し、処理したい画像を置きます。下記を実行してみましょう。

~~~
python test.py --checkpoint_dir checkpoint/generator_Hayao_weight --test_dir dataset/test/HR_photo --style_name Paprika/HR_photo
~~~

結果はresults\Paprika\HR_photoに出力されます。GPUで9秒、CPUで23秒くらいでした。

|入力|出力|
|:--|:--|
|[![ee86f6a50d844ed9918c20c35f4eb727.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/80d5ba09-9961-5598-f33a-434a733b3a06.jpeg)](https://peapix.com/bing/32066)|![ee86f6a50d844ed9918c20c35f4eb727.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/b8625783-2905-68b5-92b8-e7d87b814d68.jpeg)|
|[![36f819b9234447d183a52d7bee90d97f.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/8927a390-bfa7-2fa4-23fc-ff9709dfa28b.jpeg)](https://peapix.com/bing/31886)|![36f819b9234447d183a52d7bee90d97f.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/2cbea9e7-3ad6-2af3-c970-2fa906882aa3.jpeg)|
https://peapix.com/bing/

次は動画も処理できるようになっているので、処理したい動画をvideo\inputフォルダに置き、下記を実行してみましょう。「お花見.mp4」の部分を変更してください。結果はvideo\output\Paprikaに出力されます。

~~~
python video2anime.py --video video/input/お花見.mp4 --checkpoint_dir checkpoint/generator_Paprika_weight
~~~

<blockquote class="twitter-tweet"><p lang="et" dir="ltr">AnimeGANv2 <a href="https://t.co/4fOr8WFxaA">https://t.co/4fOr8WFxaA</a> <a href="https://t.co/AkJ3IKupsB">https://t.co/AkJ3IKupsB</a><a href="https://twitter.com/hashtag/Python?src=hash&amp;ref_src=twsrc%5Etfw">#Python</a> <a href="https://twitter.com/hashtag/DeepLearning?src=hash&amp;ref_src=twsrc%5Etfw">#DeepLearning</a> <a href="https://twitter.com/hashtag/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92?src=hash&amp;ref_src=twsrc%5Etfw">#機械学習</a> <a href="https://twitter.com/hashtag/AI?src=hash&amp;ref_src=twsrc%5Etfw">#AI</a> <a href="https://twitter.com/hashtag/OpenCV?src=hash&amp;ref_src=twsrc%5Etfw">#OpenCV</a> <a href="https://twitter.com/hashtag/tensorflow?src=hash&amp;ref_src=twsrc%5Etfw">#tensorflow</a> <a href="https://t.co/iQOSXwcyg8">pic.twitter.com/iQOSXwcyg8</a></p>&mdash; 藤本賢志(ガチ本)@pixivFANBOXはじめました (@sotongshi) <a href="https://twitter.com/sotongshi/status/1293873265992069120?ref_src=twsrc%5Etfw">August 13, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

https://pixabay.com/videos/id-34091/

フルHDの23秒程度の動画で、GPUで3時間ほどかかりました(;'∀')