1.DALL·E 2とStable Diffusionのout-paintingの比較まとめ
・out-paintingは元画像の枠外をプロンプトに従って補完してくれる機能
・DALL·E 2とStable Diffusion(dreamstudio.ai版)に実装されている
・現在のStable Diffusionのout-paintingはDALL·E 2程元画像を考慮しない
2.out-paintingとは?
以前紹介したin-paintingは人工知能に画像内の一部をプロンプトに従って書き換えてもらう拡張です。それに対してout-paintingは、本来の画像の枠外を人工知能に描いて貰う拡張で、現在はDALL·E 2とStable Diffusion(dreamstudio.ai版)に実装されています。
私、ちょっとout-paintingの使い方を誤解していたのですが、out-paintingの場合も「イイ感じに続き描いといて」と人工知能に丸投げする事は出来ず、現在の実装ではどのようにして枠外を埋めていくかをプロンプトで指示する必要があります。
なので、DALL·E 2のout-paintingの例で挙げられている以下のフェルメールの真珠の耳飾りの少女の事例、アレは匠の技ですね。結構な試行錯誤をしているはず。
なお、今回の投稿は上手くいかなかった失敗例です。何かのヒントになる可能性もあるので試行錯誤の流れを書いておきます。
さて、例によってスタジオジブリが常識の範囲内でご自由にお使いくださいと公開してくれている画像集から腐海の場面を切り取り、こちらのout-paintingに挑戦してみました。
以下の場面ですね。
Stable Diffusionの場合はdreamstudio.ai内で画像をアップして、その画像に対してEditorを起動し、どの部分をout-paintingして欲しいか決定した上でプロンプトでどのように埋めて欲しいのかを伝える必要があります。
ここで問題になるのは「腐海の概念をStable Diffusion先生にどのようにお伝えするか?」です。
拡張元の絵がStable Diffusion先生に描いて貰った絵であれば、既にプロンプトや他の設定は判明しているため非常にやりやすいのですが、オリジナルの絵をアップロードしてout-paintingして貰うためにはここが大きな障害になります。
「既存画像に適当に合わせて描いておいてください」と言いたい所ではありますが、現在のStable Diffusion先生はそのような曖昧な指示は受け付けてくれません。
そこでWikipediaの記述を参照して以下をベースとする事にしました。
「巨大な菌類からなる樹海で、蟲と呼ばれる異形の動物達が棲んでいる(It is a sea of trees composed of giant fungi and inhabited by deformed animals called bugs.)」
この時点で既にこれではStable Diffusion先生に伝わらないだろうな、と感じてはいましたが、とはいえ、何か良いアイディアがあるわけではないので、苦し紛れにプロンプトを充実させてくれるというMagicPrompt-Stable-Diffusion(関連リンク参照)にもプロンプトを校正して頂き、その結果、最終的なプロンプトは以下になりました。
「It is a sea of trees composed of giant fungi and inhabited by deformed animals called bugs. trending on artstation, 8 k, horror, concept art by tooth wu and wlop and beeple and dan mumford and greg rutkowski」
そして、厳かに祈る気持ちでStable Diffusion先生に上記プロンプトをお伝えした所、先生は以下のような画像を描きあげてくださいました。
やっぱりか。単なるtreesと伝えたらこうなるだろうとは予測はしていました。
一応、根っこの部分はちゃんと下の木とは繋がっていますが、ハメコミ合成的な絵になってしまいます。
パラメータを変更して、「先生、プロンプトにはそれほどこだわらなくても結構です」とお伝えしたところ、以下のような絵を描いてくださいました。
うむむむむ~、プロンプトにはこだわって頂かなくても良いのですが、元絵は無視しないで頂きたいのですが・・・
ちなみにDALL·E 2先生は一日の長があって、同じ設定、同じプロンプトで以下のような割とイケてる感じの絵を出力してくれます。
しかし、元のプロンプトがあまり考えられていない事がStable Diffusion先生に悪影響を与えている可能性が考えられるため、アップロードした絵を元にプロンプトを推測してくれるclip-interrogator(関連リンク参照)を使用して元絵を言語化して貰う事にしました。
以下が解析結果です。
index | Model | Medium | Artist | Trending | Movement | Flavors |
0 | ViT-B/32 | concept art (24.8%) | by H.P. Lovecraft (6.7%) | behance contest winner (36.2%) | fantasy art (8.2%) | lovecraftian (42.1%), 2d game art (7.5%), concept art (6.1%) |
1 | ViT-B/16 | a detailed matte painting (13.8%) | by Taro Okamoto (5.6%) | trending on cgsociety (23.8%) | magical realism (8.0%) | lovecraftian (22.5%), 2d game art (8.0%), concept art (6.0%) |
2 | RN50 | a matte painting (35.0%) | by Hayao Miyazaki (6.8%) | polycount (12.5%) | magical realism (13.5%) | lovecraftian (16.1%), matte painting (13.8%), 2d game art (7.3%) |
お、なにも事前情報を与えていないのにも関わらず、ArtistをHayao Miyazakiと見抜いてきましたね、やるな!
って事で最終的に言語化して貰ったプロンプトは以下になります。
「森の中に立つ男の絵、宮崎駿のマットペインティング、behanceコンテスト受賞作品、魔術的リアリズム、ラブクラフト、2Dゲームアート、コンセプトアート(a painting of a man standing in the middle of a forest, a matte painting by Hayao Miyazaki, behance contest winner, magical realism, lovecraftian, 2d game art, concept art)」
入力に使った画像は切り出し前の画像であり、イラスト内にマスクをしたナウシカが描かれており「森の中に立つ男」も認識としてはおかしくないです。
ちなみにアイキャッチ画像はこのプロンプトをout-paintingではなく、通常のプロンプトとして与えた際の出力です。腐海の概念は伝える事が出来ていないので普通の森になっていますが雰囲気は結構出ています。
さてこのプロンプトでもう一度Stable Diffusion先生に挑戦してみて頂いた所、以下のような絵となりました。
う~ん、元絵の文脈や色合いをもうちょっと考慮して頂けるように調整していかないと厳しいですね。ただ、dreamstudio.ai上での大量試行錯誤は従量課金制なので厳しいですね。ローカルPCで動かせるようになってから再挑戦ですね。
余談ですが、最新のphotoshopには「コンテンツに応じた塗りつぶし」という機能があるので、それでやってもらった結果は下記です。
これ見た瞬間、あ、もうこれphotoshopで良いじゃん。と言いたくなりましたが、ワンモアトライで、それでは元絵と同等のサイズに拡張して貰うとどうなるかも念のため、確認してみました。
あー、なるほど、ある一定のパターンを繰り返しているだけだから、蟲等は同じものが何度も出てきてしまうのですね。
DALL·E 2先生やStable Diffusion先生の応用範囲や伸びしろはまだありそうですね。
という事で結論としてはout-paintingで名画の枠外を描いて貰ってる人は、匠のワザをお持ちの方であり、凄いなぁ、という感想でした。
3.DALL·E 2とStable Diffusionのout-paintingの比較関連リンク
1)www.ghibli.jp
風の谷のナウシカ作品静止画
2)huggingface.co
MagicPrompt-Stable-Diffusion
3)github.com
pharmapsychotic/clip-interrogator