メインコンテンツへスキップ
見出し画像

【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

    fluxai.studio
    画像
    もちろんプロンプトは"FLUX DEV"に変更しています。
    画像
    Flux.1(dev)とSD1.5(RealisticVision5.1)を交互に利用したもの

    アップスケーラを利用している事もありますが、Pro版を大きく超える品質です。

    画像
    SD1.5アジア系LoRAを利用
    画像
    SD1.5用のLoRAを間接的にFlux.1に適用できます。細部に至るまでかなりの高品質です。

    ComfyUIワークフロー例の紹介

    生成の流れ

    • ① プロンプトを利用したFlux.1の画像を生成

    • ② (1)で生成した画像を元にしてSD1.5モデルでのimg2imgを行う。ただし、プロンプトはLLMで(1)を整形したものを利用

    • ③ (2)で生成した画像を元にして、再度Flux.1モデルでのimg2imgを行う。ただし、プロンプトは(2)をLLM Visionモデルで作ったものを利用

    • ④ (3)で生成した画像を元にして、SD1.5モデルのimg2imgを行う。ただし、プロンプトは(2)と同じ

    • ⑤ オプションとしてUltimate SD Upscalerを利用する ※ 場合によっては劣化させる事もあるのでオプションとします

    全体図

    画像
    rensei-03

    ① Flux.1一回目

    特に工夫のない通常のFlux.1の生成方法です。最後に生成画像をモデルアップスケーラで1.2倍にして、次の工程に渡します。

    画像

    ② SD1.5一回目

    まずはSD1.5用のプロンプトを作ります。先のFlux.1で利用したプロンプトを「短い英文に変換して。結果のみ表示して。」の指示でLLMで作ります。※ 長過ぎるプロンプトはSD1.5で悪影響になる場合があるため

    画像
    初期プロンプトをLLMで整形

    Flux.1一回目の画像を受け取り、SD1.5でimg2imgをします。形状を大きく損なわないように、ControlNet(depth)を利用します。

    LoRA効果を強く出したい場合は、denoiosing strengthを大きく、Apply ControlnetのStrengthを小さくします。

    生成画像をオリジナルサイズの1.5倍にして、次の工程に渡します。

    画像
    SD1.5でimg2img

    ③ Flux.1二回目

    先の工程の結果をFlux.1でimg2imgします。その前にVisionモデルでプロンプトを作ります。

    画像
    Flux.1二回目のプロンプト作成

    Flux.1でimg2imgします。生成画像をオリジナルサイズの2倍にして、次の工程に渡します。

    画像
    Flux.1でimg2img

    ④ SD1.5二回目

    最終工程です。SD1.5でimg2imgします。例では768x1024が初期画像サイズですので、1536x2048の画像が完成します。ここまでRTX3060(12G)で7分弱かかりました。

    画像

    ⑤ オプション工程

    Ultimate SD Upscalerを利用します。さらに1.5倍にします。プロンプトはSD1.5の品質プロンプトのみを利用します。

    画像

    使い方と技工的なもの

    初期プロンプトとキーワード

    一回目のFlux.1のプロンプト入力と、すべてのプロンプトに強制的に挿入するキーワード欄です。LLMの加工で、キーワードが消えてしまう事を防ぎます。

    画像

    初期画像サイズの指定とSD1.5 LoRA

    最初の画像サイズを768x1024に指定しています。工程②と工程④で利用するLoRAの指定もここで設定するようにしています。それぞれ2つずつ指定できるようにしています。

    ※ ComfUIのショートカット「Ctl+B」で各ノードのON/OFFが切り替えられるので便利です。LoRAを利用しない場合は切り替えてピンク色にするだけです。

    Global Seedを利用して、(Ollama以外の)各Seedを一括管理できるようにしています。途中から再開したい場合などに便利です。

    画像
    入力とLoRA

    GPUメモリ管理

    LLMの利用で(時々)問題になる事は、GPUメモリを専有してしまい。CPUで計算してしまう事です。そのために3つのギミックを利用しました。

    画像
    GPUメモリ管理
    • LLM利用直前に、LayerUtilityのPurge VRAMを利用する(ただし必要のないパッケージを大量に入れてしまうので考えものですが…)

    • Impact-PackのSleepを利用する

      • Purge VRAMは非同期処理のようですので、1秒の緩衝時間を作っています

    • LLM(Ollama)を利用した後にも1秒の緩衝時間を作ります

      • ollamaノードの「keep_alive」を0に設定するとLLM処理の終了後に即座にGPUメモリを開放するはずなのですが、タイミングによるようです。

    まとめと付録

    以前の記事の有料の付録欄に、本記事のComfyUI jsonファイルを追加しました。記事サポートをしていただける場合はよろしくお願いします。

    以下、関連する記事の【PR】です。


     
     
    3Dアート作品や3Dモデルデータも扱っています。最近は専らAIを利用した作品が多いです。 ※ BOOTHにて各種販売も行なっております。 https://lit.link/catappart3d

    あなたへのおすすめ