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

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

概要

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

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

今回は下図の画像を例にします。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像1

このキャラクターの画像ですが、頭頂部や髪の毛の一部が画面から見切れています。また、胴体ももう少し下まで描画したいです。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像2

参考までにプロンプトは以下です。

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で外側を描画してみます。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像3

結果は下図になりました。外側が描画できましたが、手が描画されたり、元の画像とうまくつながっていない状態です。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像4

次に、Outpainting mk2 を実行します。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像5

結果は下図になりました。外側に飾り枠がついてしまいました。白背景のままにしたいです。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像6

手順

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

画像の準備

初めにimg2imgに入力する画像を作成します。外側を描画したい元の画像より大きいサイズの画像を用意します。 画像に生成した元の画像を配置します。(下図)
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像7

外側をざっくり描画します。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像8

下図の画像を作成しました。この画像をimg2imgの入力画像とします。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像9

img2imgの設定

Stable Diffusion WebUIを起動します。img2imgのタブを表示し、inpaintのタブをクリックして選択します。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像10

作成した画像を入力イメージに設定します。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像11

追加でざっくり描画した画像の外側の部分をマスクに設定して、描画範囲に指定します。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像12

inpaintのパラメーターを設定します。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像13

ほとんどの設定はデフォルトのままです。画像の出力サイズを"Resized by" に設定し"Scale"を 1 にします。 入力画像のサイズと同じ大きさを出力サイズにします。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像14

[Generate]ボタンをクリックして画像を生成します。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像15

生成結果が下図です。元画像の見切れた部分が生成できました。頭頂部や髪の毛は良い結果ですが、ブラウスの腕部分は 境界が目立ちます。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像16

マスク画像の作成とSoft inpainting

メモ
Soft inpainting 機能は2024年2月時点では、dev版でのみ利用できます。2024年3月2日のv1.8.0以降でStable版でも利用できます。 Soft inpaintingの詳細についてはこちらの記事を参照してください。

もう少し品質が改善できないか試します。Soft inpaintingを試してみます。
先ほどの入力画像を修正したものと、マスクの画像を準備します。(下図)
入力画像は色をより正確に合わせて修正しています。マスクの画像はグラデーションを利用した画像を作成しています。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像17 Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像18

Stable Diffusion WebUIを起動します。img2imgのタブを表示し、inpaint uploadのタブをクリックして選択します。
下図の画面が表示されます。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像19

imageに入力画像を設定し、maskにマスク画像を設定します。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像20

画像の出力設定は、"Resized by" に設定し"Scale"を 1 にします。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像21

[Soft inpainting]のチェックボックスをクリックしてチェックします。 他の設定値はデフォルトのままとします。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像22

[Generate]ボタンをクリックして画像を生成します。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像23

画像生成結果は下図です。先の出力より自然な結果になりました。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像24

こちらの画像を利用します。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像25

服の部分のみinpainting

先の結果の画像の服の部分のみをもう一度inpaintingします。
先の結果の画像をimg2imgのinpaintの入力画像に設定し、服の部分をマスクに設定して描画範囲とします。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像26

プロンプトを以下に設定し、服のプロンプトとします。

Prompt
Prompt:pink blouse
Negative prompt: worst quality, low quality


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

画像の出力設定は、"Resized by" に設定し"Scale"を 1 にします。大きく変更はしないため、[Denoising strength]の値は0.5に下げています。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像28

[Generate]ボタンをクリックして画像を生成します。
画像生成結果は下図です。先の出力より自然な結果になりました。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像29

こちらの画像を採用しました。
Stable Diffusionで見切れた部分の画像を生成する - img2img Inpainting によるOutpainting:画像30

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

AuthorPortraitAlt
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。 最近は生成AIの画像生成の沼に沈んでいる。
作成日: 2023-12-18
Copyright © 1995–2025 iPentec all rights reserverd.