Stable Diffusion 見切れた部分の画像を生成する - img2img Inpainting によるOutpainting - Stable Diffusion

img2img の Inpainting を利用して、画像の見切れた外側を生成する手順を紹介します。

概要

こちらの記事では、 Poor Man's Outpainting、Outpainting mk2 を利用して、画像の見切れた外側を生成する手順を紹介しました。 紹介した手順で画像の見切れた部分を生成できましたが、画像がぼやけたり、大きく異なる画像が描画される場合など、意図した結果にならない場合があります。
また、背景が単純な場合にも意図したとおりの結果にならない場合があります。 この記事では、img2imgの Inpainting機能を利用して、画像の見切れた部分を生成する手順を紹介します。

事前準備、既存の手法での結果

今回は下図の画像を例にします。


このキャラクターの画像ですが、頭頂部や髪の毛の一部が画面から見切れています。また、胴体ももう少し下まで描画したいです。

参考までにプロンプトは以下です。
Prompt & Settings
Prompt: girl, adult, pink hair, (small eyes:1.2), pink and white blouse, upper body, higres, white simple background
Negative prompt: worst quality, low quality, (eyelashes:1.4)
Steps: 20, Sampler: Euler a, Size: 768x1024
Model: Async's MIX v3.0

はじめに、Poor man's outpaintingで外側を描画してみます。


結果は下図になりました。外側が描画できましたが、手が描画されたり、元の画像とうまくつながっていない状態です。


次に、Outpainting mk2 を実行します。


結果は下図になりました。外側に飾り枠がついてしまいました。白背景のままにしたいです。

手順

img2img の inpainting を利用した Outpaintingをします。

画像の準備

初めにimg2imgに入力する画像を作成します。外側を描画したい元の画像より大きいサイズの画像を用意します。 画像に生成した元の画像を配置します。(下図)


外側をざっくり描画します。


下図の画像を作成しました。この画像をimg2imgの入力画像とします。

img2imgの設定

Stable Diffusion WebUIを起動します。img2imgのタブを表示し、inpaintのタブをクリックして選択します。


作成した画像を入力イメージに設定します。


追加でざっくり描画した画像の外側の部分をマスクに設定して、描画範囲に指定します。


inpaintのパラメーターを設定します。


ほとんどの設定はデフォルトのままです。画像の出力サイズを"Resized by" に設定し"Scale"を 1 にします。 入力画像のサイズと同じ大きさを出力サイズにします。


[Generate]ボタンをクリックして画像を生成します。


生成結果が下図です。元画像の見切れた部分が生成できました。頭頂部や髪の毛は良い結果ですが、ブラウスの腕部分は 境界が目立ちます。

マスク画像の作成とSoft inpainting

メモ
Soft inpainting 機能は2024年2月時点では、dev版でのみ利用できます。2024年3月2日のv1.8.0以降でStable版でも利用できます。 Soft inpaintingの詳細についてはこちらの記事を参照してください。
もう少し品質が改善できないか試します。Soft inpaintingを試してみます。
先ほどの入力画像を修正したものと、マスクの画像を準備します。(下図)
入力画像は色をより正確に合わせて修正しています。マスクの画像はグラデーションを利用した画像を作成しています。


Stable Diffusion WebUIを起動します。img2imgのタブを表示し、inpaint uploadのタブをクリックして選択します。
下図の画面が表示されます。


imageに入力画像を設定し、maskにマスク画像を設定します。


画像の出力設定は、"Resized by" に設定し"Scale"を 1 にします。


[Soft inpainting]のチェックボックスをクリックしてチェックします。 他の設定値はデフォルトのままとします。


[Generate]ボタンをクリックして画像を生成します。


画像生成結果は下図です。先の出力より自然な結果になりました。


こちらの画像を利用します。

服の部分のみinpainting

先の結果の画像の服の部分のみをもう一度inpaintingします。
先の結果の画像をimg2imgのinpaintの入力画像に設定し、服の部分をマスクに設定して描画範囲とします。


プロンプトを以下に設定し、服のプロンプトとします。
Prompt
Prompt:pink blouse
Negative prompt: worst quality, low quality



画像の出力設定は、"Resized by" に設定し"Scale"を 1 にします。大きく変更はしないため、[Denoising strength]の値は0.5に下げています。


[Generate]ボタンをクリックして画像を生成します。
画像生成結果は下図です。先の出力より自然な結果になりました。


こちらの画像を採用しました。


img2img の inpainting 機能を利用して、画像の見切れた外側を描画できました。

著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2023-12-18
iPentec all rights reserverd.