Stable Diffusion フェイススワップの生成時に起こるAttributeErrorの解消法

かな(見習い)
かな(見習い)

リアクターやFaceIDを使ってたら途中から

効かなくなることがあるな~

まあよくわかんないから寝よう!

ナカ(マスター)
ナカ(マスター)

恐らくアットリビュートエラーが起こっているな、
生成はちゃんと行われるし途中で発生しがちだから
エラーに気づきにくい☆

解消方法を説明するから寝るのを一旦やめよう☆

かな(見習い)
かな(見習い)

再起動とかで治るタイプじゃなくて
ちゃんと解消させる必要があるエラー
なんですね!

目が覚めました!解説お願いします!

該当するエラー文言はこちら

フェイススワップが効かなくなるエラーメッセージは
こちらで、
これが出ている場合は今回の解消方法を使うことで
解消させることができます。

「AttributeError: ‘Tensor’ object has no attribute ‘face_embed’」

エラーの内容は
「’face_embed’っていう顔認識の要素を
‘Tensor’ってところに渡せてないです、

なのでフェイススワップできませんでした。

エラーの種類はAttributeErrorです。」

みたいな感じです。

エラーの内容追っかけて解消するのはかなり
難しいのでなんとなくわかれば問題ないです。

今回お伝えする方法は上記がわからなくても
手順に沿ってやればエラー解消できます。

エラーの解消方法

今回エラーの元になっているのが「insightface」という
フェイススワップに使われている機能部分になります。

「roop」「reactor」「faceid」などのフェイススワップ
で使われていて、

上記をインストール時に自動でインストールされます。

この「insightface」のバージョンの更新をする
ことでエラーを解消させることができます。

バージョン更新の手順

まずstable diffusionのフォルダの
venvフォルダを開きます。

次に「Scripts」フォルダを
開きます。

「Scripts」フォルダの中でコマンドプロンプト
を開きます。

開き方は複数ありますが、空白の箇所で
右クリックを押してメニューから

「ターミナルで開く」を選択するのが
簡単なのでおすすめです。


コマンドプロンプトの入力手順

コマンドプロンプトを開いたら「pip install insightface」と入れて
エンターを押します。

文言が色々でますが最後の「notice」の箇所だけ見てください。

1つ目の「notice」には、
最新のバージョンは「24.0」で今使っているのは「23.3.2」ですよ、

みたいなことが書かれています。

2つ目の「notice」には、

最新のバージョンを使うには

「python.exe -m pip install –upgrade pip」

のコマンドを使ってください、

と書かれているので
「python.exe -m pip install –upgrade pip」部分を
コピペしてエンターを押しましょう。

Successfullyと書いてあれば最新バージョンが
インストールされています、
コマンドプロンプトを閉じてください。

これで「AttributeError: ‘Tensor’ object has no attribute ‘face_embed’」
のエラーが解消されているはずです。

まとめ:フェイススワップもやれば棒に当たる

Stable Diffusionフェイススワップ生成時に起こるAttributeErrorの
解消方法について説明しました。

フェイススワップ特有のエラーなのでやらなければ
エラーも出ないですが、

フェイススワップはとても強力な機能なので
エラーと向き合って使えるようにもっていく
ことをおすすめします。