「髪型を変えてみたい」と一度は思ったことがあるでしょう。そんな願望を叶えてこそが、画像生成AI技術です。従来のインペイント処理では、髪型の変更など精密な修正は難しいと感じたことがあるかもしれません。しかし、今回はその限界を突破します!付録としてComfyUIワークフローと男性ヘアカタログプロンプト集もつけちゃいます!
こんにちわ、AICU media編集部です。
「ComfyUI マスターガイド」も、ついに第20回目になります。
以前にimage-to-image (i2i) でのインペイントについて説明しました。
今回は、i2iでのインペイントをさらに掘り下げて、基本的なインペイントワークフローでは実現できなかった高精度のインペイントを行う方法を解説します。
i2i編の初回はこちら
今回は、i2i(image-to-image)で人物の髪形を変更します。以前の記事で説明したインペイントは、ComfyUI公式が配布しているのインペイントのサンプルワークフローに従った、基本的なインペイント処理でした。そのため、効果的なインペイントが難しい状態でした。今回は、より効果的なインペイントを実施します。
具体的には、InpaintModelConditioningノードを使用します。InpaintModelConditioningノードは、効果的なインペイントをするための前処理を行います。理論的な解説も伴った中級者向け記事です!
InpaintModelConditioningノードは、画像補完のために必要な「条件付け」と呼ばれる情報を管理し、補完結果を自然に仕上げるために使われる重要な技術です。具体的には、欠損部分の補完に使う画像データや、その部分がどこなのかを示すマスクデータを取り扱い、モデルが適切に補完できるようにガイドします。
まず「条件付け」とは、画像補完を行う際にモデルがどのように動作すべきかを決めるための「指示書」のようなものです。条件付けは、モデルに「こういう結果にしてほしい」というガイドラインを提供します。
例えば、以下のような状況を考えます。
このような条件付けがあることで、モデルは「この部分はこう補完して、こういう風にはしないでね」という具体的な方向性を得ることができます。
InpaintModelConditioningノードの動作は以下のようなステップで進みます。
補完の際に、マスク(補完するべき場所を示すデータ)の境界が滑らかであることはとても重要です。なぜなら、境界が滑らかであれば、補完された部分が元の画像と自然に繋がるからです。マスクの境界がシャープだと、補完部分が目立ちやすくなり、不自然に見えることがあります。滑らかなマスクを使うことで、補完処理が画像全体にシームレスに溶け込み、違和感のない仕上がりが得られます。
ハードエッジなマスク画像の例
ソフトなマスク画像の例
特に透明体や反射、髪の毛の境界などはハードエッジにすると違和感が強く出ます。
条件付けデータの更新は、補完処理を正確かつ自然に行うために非常に重要です。この更新が行われることで、モデルは最新の画像情報に基づいて適切な補完を実行できるようになります。更新された条件付けデータには、補完したい部分の最新の潜在表現とマスク情報が含まれており、これがモデルに対して「ここをどのように補完するべきか」という具体的な指示を与えます。潜在表現は画像全体の特徴やスタイルを反映しているため、補完部分が元の画像と自然に調和することを可能にします。また、マスク情報が更新されることで、モデルは補完するべき領域を正確に把握し、不要な部分への影響を最小限に抑えることができます。
さらに、ポジティブ条件付けとネガティブ条件付けが最新の状態になることにより、補完結果のコントロールがより精密になります。ポジティブ条件付けは「こうしたい」というモデルの生成方向を示し、ネガティブ条件付けは「こうはしたくない」という制約を与えることで、補完の質を高めます。このプロセスにより、モデルは適切な領域に集中し、画像全体の統一感を維持しながら補完処理を行うことができます。結果的に、条件付けデータの更新が、補完された部分を滑らかで自然なものにし、全体のビジュアル品質を向上させるのです。
今回は、モデルにRealVisXL V5.0を利用します。名称の通り、実写系を得意とするモデルで、商用利用可能(画像の販売、サービスへの組み込み可能)になります。このモデルを以下のリンクよりダウンロードし、「ComfyUI/models/checkpoints」フォルダに格納してください。
https://civitai.com/models/139562/realvisxl-v50?modelVersionId=789646
変換元画像には、以下の男性の写真を使用します(画像生成)。
画像ファイルは、以下よりダウンロードください。
https://note.com/api/v2/attachments/download/8212aaeaa246b1840de3430c81f9d3c7
ワークフローの全体像は以下になります。基本的には標準ワークフローと同等ですが、変更点としては、Load Imageノードでの参照元画像の読み込みと、それをInpaintModelConditioningノードで前処理とLATENTへの変換を行い、KSamplerノードのlatent_image入力に接続する箇所が追加になっています。
ワークフローは文末よりダウンロードください。
処理の流れを以下のようにフローチャート化しました。
以下に、各ステップとその役割を詳しく説明します。
Mask Editorでのマスク作成方法をご存じない方は、まず以前の解説をご参照覧ください。
このワークフローは、元の画像の構造を保持しながら、指定された領域を新しいプロンプトに基づいて変更する高度なインペインティングを実行します。結果として、元の画像の特定部分が自然に変更された、高品質な画像が生成されることが期待されます。
それでは、インペイントを実行し、髪型をアフロに変えてみたいと思います。マスクは、以下のようにアフロのサイズも考えて広く作成しています。
こんな感じに塗っていきます(白で表現)。髪色も変えたいので、もっと生え際も塗ってしまってかまいません。
塗り残しを防ぐためにも、黒髪に黒はおすすめしません。
目尻に髪がかかったり、額が出たりでなかったりは、つくる髪型にも寄りますが、実験したい場合はまずは大きく塗っていきましょう。
マスクが甘いと、このような結果になります。
一見いいかんじなのですが、目尻やもともと画像にあった髪が残ってしまって居ます。
以下が正しくマスクを設定した場合の実行結果です。しっかり画像のコンテクストを理解してインペイント処理がされています。
なお、これを以前の記事で説明した基本的なインペイント処理だけで行うと、以下のように崩れてしまいます。インペイントのための前処理と条件設定「InpaintModelConditioning」の重要性を強く感じられます。
ポジティブプロンプトの「afro」の箇所を他の髪形に変えて生成してみました。みなさんも好きな画像をインペイントして遊んでみてください。
男性ヘアカタログ的なプロンプトは文末にて!
InpaintModelConditioningノードを使用することで、従来のインペイントの課題を克服し、より自然で精密な補完が可能になります。髪型の変更のような細かい修正も、適切な条件付けと最新のモデルを活用することで、まるで本物のような仕上がりが実現できます。これまでのインペイントで満足できなかった方も、ぜひ今回紹介したワークフローを試してみてください。AIの力で画像編集の可能性がさらに広がることを、実感できるはずです。
次回は、i2iでイラストを実写にする方法を紹介します。乞うご期待!
X(Twitter)@AICUai もフォローよろしくお願いいたします!
画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。
ゼロから学ぶ「ComfyUI」マガジン
https://note.com/aicu/m/md2f2e57c0f3c
マガジン単体の販売は1件あたり500円を予定しております。
2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。
https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self
もちろん、初月は無料でお試しいただけます!
毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
退会率はとても低く、みなさまにご満足いただいております。
✨️オトクなメンバーシップについての詳細はこちら
#InpaintModelConditioning
この記事の続きはこちらから https://note.com/aicu/n/n03423675c02c
Originally published at https://note.com on Sept 20, 2024.