はじめに
1枚の画像からVTuberになれるスーパーツールTalking Head Anime from a Single Image
を使って、VTuberになろうとした時にハマった点と、その解決をしたやり方を書いていきます。
(↓実際に遊んでいる様子)
強力なチカラを手に入れた pic.twitter.com/AXeYTR3lCz
— meihei☁ (@app1e_s) June 6, 2020
目次
- 環境
-
conda env create -f environment.yml
が動かない - OpenCVが動かない
- 入力用の画像が読み込まれない
- カメラが動作しない
- 背景をグリーンバックにする
- その他
環境
- OS: Windows 10
- Python: 3.8.1
- conda: 4.5.11
- opencv-python: 4.2.0.34
- GPU: Geforce GTX 1060 (6GB)
- NVIDIAドライバー: 442.92
- CUDA: 10.2
その他はconda env create -f environment.yml
でインストールされた通りです。
conda env create -f environment.yml
が動かない
症状
conda env create -f environment.yml
を実行しても環境が作られない
原因
Anacondaのバージョンが低い
解決
管理者でconda update -n base conda
を実行する
(この時、Anaconda本体の名前がbase
ではない場合は書き換える必要があるので注意)
参考
OpenCVが動かない
症状
python app/puppeteer.py
を実行するとOpenCVが見つからないと言われる
原因
OpenCVがenvironment.yml
でインストールされてないっぽい(?)
解決
pip install opencv-python
でインストール
入力用の画像が読み込まれない
症状
load Image ...
から画像を選択して以下のエラーが表示される
The loaded image has size 400x400, but we required 256x256
原因
入力画像の要件に従っていないから
解決
READMEに書いてある通りにやりましょう
- It must be in PNG format.
- It must be of size 256 x 256.
- The head of the character must be contained in the center 128 x 128 box.
- It must have 4 channels (RGBA).
- Pixels that do not belong to the character's body must have value (0,0,0,0). In other words, the background must be transparent.
にじさんじのメンバーリストからとってくると400x400なので、画像 リサイズ オンライン
とかで検索するとよいです。
また、顔が真ん中になかったり、背景が透明ではない画像の場合は、Gimpなどを使って加工するほうが早いです。
カメラが動作しない
症状
OnReadSample() is called with error status: -1072875772
と出てきてWebカメラを認識しない
原因
(詳しいことはわからなかったです)
解決
app/puppeteer.pyで
video_capture = cv2.VideoCapture(0)
を
video_capture = cv2.VideoCapture(cv2.CAP_DSHOW)
に書き換える。
また、複数カメラを使っている場合はここの数値を変えることで変更可能
(上のサンプルではOBSからバーチャルカメラをつないで動かしてます)
参考
背景をグリーンバックにする
ハマった点ではないですが、この技術を配信で使おうと考えると、やはり背景はグリーンバックが望ましいです。
解決
app/manual_poser.py、app/pupeteer.pyともに
self.posed_image_label = Label(posed_image_frame, text="Nothing yet!")
と書かれている部分を
self.posed_image_label = Label(posed_image_frame, text="Nothing yet!", bg="#00FF00")
に書き換えます。
(補足: manual_poser.py中の場所 pupeteer.py中の場所)
例の1枚の画像からVTuberになるやつ、背景色を緑にしたらいよいよそれっぽくなった pic.twitter.com/O2kFwCXs0p
— meihei☔ (@app1e_s) June 11, 2020
その他
この記事では取り扱っていないですが、CUDAの設定などはディバイスに依存してたりするので、よく調べてやらないとハマるかもしれません。
あと、WSL+Dockerでやろうとしたらうまくできませんでした。これは解決できず諦めたので記事には書いていないです。