![見出し画像](https://assets.st-note.com/production/uploads/images/158169750/rectangle_large_type_2_e7dcd0caac652e88632e01ac9d9353e3.jpeg?width=1200)
【Flux.1】Flux.1時代のローカルAI画像生成④-3【SD1.5】
はじめに
下記事の続きです。
広範囲にテストを行ってみたのですが、Flux.1とSD1.5を交互に生成する手法は、汎用的にかなり良い結果を出すようです。さらに良くなるようにComfyUIのノードを作り直しました。
本記事のComfyUI jsonファイルは過去の下記事の付録欄にてダウンロードできます。
生成例
Flux.1(pro)を利用できるサイトのひとつhttps://fluxai.studio/ja/showcasesで紹介されているプロンプトで試します。
black forest gateau cake spelling out the words "FLUX PRO", tasty, food photography, dynamic shot
![](https://assets.st-note.com/img/1729063759-r1cQSszVg8pM0emExJq6PZ7H.jpg?width=1200)
![](https://assets.st-note.com/img/1729063799-DJCZ85RNhipnUxFo361eBwM4.jpg?width=1200)
アップスケーラを利用している事もありますが、Pro版を大きく超える品質です。
![](https://assets.st-note.com/img/1729064364-f1wTD0LyxOVXk83KAGmP5Hvl.jpg?width=1200)
![](https://assets.st-note.com/img/1729064396-Ig5OuHeBwZjxbWonEfXRaYp1.jpg?width=1200)
ComfyUIワークフロー例の紹介
生成の流れ
① プロンプトを利用したFlux.1の画像を生成
② (1)で生成した画像を元にしてSD1.5モデルでのimg2imgを行う。ただし、プロンプトはLLMで(1)を整形したものを利用
③ (2)で生成した画像を元にして、再度Flux.1モデルでのimg2imgを行う。ただし、プロンプトは(2)をLLM Visionモデルで作ったものを利用
④ (3)で生成した画像を元にして、SD1.5モデルのimg2imgを行う。ただし、プロンプトは(2)と同じ
⑤ オプションとしてUltimate SD Upscalerを利用する ※ 場合によっては劣化させる事もあるのでオプションとします
全体図
![](https://assets.st-note.com/img/1729065086-Kt5HPTNk0xp7DWCociXY1Squ.png?width=1200)
① Flux.1一回目
特に工夫のない通常のFlux.1の生成方法です。最後に生成画像をモデルアップスケーラで1.2倍にして、次の工程に渡します。
![](https://assets.st-note.com/img/1729065185-yorszb0wihqOFMlAaHxJnTDK.png?width=1200)
② SD1.5一回目
まずはSD1.5用のプロンプトを作ります。先のFlux.1で利用したプロンプトを「短い英文に変換して。結果のみ表示して。」の指示でLLMで作ります。※ 長過ぎるプロンプトはSD1.5で悪影響になる場合があるため
![](https://assets.st-note.com/img/1729065600-vjaZrFOMAbo6NHWJtD8kE0KB.png?width=1200)
Flux.1一回目の画像を受け取り、SD1.5でimg2imgをします。形状を大きく損なわないように、ControlNet(depth)を利用します。
LoRA効果を強く出したい場合は、denoiosing strengthを大きく、Apply ControlnetのStrengthを小さくします。
生成画像をオリジナルサイズの1.5倍にして、次の工程に渡します。
![](https://assets.st-note.com/img/1729065385-RlZJxhC01eqO9HXf5ypFz8IU.png?width=1200)
③ Flux.1二回目
先の工程の結果をFlux.1でimg2imgします。その前にVisionモデルでプロンプトを作ります。
![](https://assets.st-note.com/img/1729066224-Zxql0H3dVRymYag8SKkB9GhJ.png?width=1200)
Flux.1でimg2imgします。生成画像をオリジナルサイズの2倍にして、次の工程に渡します。
![](https://assets.st-note.com/img/1729066300-6BvAVLoYQbnX5SN78juCRmJH.png?width=1200)
④ SD1.5二回目
最終工程です。SD1.5でimg2imgします。例では768x1024が初期画像サイズですので、1536x2048の画像が完成します。ここまでRTX3060(12G)で7分弱かかりました。
![](https://assets.st-note.com/img/1729066695-Oso1AyQbEd6FkHID8J5zLf0r.png?width=1200)
⑤ オプション工程
Ultimate SD Upscalerを利用します。さらに1.5倍にします。プロンプトはSD1.5の品質プロンプトのみを利用します。
![](https://assets.st-note.com/img/1729067008-o6Zn2NymgeBYPAMLHlIxJc0v.png?width=1200)
使い方と技工的なもの
初期プロンプトとキーワード
一回目のFlux.1のプロンプト入力と、すべてのプロンプトに強制的に挿入するキーワード欄です。LLMの加工で、キーワードが消えてしまう事を防ぎます。
![](https://assets.st-note.com/img/1729068768-zBOsN1aLhRjeo3ESwfyYbAtG.png?width=1200)
初期画像サイズの指定とSD1.5 LoRA
最初の画像サイズを768x1024に指定しています。工程②と工程④で利用するLoRAの指定もここで設定するようにしています。それぞれ2つずつ指定できるようにしています。
※ ComfUIのショートカット「Ctl+B」で各ノードのON/OFFが切り替えられるので便利です。LoRAを利用しない場合は切り替えてピンク色にするだけです。
Global Seedを利用して、(Ollama以外の)各Seedを一括管理できるようにしています。途中から再開したい場合などに便利です。
![](https://assets.st-note.com/img/1729067232-VZNf6oCAde1SwkjI7sYuOrQi.png?width=1200)
GPUメモリ管理
LLMの利用で(時々)問題になる事は、GPUメモリを専有してしまい。CPUで計算してしまう事です。そのために3つのギミックを利用しました。
![](https://assets.st-note.com/img/1729067782-YLa0zJsyexEdHD16PvwA4hBj.png?width=1200)
LLM利用直前に、LayerUtilityのPurge VRAMを利用する(ただし必要のないパッケージを大量に入れてしまうので考えものですが…)
Impact-PackのSleepを利用する
Purge VRAMは非同期処理のようですので、1秒の緩衝時間を作っています
LLM(Ollama)を利用した後にも1秒の緩衝時間を作ります
ollamaノードの「keep_alive」を0に設定するとLLM処理の終了後に即座にGPUメモリを開放するはずなのですが、タイミングによるようです。
まとめと付録
以前の記事の有料の付録欄に、本記事のComfyUI jsonファイルを追加しました。記事サポートをしていただける場合はよろしくお願いします。
以下、関連する記事の【PR】です。