ディープラーニングで自撮り画像をアニメ画像に画風変換する方法

# ディープラーニングで自撮り画像をアニメ画像に画風変換
　ディープラーニングで自撮り画像をアニメ画像に画風変換してみました。試した理由などは、以下ブログ記事参照下さい。この記事では、具体的な実現方法を解説していきます。

[ディープラーニングでアニメドラえもんの「うそつきかがみ」を再現してみた](https://karaage.hatenadiary.jp/entry/2019/08/26/073000)

　以下のGitHubのリポジトリにあるソフトと学習済みモデルを使うと、自撮り画像をアニメ画像に画風変換することができます。

[taki0112/UGATIT](https://github.com/taki0112/UGATIT)

　学習から推論までできる素晴らしいソフトなのですが、単純に画風変換やりたい場合、ちょっと使い方が煩雑だったり、動画に対応させたかったりしたので、以下の3点を自分用に改造しました。

- セットアップを簡単にした
- 自動的に顔周辺の画像を抜き出し
- 動画に対応

　改造したリポジトリは以下となります。
[karaage0703/UGATIT](https://github.com/karaage0703/UGATIT)

　以下使い方を説明していきます。環境は、Mac/LinuxとJetson Nanoを想定しています。それぞれ説明していきます。

　ブログにも

# 自撮り画像をアニメ画像に画風変換する方法（Mac/Linux）
## 環境構築
　以下記事参考にPyenvとAnaconda3をセットアップして下さい。
[Pythonで機械学習をするための環境を雑にセットアップする方法（Jupyter notebook環境、ディープラーニング環境含む）on Mac/Linux](https://karaage.hatenadiary.jp/entry/2017/10/06/073000)

　必要なライブラリは以下となります。

- TensorFlow==1.14.0
- OpenCV

　具体的には、以下コマンドでセットアップして下さい。

```sh
$ pip install tensorflow==1.14.0
$ pip install opencv-python
```

## ソフトウェアセットアップ
　以下コマンドでリポジトリをクローン（ダウンロード）します。

```sh
$ git clone https://github.com/karaage0703/UGATIT
$ cd UGATIT
$ git checkout -b movie origin/movie
```

　ソフトに必要な、顔認識用のハール・ライク特徴量モデルと学習済みの自撮り画<->アニメ画変換の学習済みモデルのダウンロードは以下コマンドでできます。

```sh
$ ./get_haarlike.sh
$ ./get_model.sh
```

　モデルのダウンロードがうまくいかない場合は、手動で以下からモデルをダウンロードして、`UGATIT`ディレクトリ直下において、解凍して下さい。

https://drive.google.com/file/d/19xQK2onIy-3S5W5K-XIh85pAg_RNvBVf/

　unzipコマンドで解凍に失敗する場合は、tarコマンドで解凍した方がよいようです。


## プログラム実行
　以下コマンドを実行するとソフトが動きます。

```sh
$ python selfie2anime_movie.py
``` 

　フルスクリーンで動かしたい場合は、以下のように`--fullscreen`のオプションをTrueにして起動して下さい。

```sh
$ python selfie2anime_movie.py --fullscreen=True
``` 

![selfie2anime_mac.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/9dc5c67c-8f45-2ac7-a78f-c64effbea894.gif)



# 自撮り画像をアニメ画像に画風変換する方法（Jetson Nano）
## 環境構築
　以下記事参考に、Jetson Nanoでディープラーニング（TensorFlow）のセットアップを実施します。

[Jetson Nano関係のTIPSまとめ](https://qiita.com/karaage0703/items/b14c249aa33112669ee4)



## ソフトウェアセットアップ
　以下コマンドで、プログラムと顔認識に必要なモデルをダウンロードします。

```sh
$ cd && git clone https://github.com/karaage0703/UGATIT
$ cd UGATIT
$ git checkout -b movie origin/movie
$ ./get_haarlike.sh
```

　自撮り画<->アニメ画変換の学習みモデルは、以下リンク先からモデルをダウンロードします（大きいモデルだとJetson Nanoではメモリ不足になるため、小さいモデルを使います）。

- https://www.kaggle.com/t04glovern/ugatit-selfie2anime-pretrained/downloads/ugatit-selfie2anime-pretrained.zip/

　ダウンロードしたモデルは`UGATIT`ディレクトリ以下に置いて、以下コマンドで解凍します。

```sh
$ unzip ugatit-selfie2anime-pretrained.zip
```

## プログラム実行
　以下コマンドを実行するとソフトが動きます。

```sh
$ python3 selfie2anime_movie.py --light=True -d='jetson_nano_raspi_cam'
``` 

　フルスクリーンで動かしたい場合は、以下のように`--fullscreen`のオプションをTrueにして起動して下さい。

```sh
$ python3 selfie2anime_movie.py --light=True -d='jetson_nano_raspi_cam' --fullscreen=True
``` 


![selfie2anime_jetson_nano.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/53b2f209-5a63-320c-538f-4f4a25a01e7f.gif)

# まとめ
　ブログ、Qiita、Twitter等で情報発信していますので、もし興味ありましたらフォロー下さい。

# 関連記事
[Jetson Nano関係のTIPSまとめ](https://qiita.com/karaage0703/items/b14c249aa33112669ee4)
Jetson Nano関係の情報はこちらにまとめています


# 参考リンク
- https://qiita.com/namakemono/items/c963e75e0af3f7eed732
- http://hirotaka-hachiya.hatenablog.com/entry/2018/01/03/105926