![見出し画像](https://assets.st-note.com/production/uploads/images/158976626/rectangle_large_type_2_6fff4472decbcd7e65f66ab8c0daf233.png?width=1200)
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版では動いてたからなぁ……どうしてたんだろう?
仕方なく、いろいろ検索しているとこんな記事を発見。
![](https://assets.st-note.com/img/1729515280-vUkFEH0scQNCapxYrMgq14fz.png?width=1200)
これこれ、プリビルドパッケージ。
早速、3.11用をダウンロード。
そしてこれをpipでインストール。
python.exe -m pip install "ダウンロードしたファイルのフルパス"
これでインストール完了。
ComfyUI_IPAdapter_plusのインストール
sho氏のnoteに戻ってFaceID用のカスタムノードをインストールします。
ComfyUI Managerの「Custom Nodes Manager」から、"ComfyUI_IPAdapter_plus"を検索してインストール。
![](https://assets.st-note.com/img/1729585843-LZgJmeoFCnk4DtQqXidvyTca.png?width=1200)
これは難なくクリア。
FaceIDのモデルをダウンロード
今回はAUTOMATIC1111版で使っていたモデルを流用しましたが、これらはもともとHugging Faceからダウンロードしたものです。
SDXLを使うつもりなので、"ip-adapter-faceid-plusv2_sdxl.bin"と、"ip-adapter-faceid-plusv2_sdxl_lora.safetensors"をIPAdapterとLoRAのモデルが入っているフォルダーにそれぞれコピー。
ちなみに、これらはComfyUI Managerの「Model Manager」からもインストールできるようですね。
![](https://assets.st-note.com/img/1729586334-brfUCDuH5RYEP2pBO8sV9GQk.png?width=1200)
Model Managerを使えば、自動的に適切なフォルダーにコピーされるはずです。
さて、ワークフローを組んでいきますか。
IPAdapter FaceIDノードを置いて、何をつなげばいいのかなぁー
とりあえず必要そうなものをつなげて……
あれ、"CLIP Vision"のモデルがないですね。
ふむ。ip-adapter-faceid-plusv2_sdxl.binに合ったCLIP Visionモデルが必要というわけですね。
CLIP Visionモデルのダウンロード
ip-adapter-faceid-plusv2_sdxl.binにはどのCLIP Visionモデルをつかえばいいのでしょう?
またネットで検索すると、こんな情報が見つかりました。
いろいろ書かれていますが……
![](https://assets.st-note.com/img/1729596618-N6VpnHKLS7atQWuP3kGrEm5g.png?width=1200)
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.
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モデルには使用していない。
「ViT-H」を使うということは、つまり、SDXL用ではなく、SD用に準備されたCLIP VisionモデルをSDXLでも使えというわけですね。
筆者は、"https://huggingface.co/h94/IP-Adapter/tree/main/models/image_encoder"からダウンロードしました。
これも、「Model Manager」からインストールできるようです。
![](https://assets.st-note.com/img/1729598186-BQsuIRh4z0GxcNEVKkZylefj.png?width=1200)
こちらのほうがプルダウンメニューで絞り込めるので、間違いが少ないかもしれません。
さて、これでいよいよ実行!
おっと、エラーが出ますね。onnxruntimeがないとかなんとか……
ONNX Runtimeのインストール
ネットで検索すると、あっさり見つかりました。
pipでインストールすればいいようです。
あ、これ、もしかしてInsight Faceより先にやっておくべきだったのですかね。ま、いいや。
"python_embeded"ディレクトリに移動して
python.exe -m pip install onnxruntime
インストールできました。
これでどうにか……動き出しました!
「おめでとう」「おめでとう」「おめでとう」
「ありがとう」
ComfyUIでFaceIDを使おうとしたら、思いのほか設定が面倒だったので、腹いせに手書きイラスト風画像にネットに転がっている顔画像をはめまくっているのですが、セイラさんの画像を使ったら'80年代に流行った何かが量産されたので共有します。#AIart #AIイラスト #SDXL #FaceID #IPAdapter pic.twitter.com/GPq22YAmlD
— 久道秀作 (@KudoShusak) October 14, 2024
そしてすべてのチルドレンに
おめでとう
【まとめ】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
ご参考までに、実際に動作したワークフローの絵を貼っておきますね。
![](https://assets.st-note.com/img/1729611374-OkjbUoqIMA190c3h7DYdKBv2.png?width=1200)
ここからは蛇足ですが……
一応、AI漫画を描くときに使えるワークフローを考えていて、できるだけ個性的な白黒ペン画風の絵を作ろうとしているのですが、FaceIDに読ませる画像がカラーだと、どうしても生成画像にも色がついてしまうのですね。
![](https://assets.st-note.com/img/1729611781-wB1r2XuAYibL7G5zUsqn0jeD.png?width=1200)
comfyui-art-ventureの、Color Correctノードを使って、同時にモノクロ画像も生成しているのですが……
ペン画風にするにはもうひと工夫必要という感じ。
![](https://assets.st-note.com/img/1729612113-MOWAsx1t659ZJKczeBkyouNa.png?width=1200)
いろいろ改良を続けて、影の部分に細い線をさささっと入れて、ちょっとペン画風によせてみたりしています。
IPAdapterのテスト継続中。#AIart #AIイラスト #SDXL pic.twitter.com/sysyFmjxWa
— 久道秀作 (@KudoShusak) October 16, 2024
![](https://assets.st-note.com/img/1729614292-qEM7Swbz84OIkTi6yDdWLtYv.png?width=1200)
ちょっと雰囲気出てきたかな……などと、思ったり、思わなかったり。
まぁ、少しずつですね。
いいなと思ったら応援しよう!
![久道秀作](https://assets.st-note.com/production/uploads/images/9892444/profile_9cb1cd088eea2690b252a9d60af6e6e6.jpeg?width=600&crop=1:1,smart)