ComfyUIのimg2img・inpaintのやり方【2026年】マスクで部分修正

img2imgとは、手持ちの画像を出発点にして描き直す方法で、ComfyUIではKSamplerの「denoise」を1より小さくして使う。inpaintとは、マスクで塗った部分だけを描き直す方法で、公式の例では「VAE Encode (for Inpainting)」ノードとinpaint専用モデルを、denoise 1.0で組み合わせる。元の形を残したまま軽く直したいときは「Set Latent Noise Mask」でdenoiseを下げる。より自然に直したいならFlux.1 Fill dev、マスクを描かずに指示文で直したいならFLUX.1 KontextやQwen-Image-Editという選択肢もある。本記事では、ComfyUI公式のチュートリアルとワークフロー、本体のコードで確認できたことだけで、手順と失敗しやすい点を整理する。

この記事の前提:仕様はすべて2026年11月7日に、ComfyUI公式ドキュメント(docs.comfy.org)、公式のワークフロー例(Comfy-Org/example_workflows)、ComfyUI本体のコード(v0.44.0、2026年11月4日公開)で確認した。数値の初期値は本体のコード、例の設定値は公式ワークフローの画像に埋め込まれた値から読み取ったもの。手順は公式チュートリアルの記載で、生成結果の良し悪しはモデルと画像で大きく変わる。

この記事でわかること

  • img2img・inpaint・outpaintの違い(図解)と、それぞれの基本の手順
  • denoiseの意味と、公式例の設定値(img2imgは0.87、inpaintは1.0)
  • マスクエディタの開き方・道具と、マスクを渡す2つのノードの違い(図解)
  • Flux.1 Fill dev・FLUX.1 Kontext・Qwen-Image-Editの選び方とライセンス
  • 「変わらない」「灰色になる」「境目が目立つ」ときの対処
ComfyUIを使った画像・動画制作の進め方を相談したい方へ無料で相談する →
目次

1. img2img・inpaint・outpaintとは

3つとも「元の画像」を出発点にして描き直す方法で、違いは描き直す範囲だ。

img2imgは画像全体をdenoise1未満で描き直す、inpaintはマスクした所だけ描き直す、outpaintはPad Image for Outpaintingでキャンバスを広げて外側に描き足す
図1:3つの違いは「どこを描き直すか」
方法描き直す範囲主な用途(公式チュートリアルの例)中心になるノード
img2img画像全体写真を絵画風にする、線画を写実的にする、古い写真の修復・着色Load Image、VAE Encode、KSampler(denoise)
inpaintマスクで塗った部分だけ不要な物を消す、崩れた手などを直す、服の質感や表情を変えるマスクエディタ、VAE Encode (for Inpainting)
outpaintキャンバスの外側背景を広げる、構図を整える、要素を描き足すPad Image for Outpainting

出典:Image to Image/Inpainting/Outpainting。公式はoutpaintを「マスクの作り方が違うだけで、中身はinpaintのワークフロー」と説明している。

2. img2imgのやり方

公式のワークフロー画像を読み込み、モデルと元画像を選んで実行するだけだ。仕上がりはdenoiseで決まる。公式チュートリアルの手順は次のとおり(Image to Image)。

  1. モデル v1-5-pruned-emaonly-fp16.safetensors(Stable Diffusion 1.5)をダウンロードし、ComfyUI/models/checkpoints に置く。
  2. 公式ページのワークフロー画像をComfyUIの画面にドラッグする(メニューの「Workflows → Open」でも開ける)。
  3. 「Load Checkpoint」ノードで上のモデルを選ぶ。
  4. 「Load Image」ノードに、描き直したい画像をアップロードする。
  5. プロンプトを書き換え、「Queue」を押すか Ctrl + Enter(Macは Cmd + Enter)で実行する。

画像の中にワークフローの情報が埋め込まれているので、ドラッグするだけでノードの組み方まで再現される。仕組みと注意点はComfyUIワークフローの保存・読み込み方法で解説している。自分で組む場合は、テキストから画像を作る基本の形の「Empty Latent Image」を外し、「Load Image → VAE Encode」の出力をKSamplerの latent_image につなぐ。

denoiseの決め方

denoiseとは、元の画像にどれだけノイズを加えてから描き直すかを決める値で、0〜1の範囲で設定する(初期値は1.0)。公式の説明は次のとおりだ。

  • 小さいほど元の画像に近く、大きいほど元の画像から離れる。
  • 1.0にすると、元の画像の特徴はすべて失われる。「Empty Latent Image」から作るのと同じになる。
  • 公式のimg2imgの例は、denoise 0.87、steps 15、cfg 8で設定されている(公式ワークフロー画像に埋め込まれた値)。

決め方の手順としては、公式例の0.87で1枚出し、元の画像に近づけたければ0.1ずつ下げて同じシードで比べるのが分かりやすい。公式チュートリアルも、denoiseを1から0へ少しずつ変えて違いを見る練習を勧めている。

denoiseを下げても計算量は減らない:公式によると、steps 20・denoise 0.5のとき、ComfyUIは40ステップ分の予定を作り、そのうちノイズの少ない後半20ステップを計算する。全体と同じ細かさで後半だけを計算したいなら、stepsを「全体のステップ数 × denoise」(この例なら10)にする。

3. inpaintのやり方

inpaint専用モデルを使い、元画像にマスクを付けて実行する。公式の例ではdenoiseは1.0だ。公式チュートリアルの手順は次のとおり(Inpainting)。

  1. inpaint専用モデル 512-inpainting-ema.safetensors(Stable Diffusion 2.1系)をダウンロードし、ComfyUI/models/checkpoints に置く。
  2. 公式ページのワークフロー画像をComfyUIにドラッグする。
  3. 「Load Checkpoint」で上のモデルを選ぶ。
  4. 「Load Image」に画像をアップロードする。公式の素材画像には、直す範囲が透明度(アルファチャンネル)として最初から入っている。
  5. 自分の画像なら、次の手順でマスクを描く。
  6. 「Queue」を押して実行する。

公式のワークフローの設定は、VAE Encode (for Inpainting) の grow_mask_by が6、KSamplerのdenoiseが1.0、steps 20、cfg 8だ。公式チュートリアルは、通常のモデル(v1-5-pruned-emaonly-fp16)と比べて、inpaint専用モデルのほうがつなぎ目が自然になると説明している。

マスクエディタでマスクを描く

マスクとは、描き直す範囲を白黒で示した画像のこと。ComfyUIには「マスクエディタ」が組み込まれていて、外部の画像編集ソフトは要らない(Mask Editor)。開き方は3つある。

  1. 「Load Image」ノードを選び、ノードの上に出る道具バーのマスクのアイコンを押す。
  2. 画像のプレビューにマウスを乗せ、左上に出る「Edit or mask image」を押す。
  3. 「Load Image」ノードを右クリックし、「Open in Mask Editor」を選ぶ。
道具使い方
Mask Penドラッグしてマスクを塗る。基本の道具
Paint Pen画像そのもの(色の層)に直接描く。描き直す前の下描きに使える
Eraser塗りすぎたマスクや描いた色を消す
Paint Bucket色の近い、つながった範囲をまとめてマスクにする
Color Select指定した色に近い画素をすべてマスクにする

ブラシは太さ1〜250ピクセル、硬さ0〜1などを調整できる。塗り終えたら上部のバーの「Save」を押す。保存しないで閉じるとマスクは反映されない。生成した結果をさらに直したいときは、「Save Image」ノードを右クリックして「Copy (Clipspace)」、「Load Image」ノードを右クリックして「Paste (Clipspace)」で画像を移し、もう一度マスクを描く(公式チュートリアルの手順)。

4. マスクの渡し方:2つのノードの違い

「VAE Encode (for Inpainting)」はマスクの中の元の絵を消してから描き、「Set Latent Noise Mask」は元の絵を残したまま描き直す。この違いを知らないと、「灰色になる」「変わらない」でつまずく。

VAE Encode (for Inpainting)はマスクの中の画素を灰色に置き換えてから潜在画像にするので元の絵は残らず、公式例はdenoise1.0とinpaint専用モデル。Set Latent Noise MaskはVAE Encodeした潜在画像にマスクだけを付けるので元の絵が残り、denoiseを下げて手直しできる
図2:マスクを渡す2つのノード。違いはマスクの中の元の絵を残すかどうか
ノード中でしていること(本体のコード)向いている使い方
VAE Encode (for Inpainting)マスクの中の画素を灰色(中間の値)に置き換えてから潜在画像にし、マスクを付ける。grow_mask_by(初期値6、0〜64)だけマスクを外側に広げるinpaint専用モデルで、denoise 1.0で描き直す(公式例の形)
Set Latent Noise MaskVAE Encodeした潜在画像に、マスクの情報だけを付ける。元の絵はそのまま残る通常のモデルで、denoiseを下げて形を保ったまま手直しする
InpaintModelConditioning画像とマスクを条件(conditioning)として渡し、noise_mask(初期値オン)でマスクの中だけを描き直すFlux.1 Fill devなど、条件として画像を受け取るモデル

出典:ComfyUI本体の nodes.py(v0.44.0)、Inpainting。InpaintModelConditioningの noise_mask には、コード上の説明として「モデルによっては結果が良くなるが、まったく動かなくなることもある」と書かれている。

よくある失敗:VAE Encode (for Inpainting) でdenoiseを0.5などに下げると、マスクの中が灰色っぽく残りやすい。コードを見ると、マスクの中を灰色に置き換えてからエンコードしているため、下げた分だけその灰色が残るという動きになる(公式チュートリアルにこの説明はなく、コードから読み取れる挙動)。元の絵を残したいなら、Set Latent Noise Maskに替える。

5. outpaint(画像の外側を描き足す)のやり方

「Pad Image for Outpainting」でキャンバスを広げ、広げた部分をマスクにしてinpaintする。公式チュートリアルの手順は次のとおり(Outpainting)。

  1. inpaintと同じ 512-inpainting-ema.safetensors を ComfyUI/models/checkpoints に置く。
  2. 公式ページのワークフロー画像をComfyUIにドラッグする。
  3. 「Load Checkpoint」でモデルを選び、「Load Image」で広げたい画像をアップロードする。
  4. 「Pad Image for Outpainting」で、上下左右に広げる幅を決める。
  5. 「Queue」で実行する。
設定意味公式例の値
left・top・right・bottomそれぞれの方向に広げる幅(8ピクセル単位)左40・上40・右40・下128
feathering元の画像と広げた部分の境目をなだらかにする幅(初期値40)10
grow_mask_by(VAE Encode (for Inpainting))マスクを外側に広げる幅10
denoise(KSampler)描き直しの強さ1.0

例の値は公式ワークフロー画像に埋め込まれた設定、初期値と単位は本体のコードで確認した。

6. もっと自然に直したいとき:Flux系・編集モデルの選び方

マスクで範囲を決めて直すならFlux.1 Fill dev、マスクを描かずに指示文で直すならFLUX.1 Kontext devかQwen-Image-Edit-2511を使う。どれも公式のワークフローがテンプレートにある。テンプレートは左のサイドバーの「Templates」か、メニューの「Workflow → Browse Workflow Templates」で開く(Templates)。

モデル直し方主なファイル(置き場所)ライセンス
Flux.1 Fill devマスクでinpaint・outpaintflux1-fill-dev(diffusion_models)、clip_l と t5xxl(text_encoders)、ae(vae)FLUX.1 [dev] Non-Commercial License
FLUX.1 Kontext devマスクなし。指示文で部分を変えるflux1-dev-kontext_fp8_scaled(diffusion_models)、clip_l と t5xxl、aeFLUX.1 [dev] Non-Commercial License
Qwen-Image-Edit-2511マスクなし。指示文や参考画像で変えるqwen_image_edit_2511_bf16(diffusion_models)、qwen_2.5_vl_7b_fp8_scaled(text_encoders)、qwen_image_vae(vae)Apache 2.0

出典:Flux.1 fill dev Example/FLUX.1 Kontext Dev/Qwen-Image-Edit-2511、ライセンスはHugging Faceの各モデルページの表示。Flux.1 Fill devは、ダウンロード前にHugging Faceで利用規約への同意が必要だ。モデルの置き場所の基本はComfyUIモデルの置き場所・LoRAの使い方で解説している。

FLUX.1 Kontext devのプロンプトは英語のみ対応と公式に書かれている。公式のコツは、変えたいものを具体的に書き、変えないものを明示することだ(例:Change the background to a beach while keeping the person in the exact same position, scale, and pose)。

商用利用の注意:Black Forest LabsのFLUX [dev] Non-Commercial License(v2.0、2025年11月25日改定)は、生成した画像(Output)は商用を含めて使えるとする一方、モデル自体の利用は非商用の目的に限り、収益を目的とする活動は非商用に当たらないとしている。業務でFlux.1 Fill dev・Kontext devを使うなら、同社の商用ライセンスが必要かを確認する(BFL Non-Commercial License)。生成物の権利の考え方はComfyUIの使い方の商用利用の章も参照してほしい。

7. うまくいかないときの対処

原因の多くは「denoiseの値」と「マスクを渡すノードの選び方」だ。

症状考えられる原因対処
出てきた画像が元とほぼ同じdenoiseが低すぎる/マスクが保存されていないdenoiseを上げる。マスクエディタで「Save」を押したか確かめる
元の画像とまったく違う絵になるimg2imgでdenoiseが1.0のまま1.0は元の特徴がすべて失われる設定(公式)。0.87などに下げる
マスクの中が灰色っぽい、ぼやけるVAE Encode (for Inpainting) でdenoiseを下げているdenoiseを1.0にするか、Set Latent Noise Maskに替える(4章)
境目がくっきり残るマスクの広げ幅が足りない、通常のモデルを使っているgrow_mask_by や feathering を上げる。inpaint専用モデルやFlux.1 Fill devを使う
出力の端が数ピクセル切れるVAE Encode (for Inpainting) は縦横をVAEの縮小率の倍数にそろえるため、中央で切り取る(本体のコード)元画像の縦横を8の倍数などにそろえてから読み込む
テンプレートが見つからない、ノードが足りないComfyUIが古い、起動時にノードの読み込みに失敗しているComfyUIを更新する(公式の案内)。カスタムノードならComfyUI Managerで入れる
ローダーのノードが赤いモデルのファイルがない、置き場所が違う右側の「Errors」タブの「Missing Models」から「Download」を押す(Desktop)。手動なら同じ名前で正しいフォルダに置く

赤いノード・メモリ不足など、全般のエラーはComfyUIエラーの直し方にまとめている。Macで重いモデルが遅い場合はComfyUIをMacで使う方法を参照してほしい。

8. 欠点・制限事項(わからないこと)

  • 用途別の「最適なdenoise」は公式に示されていない。公式が示すのは「小さいほど元に近い」という性質と例の値だけで、画像とモデルごとに試す必要がある。
  • 公式チュートリアルの基本の例は古いモデル(SD1.5、SD2.1系のinpaint専用モデル)だ。仕組みを学ぶには向くが、画質はFlux系などの新しいモデルに及ばないことが多い。
  • Set Latent Noise Maskの使い分けは公式チュートリアルに説明がない。本記事の4章の説明は本体のコードから読み取ったもの。
  • 新しいモデルほど必要なメモリが大きい。Flux系やQwen-Image-Editを手元のGPUで動かせるかは、モデルとファイルの種類(fp8など)で変わり、公式に一律の目安はない。
  • Flux.1 [dev]系の業務利用の条件は、ライセンス本文と同社の商用ライセンスで確認が必要で、本記事では判断できない。

9. よくある質問

img2imgのdenoiseはいくつにすればよいですか?

決まった正解はない。公式の説明では、denoiseが小さいほど元の画像に近く、1.0にすると元の特徴はすべて失われる。公式のimg2imgの例は0.87なので、まずその値で1枚出し、元に近づけたければ0.1ずつ下げて同じシードで比べるとよい。

inpaintには専用のモデルが必要ですか?

必須ではないが、公式チュートリアルはinpaint専用モデル(512-inpainting-ema)のほうが通常のモデルよりつなぎ目が自然になると説明している。通常のモデルで直すなら、Set Latent Noise Maskでdenoiseを下げる方法がある。

ComfyUIでマスクはどうやって描きますか?

組み込みのマスクエディタを使う。Load Imageノードを右クリックしてOpen in Mask Editorを選ぶなど3つの開き方があり、Mask Penで塗り、終わったらSaveを押す。透明度(アルファチャンネル)付きの画像を読み込めば、透明な部分がそのままマスクになる。

FLUX.1 Kontextとinpaintはどう使い分けますか?

直す範囲をピクセル単位で決めたいならマスクを使うinpaint(Flux.1 Fill devなど)、範囲を描かずに「背景を海辺に変える」のように指示文で直したいならFLUX.1 Kontext devを使う。Kontext devのプロンプトは英語のみ対応と公式に書かれている。

inpaintで直した画像は商用利用できますか?

使ったモデルのライセンスで決まる。たとえばQwen-Image-Edit-2511はApache 2.0。FLUX.1 [dev]系は、生成した画像は商用を含めて使えるとする一方、モデル自体は非商用の目的に限られ、収益目的の活動は非商用に当たらないとしている。業務で使う前に各モデルのライセンスを確認する。

まとめ

ComfyUIのimg2imgは、denoiseを1より小さくして元の画像から描き直す方法で、公式例は0.87だ。inpaintは、マスクエディタで塗った部分だけを描き直す方法で、公式例はVAE Encode (for Inpainting)とinpaint専用モデル、denoise 1.0の組み合わせ。元の形を残して軽く直すならSet Latent Noise Maskに替える。より自然に直したいならFlux.1 Fill dev、指示文で直すならFLUX.1 Kontext devやQwen-Image-Edit-2511があるが、業務で使う前にライセンスを確かめる。

今すぐできるアクション:

  1. 今日:公式のimg2imgのワークフロー画像を読み込み、同じシードでdenoiseを0.87・0.7・0.5と変えて、元の画像からの離れ方を比べる。
  2. 今週:公式のinpaintのワークフローで、マスクエディタを使って1か所を直す。VAE Encode (for Inpainting) とSet Latent Noise Maskを入れ替えて、違いを確かめる。
  3. 来月:業務の画像(バナーの背景差し替えなど)で、Flux.1 Fill devかQwen-Image-Edit-2511のテンプレートを試し、ライセンスの条件を社内で確認したうえで使い方を決める。

本記事の内容は、2026年11月7日にComfyUI公式ドキュメント(docs.comfy.org)、公式ワークフロー例、ComfyUI本体のコード(v0.44.0)、各モデルの配布ページで確認したもの。ノード名・初期値・テンプレートは更新で変わることがある。ライセンスの解釈を保証するものではないため、商用利用の可否は各ライセンスの原文と提供元で確認してほしい。

関連記事

出典

この記事を書いた人

佐藤祐介(株式会社LIFRELL 代表取締役)

佐藤 祐介

株式会社LIFRELL 代表取締役

業界歴15年マーケティング支援 累計500社以上うちD2C支援 150社以上担当商材 300以上

オプト、電通デジタルを経て、2018年に株式会社LIFRELLを設立。広告運用、動画・バナー制作、Webメディアの運営にAIを実務で使っています。LIF Techでは、その現場で試したこと・失敗したこと・数字で確かめたことを公開しています。

プロフィールを見る書いた記事の一覧相談する

生成AIを使った広告クリエイティブ制作の「進め方」を相談できます

ComfyUIなどの画像・動画生成AIを、広告バナーや動画、記事LPの制作にどう組み込むか。ツールの選び方、社内で回す手順、商用利用の確認の進め方まで、広告運用と制作の現場で使ってきた立場からご相談をお受けします。まずは無料でご相談ください。

無料で相談する

運営:株式会社LIFRELL

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次