🦊ACE++
👉 |
追加学習なしで参照画像にあるサブジェクトを転送する技術はこれまでにもありましたが、Flux自身が持つ力を利用することでようやく実用に耐えるものになった(当社比)のがこのACE++です
この能力を応用してface swapができたり、ControlNetのように深度マップからの画像生成ができたりと、とても応用の効く技術です
業務連絡
Fluxをフルファインチューニングしたものもあるのですが、Flux.devが蒸留されてる関係であんまうまくいかんわ!と公式が言ってたのでここではやりません
2025/4/7までのworkflowめちゃめちゃ間違えてましたnomadoor.icon
準備
🪢カスタムノード
これで追加されるpreprocessorノードがイマイチなのと、ACEPlusLoraConditioningノードがほぼデフォルトのInpaintModelComditioningノードとほぼ同じなので入れなくて良いかもしれないnomadoor.icon
LoRAモデル
ID転送
参照画像の人物(顔)と同じ人物を生成する
https://gyazo.com/8e01db8cebce51e7c47d9f958a94c61b
🟩(今回はGGUF版の)Flux.fillとACE++のportrait LoRAを読み込む
🟪In-Context LoRA等と同じように、ACE++では参照画像と編集する画像を同時にFLUXに渡して、その両方の画像を見比べながら画像生成してもらいます
そのため、プレビュー画像のように参照画像(左)と編集する画像+マスク(右)をひとつの画像に合体させてからinpaintingさせます
地道に作ってもいいですが、このノードはこれを簡単にしてくれます
noise_maskをfalseにしないと生成画像でマスクの境界線がジャギジャギになる
🟨inpaintingで生成した部分のみをクロップ
Face Swap
https://gyazo.com/4d84f2e35f1c7fe99a322d8ee3eaec43
🟪顔を変えたい画像とマスクをACEPlusLoraProcessorノードにつなぐだけ
faceどころか頭丸々マスクしてもうまくいくnomadoor.icon
https://gyazo.com/09604f9cf3798b6fb65ab86eab2c6d63
https://gyazo.com/c7f70031848e2b28d51a2d61a0f7d25f
🟨入力したベース画像に生成した画像の顔を合成する処理を追加
ACE++は横並べした画像を縮小するのでえらく画像が劣化する
元の画像に生成した顔を合成すれば体の方の劣化はなくなる
https://gyazo.com/f370f0a94b6e562fec81fce6f5a5d470
🟩LoRAをsubjectに変更
着せ替えだけでなく、ロゴの転写やオブジェクトの挿入などなどいろいろできる ローカル編集 (ControlNet的な)
🪢カスタムノード
https://gyazo.com/233ea3edc356eba4f6e86813b54a38a7
🟩LoRAをlocalに変更
🟥ACEPlusLoraProcessorに入力する画像はちょっと特殊なのですが、ひとまずControlNetのときのようにCanny Edgeで画像を線画にします
その後、色反転、マスクの形で切り抜きます
🟪task_typeをno_preprocessに
🚨
🟪ACEPlusLoraProcessorノードの中にはedgeとdepthのpreprocessorが内蔵されています
task_typeをcontour/depthにすることでもっとシンプルなworkflowを組めるのですが、エラーの修正がとても大変なのでここでは紹介しません
https://gyazo.com/79aa3c9b47b80852a7bd51235053f188
🟪マスクされた場所がグレースケールに変換され、プロンプトに合わせた色で塗ってくれる