AIに描かせた絵をAIでリアルタイムなフェイストラッキングで動かしてみた -手間を掛けずにバ美肉する方法-

## はじめに
流行りに乗り遅れている感じはするのですが、もはやバ美肉は一般的な営みになりつつありますね。
最新のAIというのがなんかすごいらしいので、試しにこれを使ってバ美肉してみたいと思います。

ちなみにこのツイートを見て思いつきました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">じゃあNovelAIで出力した1枚絵から簡単にVTuber的なことできるんじゃない？って思ってtalking-head-anime-3で試してみたら、それっぽいのができたので結構びっくりした。<br>イラストを作るのも、1枚絵から適切なリギングをするのもどっちも機械学習だし、すごい時代になったなと思った。 <a href="https://t.co/fFDdh8SAue">pic.twitter.com/fFDdh8SAue</a></p>&mdash; ねぎぽよし (@CST_negi) <a href="https://twitter.com/CST_negi/status/1577872536616202240?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 使用PC
- Windows10 Pro 21H2 64bit
- Core i5-6600
- RAM 16GB
- GeForce GTX 1650

### 前提
- ~~Gitインストール、GitHubアカウント取得済み~~ 
  - (追記)別にDownload Zipしてもええやん(ええやん)

## AIに絵を描かせる
https://novelai.net/

Novel AI Diffusionというやつです。
賛否あるみたいですが、今回はこいつに絵を書かせてみたいと思います。
法的な話とかはそれこそ卒論レベルになってしまうのでここでは触れません。

お絵かきAIの解説のツイートがありました。上記のものもだいたいこんな感じなんじゃないかな。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">昨今のお絵描きAIの進捗が著しく、いろんな方に一歩踏み込んで知ってもらいたいと思ったのでその仕組みについて解説資料を公開します〜（先日の技術書典の本の内容です）。これからいろんな分野の方が押さえておいても良い技術だと思うので、仕組みから興味持ってもらいたいなーという気持です。(1/5) <a href="https://t.co/p7iBSY7ma5">pic.twitter.com/p7iBSY7ma5</a></p>&mdash; まっくす (@minux302) <a href="https://twitter.com/minux302/status/1576165296205094912?ref_src=twsrc%5Etfw">October 1, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

なお、NovelAIを使うに当たっては下記サイトを参考にしました。要は有料会員になったってコト。

https://note.com/kallibebe666/n/nae314cdb5c00

解像度はPortrait(512*768)に設定し、その他はほぼ初期設定のままにしています。
ぶち込んだ文章はこれです。
```
pink hair girl with cat ears, blue eyes, short hair, full body, looking at viewer
```
上半身全体が写っていて、正面を向いている必要があるので、"full body, looking at viewer" を指定しています。その他はテキトウです。
(追記)背景を単純にするオプションを入れるといいみたいです。あとから知ったのですがVTuberっぽい画像を生成する呪文がまとめられていました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">VTuberっぽい立ち絵を生成する呪文テンプレートです<br>呪文は一枚目のALTに、推奨生成パラメータはリプにあります<br><br>テンプレートでは詳細な見た目の設定をしていないので、各自で髪型や色、服装を指定してください<a href="https://twitter.com/hashtag/novelAI?src=hash&amp;ref_src=twsrc%5Etfw">#novelAI</a> <a href="https://twitter.com/hashtag/NAIDiffusion?src=hash&amp;ref_src=twsrc%5Etfw">#NAIDiffusion</a> <a href="https://twitter.com/hashtag/NovelAIDiffusion?src=hash&amp;ref_src=twsrc%5Etfw">#NovelAIDiffusion</a> <a href="https://t.co/A8tpFyayTL">pic.twitter.com/A8tpFyayTL</a></p>&mdash; Plat 🖼️ (@p1atdev_art) <a href="https://twitter.com/p1atdev_art/status/1577994363610636288?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

(追記おわり)


何回か試したら以下の画像が生成されました。
![pink hair girl with cat ears, blue eyes, short hair, full body, looking at viewer s-3404123725.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882988/cb0af7f1-2cad-5c22-b516-793eff2c44e4.png)

素材として十分使えそうです。

## AIで絵を動かす

https://github.com/pkhungurn/talking-head-anime-3-demo

これを使います。

### 画像の準備
まず、上で作った画像を512*512 pxにクロップします。(ここはPhotoshopで手動でやった。)
次に、背景が透明じゃないと都合が悪いので切り抜きを行います。
今回は切り抜きもAIに任せてしまいました。

https://clipping-ac.com/upload

![pink_Square-full.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882988/89007abb-b06a-86e8-a7cb-b4078e0b03ed.png)

いい感じです。

### 環境構築
上のリポジトリのREADMEの言う通りにします。

[このリンク](https://www.dropbox.com/s/y7b8jl4n2euv8xe/talking-head-anime-3-models.zip?dl=0)からモデルをダウンロードし、data/models 配下に展開します。

condaが使えると環境構築を自動でしてくれるみたいです。
Anaconda入れるのなんか嫌だなあ…と思いつつ、どうせ素のWindows側の環境なんて普段使わないのでえいやとインストール。
リポジトリのルートフォルダで```conda env create -f environment.yml``` を叩くといい感じに環境構築してくれます。
その後```conda activate talking-head-anime-3-demo```で環境を切り替え。

今回はリアルタイムトラッキングを試したかったのでiPhoneに予め[iFacialMocap](https://apps.apple.com/jp/app/ifacialmocap/id1489470545)をインストールしておきます。要はお金を払ったってコト。(2回目)

### 実行
リポジトリのルートフォルダで```python tha3/app/ifacialmocap_puppeteer.py```を叩きます。
なにやら画面が出てくるのでLoad imageボタンを押して先程生成した512*512の背景が透明な画像を読み込みます。

iPhoneでiFacialMocapを実行し、出てきたIPアドレスをPCのアプリケーションの上のほうに入れてSTART CAPTURE!します。

うまくいくとこんな感じになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882988/720f850b-49b8-7b51-2e2c-f35c462d082a.png)

**動く！！！！！！！！！！１！！！！１１１１**
すごい。

## こんな感じ

<iframe width="560" height="315" src="https://www.youtube.com/embed/W0ld5mbR4Jk?cc_load_policy=1" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

ついでに声変換も[Voidol2](https://crimsontech.jp/apps/voidol2/)というものをつかってボイスモデル「音宮いろは（CV遠野まゆ）」さんの声に変換しています。これもリアルタイムで行うことができます。



## あとがき
- MMVCという声質変換も試してみようと思ったのですがなんか上手く動かないのでやめました。

https://www.nicovideo.jp/watch/sm40415108

- 今回生成した画像について私は一切の権利を主張しません。
    - そもそも公開していることが怒られるような事態になったらその時対応します。

## すごい！
大変な時代になったもんだ。

## ところで明日(10/9)は応用情報技術者試験の試験日ですね
こんなことをしている場合じゃない。