LoginSignup
2
5

More than 3 years have passed since last update.

Talking Head Anime from a Single Imageを使ってバ美肉しようとしたらハマった点とその解決

Last updated at Posted at 2020-06-07

はじめに

1枚の画像からVTuberになれるスーパーツールTalking Head Anime from a Single Imageを使って、VTuberになろうとした時にハマった点と、その解決をしたやり方を書いていきます。

(↓実際に遊んでいる様子)

目次

  • 環境
  • 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中の場所)

その他

この記事では取り扱っていないですが、CUDAの設定などはディバイスに依存してたりするので、よく調べてやらないとハマるかもしれません。

あと、WSL+Dockerでやろうとしたらうまくできませんでした。これは解決できず諦めたので記事には書いていないです。

参考

公式情報

公式サイトを日本語訳されたサイト

環境構築など

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5