Talking Head Anime from a Single Image でバ美肉してみる

# はじめに

みなさん Vtuber 好きですか?
バ美肉したくありませんか?

私はしたいです.
しかし私には 3D モデリングの技術も, 絵を描く技術もありません.

ならば技術のある人に依頼すればいいじゃないか.

* 2D モデル　数万円　　!
* 3D モデル　数十万円　!!

技術もありませんが, お金はもっとありません.

安心してください. 
人類の技術の進歩によって, 技術とお金, 両方なくても バ美肉できます.

この記事では誰にでもバ美肉できるように, 理解しやすく 1 から解説していきたいと思います.


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">これがバ美肉ですか <a href="https://t.co/zNFuW3xV5U">pic.twitter.com/zNFuW3xV5U</a></p>&mdash; ナス科ナス属トマト (@tomato08131491) <a href="https://twitter.com/tomato08131491/status/1212698212710019073?ref_src=twsrc%5Etfw">January 2, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



# Talking Head Anime from a Single Image

Google Japan のソフトウェアエンジニアである Pramook Khungurn によって開発された, 1枚の正面を向いているキャラクターの画像から顔アニメーションを自動生成する技術です.

[Talking Head Anime from a Single Image]
(https://pkhungurn.github.io/talking-head-anime/)

ご想像の通り, ディープラーニングです.

学習データとして
MikuMikuDance

ネットワークアーキテクチャとして
[Pumarola et al.'s algorithm]
(https://arxiv.org/abs/1807.09251)
[Zhou et al.'s view synthesis algorithm]
(https://arxiv.org/abs/1605.03557)

が利用されています.


この技術によってこんなことや,
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">こんなことや<br><br>一枚のキャラクター画像だけで簡単な顔アニメーションを制作するシステムを作ってみました【日本語版】 <a href="https://t.co/Nv5pz9HmoQ">https://t.co/Nv5pz9HmoQ</a> <a href="https://twitter.com/YouTube?ref_src=twsrc%5Etfw">@YouTube</a>さんから</p>&mdash; ナス科ナス属トマト (@tomato08131491) <a href="https://twitter.com/tomato08131491/status/1213026594790375424?ref_src=twsrc%5Etfw">January 3, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

こんなことができます.
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">こんなことが<br><br>Talking Head Anime from a Single Image <a href="https://t.co/LsWaguCG3t">https://t.co/LsWaguCG3t</a> <a href="https://twitter.com/YouTube?ref_src=twsrc%5Etfw">@YouTube</a>さんから</p>&mdash; ナス科ナス属トマト (@tomato08131491) <a href="https://twitter.com/tomato08131491/status/1213026602465935361?ref_src=twsrc%5Etfw">January 3, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



# 準備 フォルダ構成

1. pkhungurn が GitHub で公開している [talking-head-anime-demo](https://github.com/pkhungurn/talking-head-anime-demo) から `talking-head-anime-demo` をダウンロードします.
中央右の `Clone or download` から `Download ZIP` でZIPファイルをダウンロードできるのでそれを展開します.



2. [このリンク](https://drive.google.com/file/d/1ajHViqyLDKFKfBtGPE5cbSGcMNa8rz8k/view)から`models.zip`をダウンロードして展開します.
`combiner.pt`, `face_morpher.pt`, `two_algo_face_rotator.pt`
上記3つのモデルを先ほどダウンロードして解凍した `talking-head-anime-demo` の `data` ディレクトリにコピーします.

3. davisking が公開している [dlib-models](https://github.com/davisking/dlib-models) から `1.` と同じように `dlib-models.ZIP`をダウンロードして展開します.
`shape_predictor_68_face_landmarks.dat.bz2` があるのでこれを展開!
して `shape_predictor_68_face_landmarks.dat` にした後, `talking-head-anime-demo` の`data` ディレクトリに保存します.

`talking-head-anime-demo-master` は以下のような構成になります.


<img width="600" alt="folder structure.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88255/62e7196c-1bbc-8c9d-2387-abaabd54be8d.png">

# 準備 Python

[こちらの記事](https://qiita.com/tomato_/items/1443f83da6eb10ba502e)で解説


# 実際に動かしてみる

ディレクトリを`talking-head-anime-demo-master` に変更します.

* 手動で動かす場合は, `python app/manual_poser.py` を実行します.
* 顔をトラッキングして動かす場合はwebカメラなどを用意して, `python app/puppeteer.py`を実行します.

`Load Image ...` で画像を選択します.


* 手動で動かす場合は, バーをいろいろ動かしてみると目を閉じたり, 頭を動かしたりできる.
* 顔をトラッキングして動かす場合は, 自分の頭を動かしたり, 瞬きしたりするとそれに合わせてキャラクターも動いてくれる.

あとは自由に遊ぼう!

# まとめ

今回, 自分がバ美肉するのにかかった費用は, WEBカメラ`logicool C270N HD WEBCAM`の購入代金である
 `￥2010 `だけです. このWEBカメラでさえスマホアプリで代用可能なので, もはやバ美肉するのに金銭的ハードルはないに等しいでしょう.

プログラムを少し変えることによってアニメーション画像の表示だけにもできるので, それも後日解説したいと思っています.


###それではみなさん Let's バ美肉 !