img2img

Last-modified: 2024-08-04 (日) 16:03:16

img2imgとは

AI絵に画像を生成させるための、最も基本的な方法が「txt2img (t2i)」。AIへの指示を文章=プロンプトで与える方法である。
一方「img2img」では、このプロンプトに加えて「ベースにする画像」も与える。ここが最も大きな違い。
つまり構図等を0から構成するのではなく、元画像をベースに加筆修正を加えていく形となる。

i2i,Image-to-Image,いもげいもげとも言う

特徴

  • txt2imgに比べ、より少ないステップ数で高い品質を得やすい。
  • 大きな画像サイズでも、人体の崩れや分身が発生しにくい。
  • プロンプト、いわゆる呪文だけでは出しにくいキャラや要素も出し易くなる。
  • 「Denoising strength」というパラメータによって「どの程度の加筆修正を加えるか」を調整できる。
  • 基本的に元画像の色情報を参照するが、設定次第で構図やポーズをそのままに別の人物や衣装に変えることも可能。

各タブの大まかな紹介

  • img2img
    元画像を指定して、拡大とか、切り抜き(Crop)とかできる。
    会話画像の文字が変な感じにコラされてる遊びは大体これ製。
    Denoising strength(ノイズ除去強度)について

    Denoising strength(ノイズ除去強度)について:
    重要な設定値。値を小さくすると元画像に忠実になるがぼやけがちになり、値を大きくすると精細さが増すが元画像からの乖離も大きくなる。
    1111のデフォルト値は0.75になっているものの、実際の運用における最適な値は、Upscalerの種類、拡大/縮小の倍率、そして好みによるので、ケースバイケース。
    暫定的な値で数枚生成してみて、様子を見ながら調節することになるだろう。

  • Sketch
    img2imgにペンやパレット、スポイトツールを追加したもの。塗った色や形状が反映される。
    4本指の際に1本描き足すのに利用したりする。
    ただし画像全体が再計算されるため、せっかく気に入っていた表情が微妙に変わってしまう…などのリスクが伴う。
    細部を塗るために拡大表示したい時は、Ctrl+マウスホイール操作を使ってください。
  • Inpaint
    img2imgのメイン。マスクとして塗った部分だけを再計算するツール。または、塗った部分を保持しそれ以外を再計算させることもできる。
    顔とかすげー良いから保持したいんだけど、指だけが惜しいんだよねー…みたいな時に役立つ。
    口を閉じたり髪を伸ばしたりと表情や髪型を変えたい、着ている服を変えたり脱がしたりしたい、腕や脚のポーズを変えたい、といった時もこの機能で表現可能。
    上半身全体など塗り潰す範囲が大きい場合、実写系は基本的に「Inpainting用モデル」を使用すると綺麗に仕上がりやすく、どのモデルを使うかによっても質感が大きく変わる(二次絵系は未検証)。
    ただし、元画像が大きすぎると処理がとても遅い上に破綻しやすい。事前にInpaintの真ん中付近の「Resize by」やGIMPなどで縮小した画像を使用するのがおすすめ。
    ちなみに、SDではなく自分で描いたり撮ったりしたイラストや写真の画像でも有効。
    長いので折りたたみ

    方法はシンプルに塗り潰すだけでも良かったり、塗り潰した箇所に合う呪文を入れるとより良かったりもする。「LoRA」の適用も可能。
    逆に、マスク内に不要なものが出てきてしまう場合は、それに関係する文字をネガティブプロンプトに追加すると効果がある。
    例:上半身あるいはお腹付近を塗り潰すと、へそピアスが出てくるので、navel piercingをネガに入れる。
    「Masked content」は4種類あり、マスク周辺の色をもとに描き直す「fill」、マスク部分の要素をもとに描き直す「original」を使うことが多い。
    例として、6本指になった時は、指を1本塗り潰して fill で数枚ガチャしてみるのをオススメ。
    「Inpaint area」は、全体を元の設定と同じく再描画した上でマスク部分のみ描き直す「Whole picture」、最初からマスク部分のみ描き直す「Only masked」を選択する。
    どちらが違和感なく綺麗、自然な結果になるかは状況によって変わってくるので、片方で上手くいかない時は切り替えてみると良い。
    また、上記の「Denoising strength」のほか、txt2imgと同様に「CFG Scale」の数値によっても結果が大きく変わる。

    なお、全員に当てはまる現象かは不明だが、Inpaintで修正した生成画像の他の箇所も引き続き修正したい場合について注意すべき点がある。
    生成直後にそのまま「Send to inpaint」経由で作業しようとすると、表示されていないにも拘わらず前回のマスク部分が残っていて、その箇所まで再び修正されてしまう。
    対策として、一度修正が終わったらキャンバス右上のバツ印を押して元画像を画面から消し、その上で修正した生成画像を改めてドロップして作業するのが最も確実。
    v1.6.0ではパレットマーク(Send image and generation parameters to img2img inpaint tab.)に変更され、前回のマスク部分が表示されるようになった。

    他にも、一番下のスクリプトから選択できる「Outpainting」との併用も効果的で、拡大エリアの全体あるいは一部を同タブ内で塗り潰せる。
    元画像が上半身なのに拡大エリアが全く関係ない物体になるといった場合も、呪文を入れたり入れなかったりして塗り潰すことでちゃんとした下半身に修正されたりする。
    スクリプトがOutpaintingのままだと塗り潰しても拡大が優先されるので、一度スクリプトを「None」にするのを忘れずに。

  • Inpaint sketch
    Inpaintにパレットとスポイトを追加したもの。
    塗った色が反映される…が、マスク外が全体的に若干ぼやけてしまう副作用がある(おま環?)。
    一箇所修正してそれをベースに次の箇所…ってやってくとひでぇことになる。
     (関連) 不具合issues#Inpaint sketch実行時にマスク外が全体的にわずかにぼやける
    画像編集ソフトでシャープ化補正をかける、みたいにカウンターを当てて戻すのも一つの手。
  • Inpaint upload
    無印Inpaintは手動で塗り塗りしていたが、こちらは別の画像編集ソフト等で作ったマスクを読み込ませて利用するタイプ。
  • Batch
    フォルダを指定して丸ごとバッチ(一括)処理させる機能。
    ただし個々の画像のメタデータに埋め込まれていたプロンプトやネガティブではなく、img2imgタブのプロンプト欄/ネガティブ欄の内容が用いられることに注意。つまり全ての画像に同一のプロンプト/ネガティブが適用される。たとえ空欄にしていてもそう。
    v1.5.0で「PNG info」のパネルが追加された。これを利用することで、画像毎に個別のプロンプトや生成パラメータを利用できるようだ。

項目解説

Generateボタン周辺

img2img_para2.png

項目解説
Interrogate CLIPキャンバスに読み込んだ画像に基づいてPromptを生成します。
Interrogate DeepBooruキャンバスに読み込んだ画像に対してDeepdanbooruを利用しPromptを生成します。
danbooruのタグが出ます。

パラメータ

txt2imgと同じ項目については説明を省略します。
 誘導→項目解説

img2img_param.png

項目解説
(読み込んだ画像)読み込んだ画像です。どんな高貴な画像もノイズで汚して処理係に回すので、完成品である必要は全くありません。むしろ細かい完成度が反映されません(薄目で見た色の配置だけが残る感じです)。細かめモザイクにしてみた画像やタテヨコ3分の1くらいにしたサムネイル的な画像で生成を比較してみると実感できます。
(プロンプト)CFG ScaleとDenoising strengthを参考に画像を生成します。上記の通り元絵の詳細部分は捨てられているので、処理後の画像を「同じ絵」にしたい場合は変更してはいけません(詳細部分を描き直すためのヒントがなくなります)。逆に、詳細を変えたい場合は追加変更などするとtxt2imgと同じ理屈で反映されます。
Sampling steps処理ステップ数です。前情報ゼロから生成するtxt2imgと違い、色と色配置の「正解」が初期情報にあるので、txt2imgよりは少ないステップ数で収束することが期待できます。適切値は実際に試す以外わかりません。元画像と同じという話もありますが、ステップ数過剰になるはずなので精細になるか余分物が増えるかのガチャゾーンに入ります。
Resize mode拡大/縮小を行う際の種類を選びます。
・Just resizeアスペクト比(縦横比)を維持せずに拡大/縮小します。デフォルトはこれ。
Resize Byの場合はいいのですが、Resize Toを指定した場合はただ引き延ばされます。
・Crop and resizeアスペクト比を元画像の長辺カットによって維持してから拡大/縮小します。
Resize Byでは普通の拡大縮小になり、Resize Toのみ意味があります。カット開始の中心が変更できず、変なところで見切れるだけなので有難くありません。素直に画像編集ソフトウェアで切り抜きしてから持ち込むとよいでしょう。
・Resize and fillアスペクト比を維持して拡大/縮小後、キャンバスの空白域があれば描き足します。
Resize byだと空白ができないので、Resize Toのみ意味があります。いわゆる「画像の周りを空白にしてそこをAIに描いてもらう」設定ですが、通常は元プロンプト画像で描き切っているはずなので新規エリアは出涸らし感があります(背景ぶんのプロンプトの調整が要るかもしれません。または、画像編集ソフトで絵の周りに色塗って持ち込むとか)。なお、髪や手の見切れ部分を数十ピクセル幅だけ描き足して欲しいような場合はImg2ImgのScript欄にある「Poor man's outpainting」の利用も検討してください。
・Just resize (latent upscale)アスペクト比(縦横比)を維持せずに拡大/縮小します。Just resizeと同じですが、拡大/縮小の補正処理にLatent系のUpscalerが用いられます。
Hires.fixのLatent系と同様の特徴があり、描き込みを増やしてより精細な絵柄を得る効果を期待できます。一方で、ぼやけてしまうのを避けるためにDenoising strengthの値を十分に大きくする必要があり、結果として「元画像からの乖離が大きくなりがち」というデメリットを伴います。
Resize to拡大/縮小後の幅と高さを指定してサイズ変更を行います。
Resize by拡大/縮小の倍率を指定する形でサイズ変更を行います。一般的な「画像を○倍にする」はこちら。
📐元画像の幅と高さをWidthとHeightにコピーします。Resize Toの値の初期化に相当します。
Denoising strength「どの程度の加筆修正を加えるか」をコントロールする、重要な項目です。
値を小さくすると元画像により忠実になりますが、一般的な画像拡大と同じになるのでぼやけがちになります。値を大きくするとAIの馴染ませ加筆が増えて精細さが増しますが、加筆があるぶん元画像からの乖離が大きくなります。
1111のデフォルト値は0.75ですが、少し加筆気味かもしれません。実際の運用における最適な値は、Upscalerの種類、拡大/縮小の倍率、そして好みによるので、ケースバイケース。暫定的な値で数枚生成してみて、様子を見ながら調節することになります。

(Tips)
拡大/縮小の補正処理に用いられるUpscalerは、Settingsにて変更できます。
Settings → Upscaling → Upscaler for img2img (デフォルトは空欄)

Inpaint系パラメータ

img2img_para3.png

項目解説
Mask blurマスクの内側と外側を自然に馴染ませるために、マスクの周囲にぼかし処理を施す機能です。デフォルトは4ピクセル。
Mask mode
・Inpaint maskedマスクで塗りつぶした範囲に対して再描画を行います。
・Inpaint not maskedマスクで塗りつぶした範囲以外に対して再描画を行います。
Masked content
・fill元画像の平均的な色を算出し、その色に基づいて再描画を行います。余分な何かを消す、取り除く際などに有効です。アウトペイントでも有効です。
・original元画像の内容に基づいて再描画を行います。デフォルトはこれ。部分的に描き直したい箇所がある場合に有効です。アウトペイントしようとすると元画像に黒枠が追加されたものが出力されます。
・latent noiseマスク部分をノイズで塗りつぶします。step数が少ないとノイズがそのまま出力されます。
・latent nothingマスク部分を無として扱います。元画像の内容を引き継ぎません。
Inpaint area
・Whole picture画像全体を再描画した後、マスク部分だけを切り抜いて合成します。デフォルトはこれ。
・Only maskedマスク部分を元画像全体のサイズに一旦引き伸ばした状態で再描画を行います。その後、マスクのサイズに縮小してハメコミ合成を行います。
顔や指などが画像全体に対して小さく描写されている場合に、精細に描き直す効果を期待できます。
もしもマスク領域に小人や顔が発生してしまう場合は、Denoising Strengthの値を下げるか、プロンプトをマスクの内容に合わせて調整してみましょう。
Only masked padding, pixelsデフォルトは32ピクセル。

チュートリアル

(例題) Inpaintを使って男性器を生やす

onsen_ninja1.webp

もっと見る
onsen_ninja1.webp

423 無念 Name としあき 23/03/16(木)00:30:23 ID:iLQ6mnGk No.1076685253 del そうだねx6

>i2iでいくらでもレタッチチンコはやせるんじゃ?と思ったけどどうも甘くないな…

>フタナリモデル使っても生えない

唐突なInpaintチュートリアルのコーナー(再放送)
添付画像は俺がペイントで雑に描き足したソーセージだ
これをPNG InfoからSend to inpaint
モデルは大体何でもいい Anything v3でもいけることを確認済み
プロンプトはpenis,だけでいいや ネガティブも空でOK
次にInpaintのキャンバスでソーセージを一回り大きめに塗りつぶす
何故一回り大きめなのか? それはマスクの境目をMask blur=4で上手く馴染ませる都合があるからだ
Masked content=original
Seed=-1
Batch count=6
Denoising strength=0.6
これで生成開始してみ
数枚生成する内の何枚かはそこそこ良い感じの結果になってるはず

428 無念 Name としあき 23/03/16(木)00:34:37 ID:iLQ6mnGk No.1076686286 del そうだねx1
解説
Masked content=original
 「画像の色情報をベースに描き直してね」という指示
 今回は俺がペイントで描いた肌色ソーセージを
 もうちょっとマシに描き直してほしいのでoriginalを選んだ
Denoising strength=0.6
 俺が描いた肌色ソーセージにどの程度アレンジを加えるかの程度
 0.4とか0.5だと低めなのであんま描き直してくれない
 0.8とかだと逆に乖離が大きすぎて形状が無茶苦茶になりそう
 加減を調整して0.6というわけ

433 無念 Name としあき 23/03/16(木)00:38:22 ID:iLQ6mnGk No.1076687139 del +

>モデルは大体何でもいい Anything v3でもいけることを確認済み

いくらAnything v3くんが清純派お嬢様でも
俺がInpaitで色と形状を提示してあって
プロンプトでも「penis,」と指示してあって
Masked content=original
Denoising strength=0.6 とまで指示したら
流石に男性器を描いてくれるのである

公式

img2imgのうちInpaint だけは公式にちょっと説明あり
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#inpainting

よくある質問

  • 自作のAI画像を添付しましょう。AI絵は基本的に生成時の呪文やパラメータが画像内に埋め込まれる仕組みだからです。より良い回答やアドバイスを得やすくなります。
    ただし画像編集ソフト等でモザイク修正をかけると、多くの場合、埋め込み情報が失われてしまう点に注意してください。質問内容によりますが、性器描写を避けた健全絵を添付して質問するのも一つの手です。
  • 実際の画像とメタデータなしに「ぼやける・崩れる・画質がどうこう」と質問するのは、「エスパーしてくれ」というお願いと同義なので、やめましょう。

画像がぼやけるんだけど誰か理由と解決策わかる?

様々な原因が考えられるから必ず画像を貼れ、メタデータ付きのだぞ
エスパーレスすると

  • プロンプトもしくはネガティブの数が多すぎる、または強調が強すぎる
    断舎離する、強弱を調整する
  • 過学習、あるいはLoRAの適用強度が強すぎる
    <lora:hogehoge:0.5>とかに弱めてみる
  • (Hires.fixまたはimg2imgを使ってる場合)Denoising strengthの値が小さすぎる
    0.55とか0.6とかで試す
  • 生成する画像の解像度(Width,Hight)を上げる。例えば、512×512と1000×1000で生成したのでは、後者のほうが文字や小さく描かれた人物の歪みが減る。