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」からもインストールできるようですね。
Model Managerを使えば、自動的に適切なフォルダーにコピーされるはずです。
さて、ワークフローを組んでいきますか。
IPAdapter FaceIDノードを置いて、何をつなげばいいのかなぁー
とりあえず必要そうなものをつなげて……
あれ、"CLIP Vision"のモデルがないですね。
ふむ。ip-adapter-faceid-plusv2_sdxl.binに合ったCLIP Visionモデルが必要というわけですね。
CLIP Visionモデルのダウンロード
ip-adapter-faceid-plusv2_sdxl.binにはどのCLIP Visionモデルをつかえばいいのでしょう?
またネットで検索すると、こんな情報が見つかりました。
いろいろ書かれていますが……
「ViT-H」を使うということは、つまり、SDXL用ではなく、SD用に準備されたCLIP VisionモデルをSDXLでも使えというわけですね。
筆者は、"https://huggingface.co/h94/IP-Adapter/tree/main/models/image_encoder"からダウンロードしました。
これも、「Model Manager」からインストールできるようです。
こちらのほうがプルダウンメニューで絞り込めるので、間違いが少ないかもしれません。
さて、これでいよいよ実行!
おっと、エラーが出ますね。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
ご参考までに、実際に動作したワークフローの絵を貼っておきますね。
ここからは蛇足ですが……
一応、AI漫画を描くときに使えるワークフローを考えていて、できるだけ個性的な白黒ペン画風の絵を作ろうとしているのですが、FaceIDに読ませる画像がカラーだと、どうしても生成画像にも色がついてしまうのですね。
comfyui-art-ventureの、Color Correctノードを使って、同時にモノクロ画像も生成しているのですが……
ペン画風にするにはもうひと工夫必要という感じ。
いろいろ改良を続けて、影の部分に細い線をさささっと入れて、ちょっとペン画風によせてみたりしています。
ちょっと雰囲気出てきたかな……などと、思ったり、思わなかったり。
まぁ、少しずつですね。