見出し画像

ComfyUIでFaceIDを使おうと思ったら意外に面倒だった

このところFlux.1が話題ですが、Flux.1でControlNetやIPAdapterを試してみたところ、思いのほかGPUリソースを食いまくって、非力なRTX2070では画像1枚出力するのに5時間以上かかってしまうことがわかりました。
これでは、納得のいく結果が出るまで何度もパラメータを調整しながら追い込んでいくという作業ができません。
早々にFlux.1を一旦離れてSDXL周辺をいじくっています。


AUTOMATIC1111版WebUIからComfyUIへ

直感的にわかりやすいユーザーインターフェースで、長く親しんできたAUTOMATIC1111版WebUIですが、ちょっと思いついたアイデアを試してみたいとか、もう少し踏み込んでみたいというときに、ComfyUIのほうが融通が利くのですね。
ただし、ComfyUIはその分だけ面倒なことも多いようで、今回はそんなところにハマってしまいました。

AUTOMATIC1111版ではあんなに簡単だったFaceIDが

筆者が忘れているだけかもしれませんが、AUTOMATIC1111版WebUIでFaceIDを使うとき、FaceID用のIPAdapterモデルと該当するLoRAのモデルをダウンロードするぐらいしか設定をした覚えがないのですよね。
しかも、AUTOMATIC1111版WebUIではIPAdapterもControlNetとごっちゃに管理されているので、適当にControlNet用モデルのフォルダにポンと放り込んで、何気なく使えていたような気がするのですが……

まずは、"IPAdapter ComfyUI" あたりのキーワードで検索して上位に出てきた sho氏のnoteを参考に作業をはじめました。

Insight Faceのインストール

まずはInsight Faceが必要ということで、pipでインストールを試みます。

"python_embeded"ディレクトリに移動して

python.exe -m pip install insightface

sho氏のご指摘の通り、Cythonがないといわれるので、これをインストール。

python.exe -m pip install Cython

で、再度

python.exe -m pip install insightface

ん~、うまくいかない。どうもビルド失敗してるなぁ……
AUTOMATIC1111版では動いてたからなぁ……どうしてたんだろう?

仕方なく、いろいろ検索しているとこんな記事を発見。

プリビルドパッケージ!

これこれ、プリビルドパッケージ。
早速、3.11用をダウンロード
そしてこれをpipでインストール。

python.exe -m pip install "ダウンロードしたファイルのフルパス"

これでインストール完了。

ComfyUI_IPAdapter_plusのインストール

sho氏のnoteに戻ってFaceID用のカスタムノードをインストールします。

ComfyUI Managerの「Custom Nodes Manager」から、"ComfyUI_IPAdapter_plus"を検索してインストール。

カスタムノードを検索

これは難なくクリア。

FaceIDのモデルをダウンロード

今回はAUTOMATIC1111版で使っていたモデルを流用しましたが、これらはもともとHugging Faceからダウンロードしたものです。

SDXLを使うつもりなので、"ip-adapter-faceid-plusv2_sdxl.bin"と、"ip-adapter-faceid-plusv2_sdxl_lora.safetensors"をIPAdapterとLoRAのモデルが入っているフォルダーにそれぞれコピー。

ちなみに、これらはComfyUI Managerの「Model Manager」からもインストールできるようですね。

ComfyUI Managerの「Model Manager」からもインストール可能

Model Managerを使えば、自動的に適切なフォルダーにコピーされるはずです。

さて、ワークフローを組んでいきますか。

IPAdapter FaceIDノードを置いて、何をつなげばいいのかなぁー
とりあえず必要そうなものをつなげて……
あれ、"CLIP Vision"のモデルがないですね。

ふむ。ip-adapter-faceid-plusv2_sdxl.binに合ったCLIP Visionモデルが必要というわけですね。

CLIP Visionモデルのダウンロード

ip-adapter-faceid-plusv2_sdxl.binにはどのCLIP Visionモデルをつかえばいいのでしょう?
またネットで検索すると、こんな情報が見つかりました。

いろいろ書かれていますが……

このあたりを参考に……

Tencent have placed ViT-H in the "sd" folder and "ViT-g" in the "sdxl" folder. But that's not right. Almost every model, even for SDXL, was trained with the Vit-H encodings. Which makes sense since ViT-g isn't really worth using. They've only done two "base/test models" with ViT-g before they stopped using it: ip-adapter_sd15_vit-G and ip-adapter_sdxl. They don't use it for any other IP-Adapter models and none of the IP-Adapter FaceID models.

https://github.com/tencent-ailab/IP-Adapter/issues/265#issuecomment-1904171966

DeepLによる日本語訳
テンセントはViT-Hを 「sd 」フォルダに、ViT-gを 「sdxl 」フォルダに入れた。しかし、それは正しくない。SDXLでさえも、ほとんどすべてのモデルがVit-Hエンコーディングでトレーニングされている。ViT-gはあまり使う価値がないので、これは理にかなっている。ViT-gの使用をやめるまで、ViT-gを使った「ベース/テストモデル」は、ip-adapter_sd15_vit-Gとip-adapter_sdxlの2つだけだった。他のIP-AdapterモデルやIP-Adapter FaceIDモデルには使用していない。

DeepL

「ViT-H」を使うということは、つまり、SDXL用ではなく、SD用に準備されたCLIP VisionモデルをSDXLでも使えというわけですね。

筆者は、"https://huggingface.co/h94/IP-Adapter/tree/main/models/image_encoder"からダウンロードしました。

これも、「Model Manager」からインストールできるようです。

「Model Manager」からCLIP Visionモデルをインストール

こちらのほうがプルダウンメニューで絞り込めるので、間違いが少ないかもしれません。

さて、これでいよいよ実行!

おっと、エラーが出ますね。onnxruntimeがないとかなんとか……

ONNX Runtimeのインストール

ネットで検索すると、あっさり見つかりました。

pipでインストールすればいいようです。
あ、これ、もしかしてInsight Faceより先にやっておくべきだったのですかね。ま、いいや。

"python_embeded"ディレクトリに移動して

python.exe -m pip install onnxruntime

インストールできました。

これでどうにか……動き出しました!

「おめでとう」「おめでとう」「おめでとう」
「ありがとう」

そしてすべてのチルドレンに
おめでとう

【まとめ】ComfyUIでFaceIDを使うときに必要なもの

備忘録的にまとめておきます。

〇 Pythonライブラリ
1. Insight Face
 
・プリビルドパッケージ、3.11用をダウンロード
 ・"python_embeded"ディレクトリに移動して、
  「python.exe -m pip install "ダウンロードしたファイルのフルパス"」
  を実行
2. ONNX Runtime
 
"python_embeded"ディレクトリに移動して、
 「python.exe -m pip install onnxruntime」を実行

〇 各種モデル
(ComfyUI Managerの「Model Manager」を使った方が間違いがない)
1. FaceIDのモデル
 IPAdapter:ip-adapter-faceid-plusv2_sdxl.bin
 LoRA:ip-adapter-faceid-plusv2_sdxl_lora.safetensors
2. CLIP Visionモデル
 CLIP-ViT-H-14-laion2B-s32B-b79K

〇 カスタムノード
(ComfyUI Managerの「Custom Nodes Manager」からインストール)
 ComfyUI_IPAdapter_plus

ご参考までに、実際に動作したワークフローの絵を貼っておきますね。

FaceIDを使うワークフロー

ここからは蛇足ですが……

一応、AI漫画を描くときに使えるワークフローを考えていて、できるだけ個性的な白黒ペン画風の絵を作ろうとしているのですが、FaceIDに読ませる画像がカラーだと、どうしても生成画像にも色がついてしまうのですね。

FaceIDに読ませる画像がカラーなので、生成画像も色がついてしまう

comfyui-art-ventureの、Color Correctノードを使って、同時にモノクロ画像も生成しているのですが……
ペン画風にするにはもうひと工夫必要という感じ。

モノクロ画像も同時に生成

いろいろ改良を続けて、影の部分に細い線をさささっと入れて、ちょっとペン画風によせてみたりしています。


影に細かく線を入れて、ちょっとペン画風に

ちょっと雰囲気出てきたかな……などと、思ったり、思わなかったり。
まぁ、少しずつですね。

いいなと思ったら応援しよう!

久道秀作
頂いたサポートは今後の記事作成のために活用させて頂きます。