Stable Diffusionを使っていると、画像がうまく生成されないことがあります。
例えば、
- 全体的な構成には問題がないのにもかかわらず、顔が崩れてしまっている
- せっかく良い表情の人物を生成できたにもかかわらず、手が3本で生成されてしまっている
- 顔が遠くに生成されてしまって表情がぼやける
などです。
しかし、せっかく生成した画像の顔や手が崩れてしまったからといって、何度も生成し直すのは手間がかかりますよね。
また、画像生成がうまくできたとしても、後から「目や髪の色だけ変えたい!」と思うことや、「髪型や表情の一部だけ変更したい!」と思うこともあるかもしれません。
今回は、「Stable Diffusionで画像を生成したけど、うまくいかない!」「Stable Diffusionで生成した画像の一部だけを変更したい!」という方向けに、生成した画像の一部のみを変更できる便利な機能『Inpaint』についてご紹介します!
また、この記事では、目などの細かい部分を修正する際に役立つ、画像を拡大しながら編集できるようにするための機能についても合わせてご紹介します。
※Stable Diffusionの立ち上げ方法については、以下の記事で詳しく解説しています!
Stable Diffusionで顔や手だけ変更可能な『Inpaint』とは?
まず最初に、そもそも『Inpaint』とはどのような機能なのか解説していきます!
『Inpaint』とは、Stable Diffusionに標準で搭載されている機能の1つ、『img2img』というタブの中に存在しています。
『Inpaint』を用いることで、生成した画像の一部(顔や手など)を範囲指定し、指定した範囲内、もしくは、指定した範囲以外の全ての部分を修正できます。
また、修正内容については、呪文(プロンプト)に変更を加えることで指示が可能になります。
つまり、『Inpaint』を使用すると、
- 表情の一部を変える
- 指の本数を正しく設定できる
- 服などの境界にぼかしを加える
- 解像度の低い画像をくっきりさせることができる
などの修正を行うことができるようになるのです。
『Inpaint』をうまく活用していくことで、納得のいく画像が生成されるまで何度も画像を生成し直す必要がなくなり、手間を省いて時間も節約することができるようになりますよ!
Stable Diffusionの『Inpaint』の使い方
Stable Diffusionの『Inpaint』の使い方には、大きく分けて2通りの手順があります。
以下では、基本的な使い方の流れを解説したうえで、
- 『手や指、表情、髪型、髪の色など一部だけ変更・修正』する方法
- 『不要な部分を消す』方法
- 『顔だけ解像度を上げて崩れを直す』方法
- 『画像を拡大・縮小して修正する』方法
の4つに分けて解説していきます!
まず、基本的な使い方の流れですが、まとめると以下の2つの方法があります。
- 元となる画像を生成する
- 元となる画像のパラメーター情報表示の上にある『Inpaintに転送』をクリック
- 変更を加えたい部分を塗りつぶす
- 呪文(プロンプト)に変更を加える
- 『Inpaint』のパラメーターを設定する
- 画像を生成する
- Stable Diffusionの『img2img』タブをクリック
- 『Inpaint』をクリック
- 元となる画像をアップロードする
- 変更を加えたい部分を塗りつぶす
- 呪文(プロンプト)を入力する
- 画像を生成する
どちらの方法を使っても、上記の6つのステップを踏むことで顔や手などの1部だけに修正や変更を加えることが可能です。
ただ、1つ注意しなければならないことがあります。
それは、2つ目の方法を用いる際、「元となる画像のプロンプトを準備しておかないといけない」という点です。
元の画像のプロンプトをベースに変更を加えていかないと、全く違う画像が生成されてしまうからです。
それでは、この点に注意したうえで、画像に変更や修正を加えるためのより具体的な方法を解説していきます。
『Inpaint』のパラメーターの設定項目について
Stable Diffusionの『Inpaint』には、画像に修正を加えるために設定する必要があるパラメーターがいくつか存在しています。
ここでは、そのパラメーターについて1つずつ解説していきます。
また、以下の人物を元に髪飾りの部分を範囲指定して、パラメーター変更前後の変化もお見せしながら解説していきます。
プロンプト
(8k, RAW photo, best quality, masterpiece, black hair, red eyes, dress, ultra detailed:1.3), (highly beautiful detail face: 1.3), (highly beautiful detailed eyes:1.3), 1woman, 20 yo, pretty, kawaii, attractive face,
ネガティブプロンプト
EasyNegative, bad pictures, anime, sketches, EasyNegativeV2, bad hand, long neck, bad body, monochrome, greyscale, signature, error, text, name, watermark, logo, username,
それでは、下記画像の番号順に『Inpaint』のパラメータ設定についてそれぞれご紹介していきます!
①Mask Blur
範囲を指定した部分の境目に、どの程度ぼかしを加えるのか設定することができます。
1枚目の画像がMask Blurを0に設定したもので、2枚目の画像がMask Blurを15に設定したものです。
このようにして比べてみると、Mask Blurの値を大きくするほど髪飾りの境界にぼかしが加わっていることがわかります。
②Mask mode
範囲を指定した部分のみ変更するのか、それとも、範囲を指定した場所以外の全ての部分を変更するのか選択することができます。
『Inpaint masked』を選択すると範囲指定した部分に変更を加えることができます。
髪飾りの部分にのみ、変更が加わっていることがおわかりいただけると思います。
一方、『Inpaint not masked』を選択すると、範囲指定した部分以外の全ての部分に変更を加えることができます。
このように、髪飾りは元の画像のままですが、それ以外の部分に変更が加わっています。
③Masked content
指定した範囲にどのような方法で変化を加えるか設定することができます。
●『fill』
範囲指定した部分の周囲の色を参照して画像に変更を加えます。
●『original』
範囲指定した部分に、元の画像を参照して変更を加えます。
●『latent noise』
範囲指定した部分を一度ノイズに戻してから再度生成し直します。
●『latent nothing』
範囲指定した部分の元の色を参照して変更を加えます。
④Inpaint area
画像全体を新たに生成しつつ、範囲を指定した部分に変更を加えるのか、それとも、範囲を指定した部分にのみ変更を加えるのか選ぶことができます。
●『Whole picture』
イラスト全体を再生成しつつ、範囲指定した部分にも変更を加えます。
●『Only masked』
範囲指定した部分にのみ変更を加えます。
⑤Sampling method
こちらは、サンプラーというものを選択するパラメーターであり、画像の処理方法を設定することができます。
どのサンプラーを使用するかでクオリティや画像の生成時間に影響が出るため、設定する際は、モデルに合った適切なサンプラーを選ぶことが必要です。
※詳しくはこちらの記事をご覧ください!
⑥Denoising strength
こちらでは、元の画像からどの程度大きく変更させるかを設定することができます。
数値が小さいほど元の画像とそっくりなものが生成され、数値が大きいほど元の画像からかけ離れたものが生成されます。
1枚目の画像が『Deniosing strength』の数値を0.15にしたもので、2枚目の画像が『Deniosing strength』の数値を0.75にしたものです。
1枚目の画像の方が元の画像に似ているのがおわかりいただけると思います。
手や指、表情、髪型、服の色など一部を変更・修正する
では実際に、『Inpaint』を使っていきましょう!
まずは、手や指、表情、髪型、髪の色など、体の一部分だけ変更や修正を加える方法についてです。
今回は髪の色を黒からピンクに変えていきたいと思います。
最初に髪の部分を範囲指定します。
以下のように髪全体の部分が黒くなるよう、塗りつぶしてください。
次に、呪文(プロンプト)に変更を加えます。
プロンプト
(8k, RAW photo, best quality, masterpiece, pink hair, red eyes, dress, ultra detailed:1.3), (highly beautiful detail face: 1.3), (highly beautiful detailed eyes:1.3), 1woman, 20 yo, pretty, kawaii, attractive face,
ネガティブプロンプト
EasyNegative, bad pictures, anime, sketches, EasyNegativeV2, bad hand, long neck, bad body, monochrome, greyscale, signature, error, text, name, watermark, logo, username,
パラメーターの設定については、目の色以外は元の画像の状態を維持したいので、デフォルトのままにしておきます。
そして画像を生成すると、
このように髪色がピンクに変更されました!
不要な部分を消す
次に不要な部分を消す方法についてです。
今回は髪飾りを削除していきます。
そのため、まずは髪飾りを範囲指定していきます。
また、今回は不要な部分を削除するだけなので、プロンプトの変更は必要ありません。
その代わり、『Masked content』と『Inpaint area』のパラメーター設定を変えていきます。
『Masked content』は『fill』に、『Inpaint area』は『Whole picture』に変更してください。
そして画像を生成します。
するとこのように、髪飾りが削除されます。
顔だけ解像度を上げて崩れを直す
また、今回のように元の画像の解像度が高く、表情がはっきりとしている場合は問題ありませんが、画像を生成しているとそうではない場合も発生すると思います。
その際、顔だけ解像度を上げていくには、まず、顔全体を範囲指定する必要があります。プロンプトについては、解像度を上げたいだけなので、変える必要はありません。
そして次に、パラメーターの『Masked content』と『Inpaint area』を設定していきます。『Masked content』は『original』に設定し、『Inpaint area』は『Only masked』に設定してください。
そうすることで、画像を新たに生成したときに顔だけ解像度が上がり、表情の崩れが直ります。
【応用編】「Canvas Zoom」:画像を拡大・縮小して修正する
以上で紹介してきたように、Stable Diffusionの『Inpaint』は、元の画像を修正、または変更することができるとても便利な機能です。
しかし、目や指先などの細かい部分を修正する際は、修正する範囲を指定するのが難しいこともあると思います。
そんなときに役立つのが『Canvas Zoom』というツールになります。
『Canvas Zoom』のインストール方法や使い方は、以下の記事で詳しく解説していますのでぜひ参考にしてください!
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい
Stable Diffusionで『Inpaint』がエラー・うまくいかないときのコツ
ここまでは『Inpaint』の使用方法について解説してきました。
しかし、『Inpaint』の操作はなかなかコツのいる作業ですので、今回ご紹介した手順通りに操作したにもかかわらず、うまく修正や変更を加えることができない場合もあるかもしれません。
もし、どうしてもうまく画像生成ができない場合は、以下のようなことを試してみてください。
- 『Canvas Zoom』を用いて画像を拡大しながら、指定する範囲を変えてみる
- 『Inpaint』に入力する呪文(プロンプト)を複雑にせず、変更に必要のない呪文(プロンプト)を消す
- 服の一部や余分な指などの不要な部分を削除したい場合、ネガティブプロンプトにそれを記載してみる
- 『Masked content』や『Denoising strength』の数値設定を調整する
上記のコツを試してみることで、修正・変更がうまくいくパターンもあります。
Stable Diffusionの「txt2mask」機能も顔や手だけ変更可能!
『Inpaint』だけでなく、Stable Diffusion Web UIの「txt2mask」という機能も顔や手など1部のみ変えることができます!
「txt2mask」の導入方法
まず、Stable Diffusionを開き、『Extensions』タブを開きます。
そして、『Install form URL』タブの「URL for extension’s git repository」の欄に、以下のURLを貼り付けます。
https://github.com/ThereforeGames/txt2mask
Stable Diffusionを再起動し、「img2img」のscriptタブに『txt2mask』が表示されているか確認してください。
scriptタブ
『txt2mask』の使い方
先程は実写系モデルを使用したので、今回はアニメ系モデル『MeinaMix』を使って画像を修正していきます!
今回使う元画像はこちらです。
プロンプト
masterpiece, 1girl, black dress, pink hair, cowboy shot
ネガティブプロンプト
worst quality, low quality, monochrome, greyscale, poorly eyes, needless hands, needless arms, needless fingers, watermark, username, nsfw
①「img2img」タブに元画像をドラッグアンドドロップします。
②「script」のプルダウンメニューから『txt2mask』を選択してください。
今回は、服装を変更したいので、『black dress』と入力します。
③その他設定項目を入力していきます。
- Mask precision:マスクの検出精度
- Mask padding:検出したマスクをどれだけ埋めるか
- Show mask in output?:ここにチェックを入れると、マスクのアルファ値の画像も一緒に生成される
④最後に、新しく生成する画像の呪文(プロンプト)を入力して『Generate』を押します。
今回は、服装を変更するためにマスクを『black dress』に指定したので、プロンプトには「white dress」(ワンピース)を入力します。
white dress
ネガティブプロンプトはなしでも大丈夫です。
⑤生成された画像がこちらです!
いかがでしょうか?
指定通りに服装を変更することができました!この『txt2mask』という機能も非常に便利なので是非参考にしてください!
まとめ
いかがでしたでしょうか?
この記事では、Stable Diffusionで画像の一部分を変更することが可能になる『Inpaint』という機能について解説いたしました。
要点をまとめると、
- 『Inpaint』は画像の一部を修正・変更できる機能
- 『Inpaint』には6つのパラメーターがあり、パラメーターの設定によって画像の変わり方も異なる
- 画像の一部を変更する際、変更したい範囲を黒く塗りつぶす必要がある
- 『Canvas Zoom』を使うと、細かい部分の範囲指定がしやすい
- うまく修正・変更ができないときは、4つのコツを試してみるとよい
になります。
『Inpaint』を使うことで、画像の一部分にエラーがあるからといって何度も画像を生成し直す手間を大幅に省くことができます。
ぜひ、活用してみてください!
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい