Stable Diffusionの「Poor man’s outpainting」を利用してアウトペインティング

画像の外側の続きを描くアウトペインティング。Stable Diffusionがリリースされた当初は名画の続きを描く企画などSNSなどでも話題になっていましたが、今回はStable Diffusionの標準機能を利用してアウトペインティングの実施方法やパラメーターの意味などまとめてみました。
アウトペイントの実行方法
アウトペインティングはimg2imgタブのscriptを利用して行います。いくつか方法がありますが、今回はScriptの「Poor man’s outpainting」を利用して生成します。img2imgタブのscriptのプルダウンメニューから「Poor man’s outpainting」を選択。選択すると以下のような設定画面が表示されます。

設定項目
設定項目は全部で4つあります。
Pixels to expand
どのくらい外側に引き延ばすか?初期値は「128」です。描き足したい分だけサイズを指定。最小値:8、最大値:256
Mask blur
マスクをどのくらいぼかすか
Masked content
マスクのコンテンツをどのように扱うか?
Outpainting direction
アウトペインティングを行う方向、初期値は全方位となっています。
アウトペインティング
まず元の画像を生成します。

元の画像をアウトペインティングの設定初期値のまま生成した画像が以下。

明らかに拡張した部分がわかってしまい、元絵との境界線も出てしまっています。上記は、Denoising strength0.75、Mask blurを少しだけ弱めて2とします。それでも一気に生成しようとするとブレが起きやすいので。一か所ずつ生成していきます。
右方向

左方向

上方向

下方向

最終仕上げ
上記でも意図した画角となりますが、若干ズレなどが目立つため、これをimg2imgで高品質化します。

かなりクオリティが上がりました。少し手間がかかりますが、画角をコントロールしつつ、仕上げていけばクオリティの高いインペイントが可能です。