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 つです。
- ControlNet モデルは FLUX 専用を使う(SD 系とは非互換)
- KSampler の cfg は 1.0 固定、steps は 4
- 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 程度の解像度が実用的な上限となることが多く、実際の消費量は環境によって異なります。