FLUX Schnell img2img+ControlNet Canny をComfyUIで組む設定手順

FLUX Schnell img2img+ControlNet Canny をComfyUIで組む設定手順

※本記事にはプロモーション(広告・アフィリエイトリンク)を含みます。

FLUX Schnell に Canny ControlNet を組み合わせ、入力画像の輪郭を保ちながら質感や雰囲気を変える img2img ワークフローを ComfyUI で実現する手順をまとめます。どのノードをどう繋ぐか、ControlNet の強度をどう調整するかを中心に、つまずきやすいポイントを添えて書きます。

FLUX Schnell で img2img する前に知っておくこと

FLUX.1-schnell はフロー整合(Flow Matching)で学習されたモデルで、デフォルトの生成ステップ数は 4 です。SD 系の DDIM img2img とはアーキテクチャが根本的に異なります。

重要な前提として、SD 系の ControlNet モデルは FLUX では動作しません。FLUX 専用の ControlNet モデルが必要です。執筆時点で公開されているものとして以下が知られています。

配布元 モデル名(例) Hugging Face リポジトリ
XLabs-AI flux-controlnet-canny-v3 xLabs-AI/flux-controlnet-canny-model
InstantX FLUX.1-dev-Controlnet-Canny InstantX/FLUX.1-dev-Controlnet-Canny

ライセンスはモデルごとに異なります。FLUX Schnell 本体は Apache 2.0 ですが、ControlNet モデルのライセンスは別に確認が必要です。商用利用する場合は各モデルページで必ず確認してください。

必要なファイルと配置先

ComfyUI の標準ディレクトリ構成を前提にします。

ComfyUI/
├── models/
│   ├── unet/          ← flux1-schnell.safetensors(fp8 または GGUF)
│   ├── vae/           ← ae.safetensors(black-forest-labs 公式 VAE)
│   ├── clip/          ← t5xxl_fp8_e4m3fn.safetensors
│   │                     clip_l.safetensors
│   └── controlnet/    ← flux-controlnet-canny-v3.safetensors

FLUX の VAE は SD 系と互換性がなく、公式の ae.safetensors を使います。CLIP は T5XXL と CLIP-L の 2 本が必要です。どちらも black-forest-labs の Hugging Face リポジトリから入手できます。SD 用の VAE を誤って使うと生成物が真っ黒や真っ白になるため、配置先のパスを必ず確認してください。

ComfyUI ワークフローの組み方

ノード接続の手順

ノードを次の順序で接続します。

① 入力画像の読み込みと VAE エンコード

Load Image → VAE Encode → [latent]

img2img の起点となるラテントを作ります。VAE Encode の VAE 入力には VAE Loader(ae.safetensors をロード)の出力を繋ぎます。

② モデルとテキストエンコーダーのロード

UNETLoader ──────────────────────────────────────→ [model]
DualCLIPLoader (t5xxl + clip_l) → CLIPTextEncode(正)→ [cond+]
                                 → CLIPTextEncode(負)→ [cond-]

FLUX Schnell は CFG を使わない蒸留モデルです。KSampler の cfg は 1.0 に固定し、ネガティブプロンプトは空文字で構いません。

③ ControlNet の接続

Canny 前処理済み画像 ─→ ControlNetApplyAdvanced → [cond]
                               ↑
                   ControlNetLoader(flux-canny-v3)

ControlNetApplyAdvanced ノードの主な設定値:

パラメータ 推奨初期値 効果
strength 0.7 高いほど輪郭への追従が強くなる
start_percent 0.0 ControlNet を適用し始めるステップの割合
end_percent 1.0 ControlNet を適用し終わるステップの割合

strength が高すぎると輪郭が過補正されてアーティファクトが出やすくなります。0.6〜0.8 の範囲が出発点として挙げられることが多いようです。

④ サンプラーと出力

KSampler → VAE Decode → Save Image

KSampler の推奨設定

パラメータ 推奨値 補足
steps 4 Schnell の標準ステップ数
cfg 1.0 CFG 非対応モデルのため固定
sampler_name euler または dpmpp_2m
scheduler simple FLUX 向けの標準スケジューラー
denoise 0.60〜0.75 元画像の保持量と変化量のバランス

denoise は 0.65 前後を出発点の目安として、元画像をより保持したければ下げ、大きく変化させたければ上げて調整します。より細かい制御が必要な場合は ModelSamplingFlux や FluxGuidance ノードを組み合わせた上級ワークフローも存在しますが、まずこの構成で動作を確認してから移行することをお勧めします。

Canny エッジの前処理

ControlNet に渡すエッジ画像は事前に Canny 処理が必要です。ComfyUI Manager から comfyui_controlnet_aux をインストールすると Canny Edge ノードが使えるようになります。

Load Image → Canny Edge → Preview Image(確認用)
                  ↓
         ControlNetApplyAdvanced へ接続

Canny ノードのしきい値パラメータ:

パラメータ 意味 推奨初期値
low_threshold エッジ検出の下限しきい値 100
high_threshold エッジ検出の上限しきい値 200

しきい値を下げると細かい輪郭まで検出しますが、ノイジーになります。上げると主要な輪郭だけが残りますが、ControlNet の拘束力が弱まります。Preview Image ノードで Canny 結果を表示しながら調整してください。最適値は画像の内容によって異なります。

VRAM の目安とよくあるつまずき

FLUX Schnell を fp8 量子化で動かした場合、モデルのロードだけで 7〜9GB 前後になることが多いとされています。ControlNet モデルを加えるとさらに 1〜2GB ほど増える可能性があります。実際の消費量は解像度・バッチサイズ・ComfyUI の設定によって変動するため、実環境での確認が必要です。

12GB VRAM 環境では 1024×1024 が実用的な上限となることが多く、1024×1536 などの縦長サイズはメモリ不足になる場合があります。GGUF 形式(Q4_K_M など)を使う場合は ComfyUI-GGUF カスタムノードを導入し、UNETLoader の代わりに UnetLoaderGGUF ノードを使います。RTX 3060 での FLUX Schnell の基本的な速度感については別の記事でまとめています。

よくあるつまずきをまとめます。

  • 「Invalid ControlNet」エラー: SD 系の ControlNet を誤ってロードしている可能性があります。FLUX 専用モデルを使っているか確認してください。
  • 生成物が真っ黒または真っ白になる: VAE が SD 系のものになっていることが多いです。ae.safetensors を使っているか確認してください。
  • Canny 画像がそのまま出力される: ControlNet の接続先が誤っているノード接続ミスが疑われます。ControlNetApplyAdvanced の image 入力に Canny 処理済み画像が繋がっているかを辿り直してください。

まとめ

FLUX Schnell + ControlNet Canny の img2img ワークフローで最初に押さえるポイントは 3 つです。

  1. ControlNet モデルは FLUX 専用を使う(SD 系とは非互換)
  2. KSampler の cfg は 1.0 固定、steps は 4
  3. denoise は 0.65 前後を目安に、ControlNet strength と組み合わせて微調整する

まず 512×512 の小さい画像でワークフローの動作を確認してから解像度を上げていくことをお勧めします。動作を確認できたら ComfyUI のワークフローを JSON として保存しておくと、次回以降の試行がスムーズになります。

この記事で触れたもの

よくある質問

FLUX Schnell の ControlNet に SD 系のモデルを流用できますか?

流用できません。FLUX と Stable Diffusion はアーキテクチャが根本的に異なるため、ControlNet モデルも FLUX 専用のものが必要です。XLabs-AI や InstantX が Hugging Face で配布しているモデルを使ってください。

ComfyUI で FLUX Schnell の img2img に適した denoise 値はどのくらいですか?

0.65 前後から試し始めるのが現実的です。元画像をより保持したければ下げ、大きく変化させたければ上げます。Schnell の 4 ステップ生成との組み合わせでは、ControlNet strength も同時に調整して好みのバランスを探ってください。

RTX 3060(12GB VRAM)で FLUX Schnell + ControlNet Canny は動きますか?

fp8 量子化モデルであれば動作する可能性が高いですが、ControlNet を加えると VRAM が 8〜10GB 以上になることがあります。1024×1024 程度の解像度が実用的な上限となることが多く、実際の消費量は環境によって異なります。