[ComfyMaster20] ComfyUIの高度インペイント技術で自然な髪型変更を実現!#ComfyUI #InpaintModelConditioning
「髪型を変えてみたい」と一度は思ったことがあるでしょう。そんな願望を叶えてこそが、画像生成AI技術です。従来のインペイント処理では、髪型の変更など精密な修正は難しいと感じたことがあるかもしれません。しかし、今回はその限界を突破します!付録としてComfyUIワークフローと男性ヘアカタログプロンプト集もつけちゃいます!
こんにちわ、AICU media編集部です。
「ComfyUI マスターガイド」も、ついに第20回目になります。
以前にimage-to-image (i2i) でのインペイントについて説明しました。
今回は、i2iでのインペイントをさらに掘り下げて、基本的なインペイントワークフローでは実現できなかった高精度のインペイントを行う方法を解説します。
i2i編の初回はこちら
1. 今回の目的
今回は、i2i(image-to-image)で人物の髪形を変更します。以前の記事で説明したインペイントは、ComfyUI公式が配布しているのインペイントのサンプルワークフローに従った、基本的なインペイント処理でした。そのため、効果的なインペイントが難しい状態でした。今回は、より効果的なインペイントを実施します。
具体的には、InpaintModelConditioningノードを使用します。InpaintModelConditioningノードは、効果的なインペイントをするための前処理を行います。理論的な解説も伴った中級者向け記事です!
2. InpaintModelConditioningノードの解説
InpaintModelConditioningノードは、画像補完のために必要な「条件付け」と呼ばれる情報を管理し、補完結果を自然に仕上げるために使われる重要な技術です。具体的には、欠損部分の補完に使う画像データや、その部分がどこなのかを示すマスクデータを取り扱い、モデルが適切に補完できるようにガイドします。
条件付け(Conditioning)とは?
まず「条件付け」とは、画像補完を行う際にモデルがどのように動作すべきかを決めるための「指示書」のようなものです。条件付けは、モデルに「こういう結果にしてほしい」というガイドラインを提供します。
例えば、以下のような状況を考えます。
Positive(ポジティブ)条件付け: 補完したい特徴やスタイルを指定するもの
Negative(ネガティブ)条件付け: 生成したくない特徴を避けるためのもの
このような条件付けがあることで、モデルは「この部分はこう補完して、こういう風にはしないでね」という具体的な方向性を得ることができます。
InpaintModelConditioningの動作の流れ
InpaintModelConditioningノードの動作は以下のようなステップで進みます。
画像サイズの調整: 画像が正しく補完されるためには、特定のサイズ(8の倍数など)に合わせる必要があります。画像のサイズを調整することで、モデルが効率的に処理できるようにします。
マスクのリサイズと滑らか化: 補完対象の部分を示すマスクは、画像と同じサイズでなければいけません。このため、マスクのサイズを画像に合わせてリサイズします。さらに、リサイズ時に境界を滑らかにする処理を加えることで、補完部分と元の画像とのつながりを自然に見せます。これにより、補完がなめらかに行われ、境界が目立ちにくくなります。
条件付けデータの更新: ポジティブ条件付けやネガティブ条件付けに、画像の潜在表現(補完の基になるデータ)とマスクを追加します。これによって、補完される部分の情報が条件付けに含まれ、モデルは「ここをこんな風に補完すればいいんだな」と理解できるようになります。
補完処理の実行: 更新された条件付けに基づいて、画像の欠損部分が自然に補完されます。例えば、背景に合わせて欠損部分が塗りつぶされたり、オブジェクトが滑らかに修復されたりします。
マスクの滑らかさが重要な理由
補完の際に、マスク(補完するべき場所を示すデータ)の境界が滑らかであることはとても重要です。なぜなら、境界が滑らかであれば、補完された部分が元の画像と自然に繋がるからです。マスクの境界がシャープだと、補完部分が目立ちやすくなり、不自然に見えることがあります。滑らかなマスクを使うことで、補完処理が画像全体にシームレスに溶け込み、違和感のない仕上がりが得られます。
ハードエッジなマスク画像の例
ソフトなマスク画像の例
特に透明体や反射、髪の毛の境界などはハードエッジにすると違和感が強く出ます。
なぜ条件付けデータの更新が重要なのか?
条件付けデータの更新は、補完処理を正確かつ自然に行うために非常に重要です。この更新が行われることで、モデルは最新の画像情報に基づいて適切な補完を実行できるようになります。更新された条件付けデータには、補完したい部分の最新の潜在表現とマスク情報が含まれており、これがモデルに対して「ここをどのように補完するべきか」という具体的な指示を与えます。潜在表現は画像全体の特徴やスタイルを反映しているため、補完部分が元の画像と自然に調和することを可能にします。また、マスク情報が更新されることで、モデルは補完するべき領域を正確に把握し、不要な部分への影響を最小限に抑えることができます。
さらに、ポジティブ条件付けとネガティブ条件付けが最新の状態になることにより、補完結果のコントロールがより精密になります。ポジティブ条件付けは「こうしたい」というモデルの生成方向を示し、ネガティブ条件付けは「こうはしたくない」という制約を与えることで、補完の質を高めます。このプロセスにより、モデルは適切な領域に集中し、画像全体の統一感を維持しながら補完処理を行うことができます。結果的に、条件付けデータの更新が、補完された部分を滑らかで自然なものにし、全体のビジュアル品質を向上させるのです。
3. 使用するモデルと素材
モデル
今回は、モデルにRealVisXL V5.0を利用します。名称の通り、実写系を得意とするモデルで、商用利用可能(画像の販売、サービスへの組み込み可能)になります。このモデルを以下のリンクよりダウンロードし、「ComfyUI/models/checkpoints」フォルダに格納してください。
変換元画像
変換元画像には、以下の男性の写真を使用します(画像生成)。
画像ファイルは、以下よりダウンロードください。
画像素材をダウンロード (右クリックで保存)
4. ワークフロー解説
ワークフローの全体像は以下になります。基本的には標準ワークフローと同等ですが、変更点としては、Load Imageノードでの参照元画像の読み込みと、それをInpaintModelConditioningノードで前処理とLATENTへの変換を行い、KSamplerノードのlatent_image入力に接続する箇所が追加になっています。
ワークフローは文末よりダウンロードください。
処理の流れを以下のようにフローチャート化しました。
以下に、各ステップとその役割を詳しく説明します。
Mask Editorでのマスク作成方法をご存じない方は、まず以前の解説をご参照覧ください。
ここから先は
応援してくださる皆様へ!💖 いただいたサポートは、より良いコンテンツ制作、ライターさんの謝礼に役立てさせていただきます!