他人になりすまし！？Avatarifyでオンライン会議でーる（Windows10、Python3.7）

# はじめに
オンライン会議などで、他人になりすませるAvatarifyをやってみました。

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

# 導入

[avatarify](https://github.com/alievk/avatarify)をクローンします。

avatarify用の環境を作ります。

~~~
$ cd avatarify-master
$ conda create -n avatarify python=3.7
$ conda activate avatarify
~~~

ライブラリをインストールします。

~~~
$ pip install torch==1.2.0 torchvision==0.4.0 -f https://download.pytorch.org/whl/torch_stable.html
$ pip install -r requirements.txt
~~~

[CUDA 10.0](https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exenetwork)をインストールします。（無くても動くかも。）

[vox-adv-cpk.pth.tar](https://www.dropbox.com/s/c2mya1j07ittax6/vox-adv-cpk.pth.tar?dl=0)をダウンロードし、avatarify-masterフォルダに置きます。解凍はしなくていいです。

[first-order-model](https://github.com/AliaksandrSiarohin/first-order-model)をクローンし、avatarify-masterフォルダに置きます。（LICENSE.md、README.md、requirements.txtは除く）

下記を実行しましょう。最初はface detection CNN、Face Alignment Network(FAN)をダウンロードするので時間がかかります。--cam 0のところの数字を1,2,3と変えるとカメラ入力の変更ができます。

~~~
$ python cam_fomm.py --config config/vox-adv-256.yaml --cam 0 --relative --adapt_scale --no-pad --checkpoint vox-adv-cpk.pth.tar
~~~

開始したら、正面向いてxキーを押してアバターの位置をリセットしてください。うまく表示されるようになると思います。あとはスマホのライトを顔に当てて明るいところでやってみてください。あとは顔をできるだけ近づけるか、カメラをズームインしたほうがいいようです。

1-9: 各キーに設定されたアバターに切り替え
0: アバターの表示/非表示（カメラ入力そのまま）
a: 前のアバター
d: 次のアバター
w: カメラのズームイン
s: カメラのズームアウト
q: StyleGANのアバターを読み込み
x: アバターの位置をリセット
c: カメラにアバター重ねて表示(濃くなる
z: カメラにアバター重ねて表示(薄くなる
i: FPSなどの情報表示
r: カメラのミラー表示
t: アバターのミラー表示
f: 毎フレームトラッキングモードに切り替え（遅くなる
ESC: アプリの終了

<blockquote class="twitter-tweet"><p lang="es" dir="ltr">Avatarify Demo <a href="https://twitter.com/hashtag/%E3%82%A2%E3%83%90%E3%82%BF%E3%83%BC?src=hash&amp;ref_src=twsrc%5Etfw">#アバター</a> <a href="https://twitter.com/hashtag/%E9%A1%94%E4%BA%A4%E6%8F%9B?src=hash&amp;ref_src=twsrc%5Etfw">#顔交換</a> <a href="https://twitter.com/hashtag/FaceSwap?src=hash&amp;ref_src=twsrc%5Etfw">#FaceSwap</a> <a href="https://twitter.com/hashtag/AI?src=hash&amp;ref_src=twsrc%5Etfw">#AI</a> <a href="https://twitter.com/hashtag/%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86?src=hash&amp;ref_src=twsrc%5Etfw">#画像処理</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/CV?src=hash&amp;ref_src=twsrc%5Etfw">#CV</a> <a href="https://twitter.com/hashtag/GAN?src=hash&amp;ref_src=twsrc%5Etfw">#GAN</a> <a href="https://twitter.com/hashtag/FOMM?src=hash&amp;ref_src=twsrc%5Etfw">#FOMM</a> <a href="https://twitter.com/hashtag/NeurIPS2019?src=hash&amp;ref_src=twsrc%5Etfw">#NeurIPS2019</a> <a href="https://twitter.com/hashtag/Zoom?src=hash&amp;ref_src=twsrc%5Etfw">#Zoom</a> <a href="https://twitter.com/hashtag/Teams?src=hash&amp;ref_src=twsrc%5Etfw">#Teams</a> <a href="https://twitter.com/hashtag/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E4%BC%9A%E8%AD%B0?src=hash&amp;ref_src=twsrc%5Etfw">#オンライン会議</a> <a href="https://t.co/jDu3qQzRKF">pic.twitter.com/jDu3qQzRKF</a></p>&mdash; 藤本賢志(ガチ本)@pixivFANBOXはじめました (@sotongshi) <a href="https://twitter.com/sotongshi/status/1254797645085700096?ref_src=twsrc%5Etfw">April 27, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

あとはOBSとかでZoomのカメラ入力にすればOK。
お疲れ様でした。