言葉の位置による強調効果を無効化したい!
画像生成AIは、文の順序を入れ替えるとシードを固定していても画を変えてしまいます。
嫌だなぁ、どうにかなんないかなぁ、とふと思いました。
つまり、「語順による重みの変化を抑えたい」というのが今回のテーマです。
画像生成AIでは、プロンプト内の単語は前に書かれたものの重みが大きく、後ろに行くにつれてその重みが減っていきます。
これにより、語順が変わると文意が変わって、別の画がでてきます。
人間には同じ内容にみえる語順をいじった文章が、AIには違って見えているというわけです。
この差をなくしたい。
どうやるかというと、強調表現というものがあります。
括弧で括り、「:」で区切って数値を置くと重みを変えられるという素敵な機能です。
例えば、(Carp in a clear pond:1.1)とか、そういうの。
この、(Carp in a clear pond:1.1)は、作画全体の中で、「澄んだ池にいる鯉」というフレーズの重みを11%増やすことを意味します。
とはいえ、カッコがあるだけで1.1倍強調されるので、「:1.1」をつけると、プロンプト内で相対的に1.21倍強調されます。
この機能を使って、うまいこと相殺できないかな? というわけです。
ちなみに、カッコを付けてなお、1倍にしたいならこうします。(Carp in a clear pond:1)
強調効果を1倍以下にすることもできます。(Carp in a clear pond:0.8)とか。
さて、それでなにをするかというと、()付きの1まとまりの文の順序を入れ替えたうえで前の文に1以下の強調表現を当て、後ろの文に1以上の強調表現を当てます。
実際にやってみましょう。
(A modern cityscape in the background:1), (A girl wearing a Victorian-era maid outfit:1), (clear and detailed, modern hairstyle and accessories:1.1)
・語順を入れ替えたのがこちら
(A girl wearing a Victorian-era maid outfit:0.5), (A modern cityscape in the background:1.5), (clear and detailed, modern hairstyle and accessories:1.1)
手がキモかったり不本意な内容ではあるのですが、体の向きの変更は強調表現の数値変更次第である程度可能なので、シルエットぐらいは元の語順の画に近づけることができるかもしれません。
今回はここまで。