Stable Diffusionで画像生成すると、基本的には512*512のサイズで生成されます。


いい感じの画像ができてきたぞ!

でも、今回は動画で使いたいから、横長の画像が欲しいんだよな...

あーあ、今手元にある正方形の画像に、生成した画像によくマッチした背景を追加できたらいいのになぁ( 'ω')


...それ、アウトペインティング機能でできます。



アウトペインティング機能

既存で入っているOutpainting mk2またはPoor man's outpaintingという機能を使います。


Outpainting mk2は、かなりダイナミックに新しい画像を生成してくれて、

Poor man's outpaintingは、元のイメージに寄せて、比較的おとなしめの描き足しをしてくれる印象です。


使い方

img2imgを開いて、描き足ししたい画像をアップします。

この時、この元画像のプロンプトを入れておくことをおすすめします。

プロンプトを忘れてしまった場合は、こちらを参考にプロンプトを復元してください。


下にスクロールして、最下部にあるScriptから、Outpainting mk2またはPoor man's outpaintingを選択します。

Stable Diffusionのアウトペインティングの設定画面


Outpainting mk2の場合、

Pixels to expandで描き足す幅のピクセル数を決められます。
8刻みで、最小8から設定できますが、最低でも64ピクセル描き足されてしまうようですので、64を選択するのがおすすめ(後述)。

Mask blurは、元のイラストとの境目のぼかし具合を選択できます。

Outpainting directionで描き足す方向を決められます。
全部選択して、一度に生成することも可能ですが、一方向ずつ着実に生成した方が、ガチャ失敗しにくいです。

Stable DiffusionのOutpainting mk2の設定値


Poor man's outpaintingの場合の設定値も、上記とほぼ同じです。

Pixels to expandとMask blurをよしなに設定しましょう。

Masked contentはfillでOKです。

Stable DiffusionのPoor man's outpaintingの設定値

ちなみにPoor man's outpaintingでは、Batch countを上げても、毎回1枚しか生成されないようです。



生成時のコツ

少しずつ描き足しましょう

いきなり欲張ってたくさん描き足すとカオスになりがち。

Stable Diffusionのoutpaintingの出力画像
左右128pxを同時に描き足した結果。


たとえば最終的に横長画像を作りたいのであれば、右64pxで生成→出力結果から左64pxで生成→さらにその出力結果から右64pxで生成...という形で、バランスよく交互に広げていくのがおすすめ(この後、具体的にどのように拡張していったかを画像添付します)。

Stable Diffusionのoutpaintingの出力画像(失敗)
左右いっぺんに作ると、片方が良くてももう片方が惜しいな〜となることも。


思った画像が全然仕上がらない場合、思い切ってプロンプトを一旦全消去して、描き足したいものの名前だけをプロンプトに入れて生成する、というのもおすすめです。

今回、私の元絵のプロンプトには、 a goddess of the sunとかtempleとかという単語が入っていたので、拡張された絵にも人や建造物が入り込んで、謎の絵が生成されがちでした。

Stable Diffusionのoutpaintingの出力画像(失敗)
違う、そうじゃない


シンプルにskyとだけ入れたら、むしろいい感じに生成してくれました。



うまく生成できない時のトラブルシューティング

Denoising strengthが低すぎると、全然画像を描き足してくれません。
0.5-0.8くらいで色々試してみましょう。

Denoising strength


Stable Diffusionのoutpaintingの出力画像(失敗)
左側を64px描き足したつもりで、全然描き足せなかった


Seedが-1になっていることを確認してください。

-1以外の固定の数値が入っていると、何回やっても同じ画像になります

Seed


元画像と同じCheckpointを使ってください。

別のモデルを使うと、書き足した部分だけ絵の雰囲気やタッチが変わってしまいます。

Stable DiffusionのCheckpoint



描き足しの様子

参考までに、私の書き足しの様子はこんな感じでした。

Outpainting mk2を使って拡張した画像
元画像

Outpainting mk2を使って拡張した画像
(顔周りもついでにinpaintで修正してます)

Outpainting mk2を使って拡張した画像

Outpainting mk2を使って拡張した画像
左側の空が気に食わなかったので方針転換

Outpainting mk2を使って拡張した画像

Outpainting mk2を使って拡張した画像
アハ体験みたいにちょっとずつ拡張していきます

Outpainting mk2を使って拡張した画像


まとめ

前回、動画用に画像を作ったときは、正方形の画像をどうにかサイズ拡大して...と試行錯誤していたのですが、

アウトペインティング機能を使えば、だいぶ楽に、そして綺麗に画像を拡張できるとわかったので、めちゃくちゃありがたいな〜と感じました。

今後も積極的に使っていきたいです。