Scribble at 2023-10-08 22:40:09 Last modified: unmodified

Stable Diffusion で画像を出力するには、色々なパラメータを調整する必要がある。ご承知のとおり、最も複雑で手間がかかるのはプロンプトであって、どういう特性に attention という比重を持たせるかによって、絵柄が大きく変わってしまう。

プロンプトを構成する方法には、一般的に二つの考え方があるとされている。一つは、もともとトレーニングによって分散モデル(checkpoint)に組み込まれている絵柄のスタイルを尊重して、可能な限りシンプルなプロンプトで絵柄を出力しようとするものだ。これは、トレーニングに使われている、もともと丁寧に描かれたイラストだとか正常な写真の特性を活用しているため、出力される画像が破綻しにくいという利点がある。他方で、トレーニング用の写真やイラストがもともと持っているベクターをそのまま利用しているため、たくさん出力すると早々にワンパターンになるという欠点がある。

もう一つは非常に複雑で特殊なプロンプトを組み合わせて絵柄を出力しようとするアプローチだ。絵柄のスタイルだけでなく、実写系なら撮影しているカメラマンの名前とか、使っているカメラのモデルやフィルムのブランド名などもプロンプトに組み込むし、イラスト系ならアニメータの名前とかテイストなどもプロンプトに組み込む。こういうやり方は従来にないパターンの画像を出力できるため、たとえば新海誠氏の画風で風呂に入っているケンシロウを描いたりできるという、かなり奇抜な画像を出力できる。ただし、構図や人物の表情とかポーズが破綻しやすくなって、仮に商用が許されているライセンスのデータで出力したとしても、実際に納品物のレベルとして扱えるのは相当なレベルのエンジニアが担当しても数百枚に1枚といった品質になる。

個人の趣味として面白い画像を出力して遊ぶというだけなら、これらのどちらを採用しても構わないし、それぞれ適したやりかたがある。たとえば、シンプルなプロンプトのアプローチだと checkpoint として用意されたテイストの人物や絵柄しか出てこないため、最初から目当ての checkpoint を使えば安定した画像が出力できる。これは LoRA のような修正ベクターの追加データで補正するよりも安定しているため、"1boy" という単純なプロンプトだけで目当ての人物が出てくるという安心感がある。それでも、こちらの求める服装を着せたり、どこか特定の場所に立っているような絵にしたいといった個々の目的については、丁寧にプロンプトを組んでいく必要がある。日本にいる前提だからというだけで "Japan" とか "on a street in Kyoto" といったキーワードを使うと、人物が勝手に和服を着てしまったりするからだ。したがって、シンプルに出力できる checkpoint を使うからといって、なんでもシンプルに済ませられるとは限らないし、それで満足できるというわけでもないだろう。

そして逆の事も言える。丁寧に多くのキーワードを使うと、気づかないあいだに複数のキーワードが矛盾してしまうことがありえるので、なんどやってもおかしな絵柄しか出てこない場合は、いちどプロンプトを分解してシンプルな状態から組み直してみるという手順が必要になる。よくあるのは、"closed eyes" で目を閉じている前提なのに、画像の品質を指定しようとして "beautiful eyes" などと同時にセットしてしまう場合だ。閉じていて描かれない筈の眼や瞳について品質や色や形を云々するというキーワードを使うと破綻してしまう可能性が高くなるので、正確にはどちらかを排除しなくてはならない。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook