デモ、試してみるのがいい
https://huggingface.co/spaces/unity/IP-Adapter-Instruct
github 理論の説明
https://github.com/unity-research/IP-Adapter-Instruct
これは、画像を渡すと。その画像の、顔や、絵風・ポーズなどを、選んで別の画像を作れるみたいです。
ですが、512サイズでチューニングされてるのか、大きくしてもうまくいかない。
結論
512サイズだと、まともに動くが、この品質だと継続して使うとは思わなかった。
技術的な話
ZeroGPU環境でSpaceをクローンしたら1024サイズでも動きました。500秒とかに制限を変更すれば、2048でも生成可能かも。(ただ1024にしても、画質は良くなる一方、顔が増えたりして使えないです。)
ローカルでも、512サイズなら、VRAM 16GBで動きました。(ただSpacesモジュールを外してはいけません。(まれに落ちます。その場合、gradioアプリの再起動が必要です)
以下は試しましたが効果ありませんでした。
pipe.enable_attention_slicing()
pipe.enable_xformers_memory_efficient_attention()
pipe.enable_sequential_cpu_offload()
pipe.enable_model_cpu_offload()
Connection errored out
Gradioとの接続が切れて起こるエラーですがサーバー側(ローカル)がメモリ不足で落ちるのが原因ぽいです。
それにしても、@spaces.GPU がローカルでも影響する仕組みが不明です。
これが入っていると、CUDAに送っても、メモリエラーになりにくくなります。
StableDiffusionベース
デフォルトの設定の
"stablediffusionapi/bracingevomix-v2" 等にかえると、多少、日本人ぽくなります。
pipeラインは、他にもあるので、いろいろなモデル試せるでしょう。