🦊IP-Adapter
🏠/🦊雑に学ぶComfyUI
前/🦊ControlNet
次/🦊アップスケーラー
image2imageとはまったく別の概念でimage promptと呼ばれるものがあります
例えば自分の絵を見ながら、これと同じような絵をAIに描いてほしいなあと思ったとき、これまではテキストだけで指示するしかありませんでした
しかし、絵を完璧に文字で説明することなどできるはずがありません
そこで、AIに直接絵を見てもらい、テキストを介さずにそこに描かれているオブジェクト・絵柄等を理解し描いてもらおうというのがimage promptです
いくつかあるimage prompt技術のなかで今最も熱いのがIP-Adapterです
ComfyUI IPAdapter plusのアップデートに伴い、古いworkflowは多分動きません
修正したい…nomadoor.icon
🦊ComfyUIでやってみる
🪢カスタムノード
ComfyUI IPAdapter plus
モデルのダウンロード
ip-adapter_sd15.safetensors
ComfyUI\modelsにipadapterフォルダを作り、その中に置きます
CLIP Vitモデルのダウンロード
model.safetensors
ComfyUI\models\clip_visionに置いてください
名前がわかりにくいのでOpenCLIP-ViT-H-14へリネームしてください
https://gyazo.com/edb3903ff466e89357051abf4671bf02
ip-adapter-sd15.json
🟪KSamplerとチェックポイントの間にIPAdapterApplyノードを挟みます
clip_visionには、CLIPVisionLoaderノードから上でダウンロードしたOpenCLIP-ViT-H-14を読み込みます
noiseですが、特にこだわりがなければ0.01にしておくと良い結果になることが多いです
🟦IP-Adapterの目となるCLIP-ViT-Hですが、224 x 224の範囲しか見れません
とはいってもノードが勝手に画像を縮小&クロップするので特別な処理は基本いらないです
ただし、例えば縦長の人の写真を使ったとき、勝手に真ん中を基準に正方形に切り取って処理するので、顔や足がちょん切れます
どの部分で切り取ってほしいか?をコントロールしたければ、PrepImageForClipVisionノードを使って前処理しましょう
IPAdapterTilesMaskedノード(WIP)
Tileの考え方で全体をマッピングすることで、CLIPの正方形の制限から解放される
https://gyazo.com/77dc82a27c0573b3c478cfa2d3a40555
IPAdapterTile.json
🎀他のIP-Adapterモデル
この絵を参考に描いてくれ!といっても、絵というのはいろんな要素があり、どの要素のことをいっているのか?どこまで参考にしていいのか?というのは案外曖昧です
例えば絵柄、キャラ、オブジェクト、構図 etc.
上で使ったip-adapter_sd15は、参照画像を全体的にふわっと参考にすることが得意ですが、他にもそれぞれの要素に特化したモデルがいくつか作られているので紹介します
(https://huggingface.co/h94/IP-Adapter←はモデルへの直リンクです)
https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus_sd15.safetensors?download=trueip-adapter-plus_sd15
オブジェクト・構図を強く転送します
https://gyazo.com/5877bbdaef17de6e3dfe7ac83eae3021https://gyazo.com/64fdcae074a2a01943d7f5fff3aaa418https://gyazo.com/49d7d44574dd81256c0457c1d07a0733
参照画像 / 無印 / plus
無印に比べるとimage2imageに思えるほど構図が参照画像に近くなっています(右)
https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light.safetensors?download=trueip-adapter_sd15_light
テキストプロンプトのほうを重視します
若干スタイル転送寄り
https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus-face_sd15.safetensors?download=trueip-adapter-plus-face_sd15
顔というより頭部を転送します
https://gyazo.com/9c99f339a6a51edf80ab236a67e3c217https://gyazo.com/4e67435add9b34f3463ad411de4b0404
参照画像 / plus-face
自由度は少なく、weight 0.8でプロンプトにwhite short hairと入れていますが無視されます
https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15.bin?download=trueip-adapter-faceid-plusv2_sd15
CLIPだけではなく、face swapに使われるInsightFaceを使ったモデルです
plus-faceよりも柔軟に顔を転送します
https://gyazo.com/afe7232d9dd3cc54f5d8a2f1d956e15f
ip-adapter-faceid-plusv2_sd15.json
IPAdapterApplyFaceIDノードという別のノードを使う必要があります
このモデルはv2なので、faceid_v2をtrueに
設定はplus-faceのときと同じですが、こちらの方がかなり柔軟なのが分かります
こちらをベースにplus-faceを低いweightで併用するといい感じになるかもしれません
それぞれのSDXL版
https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl_vit-h.safetensors?download=trueip-adapter_sdxl_vit-h
https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus_sdxl_vit-h.safetensors?download=trueip-adapter-plus_sdxl_vit-h
https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus-face_sdxl_vit-h.safetensors?download=trueip-adapter-plus-face_sdxl_vit-h
https://huggingface.co/h94/IP-Adapter-FaceID/blob/main/ip-adapter-faceid-plusv2_sdxl.binip-adapter-faceid-plusv2_sdxl
🎞️複数枚の入力
https://gyazo.com/92a35187d0be97c692413e472555eab0
IPAdapterEncoder.json
単純にIPAdapterApplyノードを増やしてもいいですが、同じIP-Adapterモデルに対して、複数枚の画像を入力にしたければIPAdapterApplyEncodedノードというものもあります
🐣派生
IP-Adapterの特に顔の特徴を転送する部分にフォーカスした派生技術がいくつか存在します
その中でもInstantIDは素晴らしい性能なので試してみてください
使い方&workflow → ComfyUI InstantID