DCAI
Loading Light/Dark Toggl

ComfyUI Flux.1 [schnell]でLoRAを使うには

⏱️9min read
📅 2024年9月8日
🔄 2024年9月8日
カテゴリー:📂 生成AI中級
ComfyUI Flux.1 [schnell]でLoRAを使うにはのメイン画像
Supported by

Flux.1の登場から約1か月過ぎましたが、コントロールネットが登場したりとどんどん盛り上がりがみられます。今回の記事ではFlux.1 [schnell] のワークフローにLoRAを使う方法を説明していきます。LoRAを使って一段階上の品質を目指しましょう。

PR
はじめてでもここまでできる Stable Diffusion画像生成[本格]活用ガイドの商品画像
はじめてでもここまでできる Stable Diffusion画像生成[本格]活用ガイド
🔗Amazonリンク
大規模言語モデルを使いこなすためのプロンプトエンジニアリングの教科書の商品画像
大規模言語モデルを使いこなすためのプロンプトエンジニアリングの教科書
🔗Amazonリンク

Flux.1 [schnell]でLoRAを使うには

Flux.1 [schnell]でLoRAを使うには「LoraLoaderModelOnly」ノードを使ってワークフローに実装します。

「LoraLoaderModelOnly」にモデルを読み込むためにはComfyUIのディレクトリ\ComfyUI\models\lorasにモデルを読み込む必要があります。また、A1111 WebUIのモデルを共有している場合には\stable-diffusion-webui\models\Loraからモデルを読み込みます。

Flux.1 [schnell]を初めて使う方は下記の記事で詳しく解説しているのでご参照ください。

ComfyuIでのLoraLoaderModelOnlyの実装方法

「LoraLoaderModelOnly」の実装は基本的には「Load Diffusion Model」のMODELアウトを繋ぎます。CLIPは反映されないので標準の「Load LoRA」は使用しません。ノードがない場合はComfyUIを最新版にアップデートしましょう。

今回使用するLoRAの紹介

今回使用するLoRAはAkiLora氏の「Aki Anime」になります。CivitaiでLoRAを探すときは[Dev]と[schnell]それぞれ対応しているモデルが違うのでご注意ください。確認方法はLoRAページのBase Modelの項目を確認しましょう。Flux.1 [schnell] の場合は「Flux.1 S」、Flux.1 [dev] の場合は「Flux.1 D」と明示されています。

  • 作者:🔗AkiLora
  • ダウンロード:164 MB
  • アップロード:2024/9/4
  • ファイル名:aki_anime.safetensors

AkiLora氏の「Aki Anime」はFlux.1 [schnell] にアニメスタイルを適応してくれるLoRAになります。ライセンスが非商用利用なのでご注意ください。

標準のFlux.1 [schnell] ではアニメスタイルが安定しておらず、古いスタイルが出てきたりします。このLoRAを使えばアニメスタイルに方向性が出来るので安定した生成ができます。但し、どのLoRAにも言える事ですが方向性が出る分多様性がなくなるので自由度は低くなります。

LoRAを使ったFlux.1 [schnell] ワークフローを使ってみる

ここで紹介するのはFlux.1 [schnell] を使ったtext2image + アップスケーラーの構成になります。メモリ管理関係も良くなってきたので、まずはComfyUIを最新版にアップデートしましょう。ワークフローのデフォルト設定は高品質な画像を生成する為に、ステップ数は少ないですがVRAMをかなり消費するの設定になっています。VRAMが少ない場合は生成時間がかなり掛かるので「Load Diffusion Model」のweight_dtypeをfp8_e4m3fn、「Empty Latent Image」の解像度を768 x 512など低くしてご使用ください。

ワークフローはPatreonで公開していますが、有料会員様のみ閲覧・ダウンロードが可能となっています。1ヶ月だけでも有料会員になっていただければ執筆の励みになりますので、よろしければ入会をお願い致します。

また、ワークフローがダウンロード出来なくでも解説を見ればご自身でも構成できるので、このまま解説にお進みください。

必須カスタム ノードのインストール

このワークフローを実行するには下記の3つのカスタムノードをインストールする必要があります。

  • Image chooser:1st Passの結果を確認する為に実装、これにより生成時間が短い1st Passを満足のいく構成が出るまで簡単に再実行することが出来ます。
  • Crystools:1st Passのシードを確認する為に実装、ComfyUIのseedシステムは実行後に次のシードに変わってしまうので、メタデータの確認のために実装。
  • ComfyUI Layer Style:ポストプロセスの色調補正に使用、LayerColor: ColorAdapterノードで色調補正をします。

ComfyUI-ManagerがインストールされたComfyUIにダウンロードしたJsonファイルをで開くとカスタムノードが足りていないと警告が出るのでManagerメニューの「Install Missing Custom Nodes」より不足しているカスタムノードをインストールすることが出来ます。

カスタムノードをインストールする方法は下記の記事にて詳しく解説しているので参考にしてください。

Basic Info

Basic InfoグループにはText2imageの基本インプットノードがまとめられています。

  • Load Diffusion Model:unet_nameにflux-schnell.safetensorsを選択します。wight_typeはdefaultがfp16なので計算が重い分、高品質です。fp8_e4m3fn / fp8_e5m2は軽量の高~中品質
  • DualCLIPLoader:テキストエンコーダーモデルを読み込みます。clip_nameにclip_lt5xxl_fp16を選択しましょう。(PCメモリ不足の場合はt5xxl_fp16の代わりにt5xxl_fp8_e4m3fnを使います。)
  • Load VAE:VAEを読み込みます。vae_nameにはae.safetensorsを選択してください。
  • LoraLoaderModelOnly:LoRAを読み込みます。lora_nameにaki_anime.safetensors、strength_modelには少しだけベースモデルを反映させたいので0.85にします。
  • ModelSamplingFlux:タイムステップスケジューリングシフトの設定です。FLUX.1 [schnell] で使う場合はmax_shiftは0.0~2.0辺りで設定しましょう。また、base_shiftは反映されないので0または、デフォルトの0.5で使いましょう。場合によってはこのノードをバイパスした方が良い結果が得られる場合も在ります。
  • Empty Latent Image:今回は0.9MPサイズで比率が16:9の1264 x 712にします。batch_sizeは3に設定します。1st Passが重たくなるようなら1に設定しましょう。
  • RandomNoise:この記事と同じ生成結果を見たい場合はnoise_seedを526038417924851にして、control_after_genelateはfixedに設定します。batchの3番目に出現します。
  • CLIP Text Encode (Prompt):基本的にはT5XXLが自然言語を得意としているので自然言語のみでも問題ありませんが、CLIP Lも使われているのでDanbooruスタイルも使うことが出来ます。今回は下記のプロンプトを使います。
    A beautiful girl knight is standing at hill side, Under the blue sky. and she is looking at viewer.
    
    the color theme is the teal and orange.
    
    In The background big word of ("DCAI":1.3) made by (detailed ruined stone:1.15) with moss and plants.
    (The old castle is on top of a hill:0.85) .
    
    horizonin view, 50mm lens portrait, (anime face with detailed eyes:1.3), medival fantasy, water fall, authentic (no credits, no signature.:1.1)
  • KSamplerSelect:サンプラーを選択します。今回は公式推奨のeulerを選択します。
  • BasicScheduler:サンプラー・スケジューラータイプを選択します。schedulerはbetaもしくはsimpleを選択してください。イラストの場合、stepsがあまり高いとディテールが無くなるので2にしています。

1st Pass

1st Passグループでは1回目の生成を行います。

  • BasicGuider:モデルとコンディショニングをまとめてガイダーに変更します。
  • SamplerCustomAdvanced:次世代モデル向けサンプラーノード。パラメーターが外部化したことによりより細かな調整が可能です。
  • VAE Decode:Latentイメージをデコードをデコードしてpixelイメージに変換します。

Preview

Previewグループは生成されたイラストをプレビューするエリアになります。このワークフローでは「Save Image」ノードを使っていません、保存するにはプレビュー画像を右クリックで保存するか、「Preview Image」を「Save Image」に変更してください。

  • Preview Chooser:1st Passの生成結果が表示されます。結果に満足がいけば画像を選択して「Progress selected image」ボタンより次に進めてください。
  • Latent From Batch:バッチファイルで希望するイメージだけを生成したい時に使います。バイパスをしていますが、今回のサンプルを1枚のみ生成したい場合、ComfyUIではSeedが1つのシードでバッチ処理をする為、Seedのみでは再生成できないので、このノードを使います。
  • 🪛 Preview from image:Preview Chooserで選択した画像のメタデータを取得する為のノード。ComfyUIのSeedはランダムで実行すると次のSeedに切り替わるので現在生成中のSeedの確認の為に実装しています。
  • 🪛 Show any value to console/display:Preview from imageで抜き出したメタデータを閲覧する為に使用しています。
  • Preview Image – finish 2nd Pass:2nd Passで生成したイラストのプレビューになります。
  • Preview Image – 4K/8K image:イメージ シャープナーのプレビューになります。

Upscale

Upscaleグループでは2nd Passの為にスケールアップをしています。

  • Load Upscale Model:アップスケーラーモデルを読み込みます。今回は4x-UltraSharpを使います。
  • Upscale Image (using Model):アップスケーラーモデルをつかって4倍に拡大します。動作が重たい場合はこのノードをバイパスしてください。
  • ImageScaleToTotalPixels:4倍に拡大されたモデルを2メガピクセルまで縮小します。upscale_methodはlanczosを選択します。

2nd Pass

2nd PassグループではUpscaleで拡大された画像を元にimg2imgを使って清書しています。

  • CLIP Text Encode (Prompt):2nd Pass用にシンプルなプロンプトを使います。場合によっては1st Passのプロンプトを使った方が良い結果が生成されます。
  • ModelSamplingFlux:2nd Passでは大きく構図を変えたくないのでmax_shiftを0.15にします。width / heightはmax_shiftが低いのであまり影響しないためデフォルトにしています。
  • BasicScheduler:ここも大きく構図を変えたくないのですが、あまり下げすぎると絵が変わらないのでdenoiseを0.35にします。stepsは3にして書き込み量を増やします。schedulerはbetaにしています。
  • VAE Encode:Upscaleで拡大したピクセルイメージをラテンとイメージに変換しています。
  • BasicGuider:モデルとコンディショニングをまとめてガイダーに変更します。
  • SamplerCustomAdvanced:2回目のサンプリングを行うノード。

Post Process

Post Processグループでは生成の最後の微調整をします。

  • VAE Decode (Tiled):2nd Passで生成されたラテントイメージをタイルデコードを使ってピクセルイメージにデコードします。通常の「VAE Decode」でもComfyUIはメモリが足りないときに「VAE Decode (Tiled)」に自動で切り替わるので通常の「VAE Decode」でも問題ありません。
  • LayerColor: ColorAdapter:1st Passと2nd Passで色味が変わる場合が在るのでこのノードで補正します。

Image Sharpener

Image Sharpenerグループでは一度8Kまで拡大してから4Kに縮小し、シャープにしています。動作が重たい場合はグループ全体をバイパスしましょう。

  • Load Upscale Model:今回も4x-UltraSharpを使います。
  • Upscale Image (using Model):このノードで8Kに拡大します。
  • ImageScaleToTotalPixels:8Kまで拡大した画像を4Kに縮小しています。upscale_methodで画像の鮮明度が変わりますので色々試してみましょう。

ここまでのセッティングが出来れば「Queue Prompt」ボタンで生成を開始しましょう。

1st Passが終われば「Preview Chooser」に結果が表示されます。満足のいく結果が出るまで何度も生成しましょう。そして、良い画像が生成されたらアップスケールプロセスに送りましょう。しばらくすれば最終結果が生成されます。

ワークフローの最終結果
ワークフローの最終結果
画像を開く

まとめ

今回はComfyUIでFlux.1 [schnell] モデルにLoRAを実装する方法を解説させていただきました。Flux.1 [schnell] のLoRAはFlux.1 [dev] と比べるとまだまだ多くはありません。SDXLと比べると品質も良く商用利用が出来るFlux.1 [schnell] モデルの盛り上がりも期待しています。これからもFlux.1の情報を追っていきたいと思います。

PR
mouse 【RTX 4090 搭載 / 3年保証】 ゲーミングPC デスクトップ G-Tune FZ (Core i9-14900KF RTX4090 128GBメモリ 2TB SSD Windows 11 ゲーム 動画編集) FZI9G90B12SKW1AZの商品画像
mouse 【RTX 4090 搭載 / 3年保証】 ゲーミングPC デスクトップ G-Tune FZ (Core i9-14900KF RTX4090 128GBメモリ 2TB SSD Windows 11 ゲーム 動画編集) FZI9G90B12SKW1AZ
🔗Amazonリンク
Samsung 990 PRO 2TB PCIe Gen 4.0 x4 (最大転送速度 7,450MB/秒) NVMe M.2 (2280) 内蔵 SSD MZ-V9P2T0B-IT/EC 国内正規保証品の商品画像
Samsung 990 PRO 2TB PCIe Gen 4.0 x4 (最大転送速度 7,450MB/秒) NVMe M.2 (2280) 内蔵 SSD MZ-V9P2T0B-IT/EC 国内正規保証品
🔗Amazonリンク
Supported by