> ## Documentation Index
> Fetch the complete documentation index at: https://dripart-docs-recommend-assets-api.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ComfyUI 局部再描画ワークフロー

> このガイドでは、ComfyUIにおける局部再描画（インペインティング）ワークフローについて紹介し、実際のインペインティング例を解説するとともに、マスクエディタの使用方法などについても説明します。

この記事では、AI画像生成における「局部再描画（インペインティング）」の概念を紹介し、ComfyUIでインペインティングワークフローを構築する手順を解説します。以下のような内容をカバーします：

* インペインティングワークフローを用いた画像の編集方法
* ComfyUIのマスクエディタを用いたマスク作成方法
* `VAE Encoder (for Inpainting)` ノード

## 局部再描画（インペインティング）とは

AIによる画像生成において、全体としては満足できる画像が得られたものの、不要な要素や誤った生成結果（例：不自然な身体部位など）が含まれている場合があります。このような場合、画像全体を再生成すると、全く異なる結果になってしまう可能性があるため、特定の領域のみを修正する「局部再描画（インペインティング）」が非常に有効です。

これは、**画家（AIモデル）** に絵を描かせた後、その完成した作品の**一部だけを修正したい**という状況に似ています。つまり、私たちは画家に対して、**どの領域を修正すべきか（マスク）** を明示し、その後、その指示に基づいて**再び描き直してもらう（再描画／インペインティング）** というプロセスになります。

代表的なインペインティングの活用シーンには以下のようなものがあります：

* **欠陥修復**：不要な物体の除去、AI生成による不自然な身体部位の修正など
* **ディテール最適化**：局所的な要素の精密な調整（例：衣装の質感変更、表情の微調整）
* その他さまざまな応用シーン

## ComfyUI 局部再描画ワークフローの実例

### モデルおよびリソースの準備

#### 1. モデルのインストール

以下のファイルをダウンロードし、`ComfyUI/models/checkpoints` フォルダに保存してください：\
[512-inpainting-ema.safetensors](https://huggingface.co/Comfy-Org/stable_diffusion_2.1_repackaged/resolve/main/512-inpainting-ema.safetensors)

#### 2. 局部再描画用の入力画像

以下の画像をダウンロードし、本チュートリアルの入力画像として使用します：

<img src="https://mintcdn.com/dripart-docs-recommend-assets-api/6PZTulxPduBzJ-FN/images/tutorial/basic/inpaint/input.png?fit=max&auto=format&n=6PZTulxPduBzJ-FN&q=85&s=90f90b47804459b47705ae6053243581" alt="ComfyUI 局部再描画入力画像" width="1024" height="1024" data-path="images/tutorial/basic/inpaint/input.png" />

<Note>この画像には既にアルファチャンネル（透過マスク）が含まれているため、マスクを手動で描く必要はありません。ただし、本チュートリアルでは後ほどマスクエディタを用いたマスク作成方法も解説します。</Note>

#### 3. 局部再描画ワークフロー

以下の画像をダウンロードし、**ComfyUIのキャンバス上にドラッグ＆ドロップ**することで、ワークフローを読み込みます：

![ComfyUI 局部再描画ワークフロー](https://raw.githubusercontent.com/Comfy-Org/example_workflows/refs/heads/main/image/basic/sd1.5_inpaint.png)

<Tip>
  メタデータにワークフローJSONを含む画像は、ComfyUIへ直接ドラッグ＆ドロップするか、メニューから `Workflows` → `Open (ctrl+o)` を選択して読み込むことができます。
</Tip>

### ComfyUI 局部再描画ワークフローの解説

下図の手順に従って、ワークフローが正しく実行されるよう確認してください。

<img src="https://mintcdn.com/dripart-docs-recommend-assets-api/6PZTulxPduBzJ-FN/images/tutorial/basic/inpaint/inpaint_workflow.png?fit=max&auto=format&n=6PZTulxPduBzJ-FN&q=85&s=5f605ad8dd0ab8f7bc3373f6ad424525" alt="ComfyUI 局部再描画ワークフロー" width="2000" height="1108" data-path="images/tutorial/basic/inpaint/inpaint_workflow.png" />

1. `Load Checkpoint` ノードが `512-inpainting-ema.safetensors` を正しく読み込んでいることを確認します
2. 入力画像を `Load Image` ノードにアップロードします
3. `Queue` ボタンをクリックするか、`Ctrl + Enter` キーで画像生成を実行します

比較のために、[v1-5-pruned-emaonly-fp16.safetensors](https://huggingface.co/Comfy-Org/stable-diffusion-v1-5-archive/blob/main/v1-5-pruned-emaonly-fp16.safetensors) モデルを用いたインペインティング結果を以下に示します：

<img src="https://mintcdn.com/dripart-docs-recommend-assets-api/6PZTulxPduBzJ-FN/images/tutorial/basic/inpaint/inpaint_sd1.5_pruned_emaonly.png?fit=max&auto=format&n=6PZTulxPduBzJ-FN&q=85&s=7c9016982c40a5e9c6bb812e771895d9" alt="SD1.5 インペインティング結果" width="1024" height="1024" data-path="images/tutorial/basic/inpaint/inpaint_sd1.5_pruned_emaonly.png" />

一方、[512-inpainting-ema.safetensors](https://huggingface.co/Comfy-Org/stable_diffusion_2.1_repackaged/resolve/main/512-inpainting-ema.safetensors) モデルを用いた結果は、より高品質なインペインティング効果と、自然な境界のトランジションが得られます。\
これは、当該モデルが**インペインティング専用に設計・最適化**されているためであり、生成領域をより正確に制御でき、結果として優れた再描画品質を実現します。

先ほどご紹介した「画家」というアナロジーを思い出してください。異なるモデルは、それぞれ得意分野や限界を持つ「画家」のような存在です。適切なモデルを選択することで、より理想的な生成結果を得ることが可能になります。

さらに良い結果を得るためのアプローチとして、以下の方法を試すことができます：

1. プロンプト（正のプロンプト／負のプロンプト）をより具体的な記述に変更する
2. `KSampler` のシード値を変えて複数回実行し、異なる生成結果を試す
3. 本チュートリアルで学ぶマスクエディタを活用し、一度生成された画像を再度インペインティングして、最終的に満足のいく結果を得る

次に、**マスクエディタ（Mask Editor）** の使い方について学びます。今回の入力画像にはすでに `alpha` 透過チャンネル（編集対象領域）が含まれているため、マスクの手動描画は不要ですが、実際の運用ではマスクエディタを頻繁に用いてマスクを作成することになります。

### マスクエディタの使用方法

まず、`Save Image` ノードを右クリックし、「`Copy(Clipspace)`」を選択して、現在の画像をクリップボードにコピーします：

<img src="https://mintcdn.com/dripart-docs-recommend-assets-api/6PZTulxPduBzJ-FN/images/tutorial/basic/inpaint/inpaint_copy_clipspace.png?fit=max&auto=format&n=6PZTulxPduBzJ-FN&q=85&s=0f61887d8a05274a704d18c35d678f72" alt="クリップボードへの画像コピー" width="751" height="1112" data-path="images/tutorial/basic/inpaint/inpaint_copy_clipspace.png" />

次に、**`Load Image` ノード**を右クリックし、「`Paste(Clipspace)`」を選択して、クリップボードから画像を貼り付けます：

<img src="https://mintcdn.com/dripart-docs-recommend-assets-api/6PZTulxPduBzJ-FN/images/tutorial/basic/inpaint/inpaint_paste_clipspace.png?fit=max&auto=format&n=6PZTulxPduBzJ-FN&q=85&s=4ebc4ec7bbafcb3996888789f7103020" alt="画像の貼り付け" width="750" height="947" data-path="images/tutorial/basic/inpaint/inpaint_paste_clipspace.png" />

さらに、**`Load Image` ノード**をもう一度右クリックし、「`Open in MaskEditor`」を選択して、マスクエディタを開きます：

<img src="https://mintcdn.com/dripart-docs-recommend-assets-api/6PZTulxPduBzJ-FN/images/tutorial/basic/inpaint/inpaint_open_in_maskeditor.jpg?fit=max&auto=format&n=6PZTulxPduBzJ-FN&q=85&s=935a47afadbbcf255f2115c7abef7cfb" alt="マスクエディタの起動" width="894" height="1000" data-path="images/tutorial/basic/inpaint/inpaint_open_in_maskeditor.jpg" />

<img src="https://mintcdn.com/dripart-docs-recommend-assets-api/6PZTulxPduBzJ-FN/images/tutorial/basic/inpaint/inpaint-maskeditor.gif?s=36495f18479c1d8ce245ab82cf1964b3" alt="マスクエディタの動作例" width="960" height="720" data-path="images/tutorial/basic/inpaint/inpaint-maskeditor.gif" />

1. 右側パネルでブラシの各種パラメータ（サイズ・不透明度など）を調整できます
2. 間違えた部分は消しゴムツールで修正可能です
3. 編集が完了したら `Save` ボタンをクリックしてマスクを保存します

このように作成したマスクは、`VAE Encoder (for Inpainting)` ノードへの `mask` 入力として使用され、エンコード処理に組み込まれます。

その後、プロンプトを調整して再生成を繰り返し、満足のいく結果が得られるまで試行してください。

## `VAE Encoder (for Inpainting)` ノード

本ワークフローを [テキスト→画像（Text-to-Image）](/tutorials/basic/text-to-image) や [画像→画像（Image-to-Image）](/tutorials/basic/image-to-image) のワークフローと比較すると、主な違いは VAE 部分の条件入力にあることに気づくでしょう。\
本ワークフローでは、**インペインティング専用に設計された `VAE Encoder (for Inpainting)` ノード** を使用しており、これにより生成領域をより正確に制御し、高品質な再描画結果を得ることができます。

<img src="https://mintcdn.com/dripart-docs-recommend-assets-api/zDHpPUeID0CgytL1/images/comfy_core/latent/inpaint/vae_encode_for_inpainting.jpg?fit=max&auto=format&n=zDHpPUeID0CgytL1&q=85&s=109f9bb5ae04169250674ba636f02d6a" alt="VAE Encoder (for Inpainting) ノード" width="854" height="440" data-path="images/comfy_core/latent/inpaint/vae_encode_for_inpainting.jpg" />

**入力パラメータ**

| パラメータ名         | 機能                                                                            |
| -------------- | ----------------------------------------------------------------------------- |
| `pixels`       | 潜在空間（latent space）へエンコードする対象の入力画像。                                            |
| `vae`          | 画像をピクセル空間から潜在空間へエンコードするための VAE モデル。                                           |
| `mask`         | どの領域を修正すべきかを指定する画像マスク。                                                        |
| `grow_mask_by` | 元のマスクを外側へ拡張するピクセル数。これにより、再描画領域と元画像との間に滑らかなトランジション領域を確保し、境界のギザギザ（ハードエッジ）を防ぎます。 |

**出力パラメータ**

| パラメータ名   | 機能                          |
| -------- | --------------------------- |
| `latent` | VAE によって潜在空間へエンコードされた画像データ。 |
