同じセッティング、同じプロンプトで、描かせると同じ絵を描くと思っていたのですが、前回の記事でも実験してみて、MacBookとiPhoneでは若干絵が異なるみたいでしたね。おそらくメモリとかチップの違いも関係してくるのでしょうね。
前回の記事を読んでない方は、こちらからどうぞ。
当分この記事の画像は、iPhone で描かせてみようと思います。
画像生成 AI の仕組み
まず AI はなぜ文字情報から画像を描けるのか。ここを何となく理解しておくことが必要だと思うので、私の理解を簡単に説明してみます。
エンコード
AIは、膨大な数の絵を学習した結果、絵の情報を文字情報に落とし込むことが出来るようになったのです(エンコード)。つまり、絵を見せるとそこに何が描かれているのか。何が写っているのかを AI が判断できるようになったのです。
判断する際に使われる辞書的なものは、その特徴だけを抜き出しているため、辞書は非常にコンパクトになります。
デコード
描く時は文字情報から画像へ変換しなければいけないのですが、特徴しか知らない辞書から画像データにするには別の作業が必要です。そこで、開発されたのが拡散モデルになります。
拡散モデルは、絵にノイズを少しずつ付加していくという作業を何回も行い、最終的にはただのノイズ画像になるまでやります。そしてその画像の移り変わりをAIに学習させます。そして、「〇〇が描かれた絵のノイズが増えるとこうなる」という情報を逆に利用して、「このノイズ画像の前はどうだったかを推測させる」という作業を何回も行わせ、ノイズ除去をしていき、最終的に絵にするのです。
DrawThings で絵を描かせたときに途中で見られる低画質なイメージはまさにそのプロセスで、プロセスは「潜在空間」というImage Size より小さな領域で行われるみたいです。
「文字情報」を「潜在空間」に落とし込み、「潜在空間」を視覚的な「画像」へ変換するというのが画像生成のプロセスです。
こちらに、参考になる詳しい説明がありますので、ぜひ読んで見て下さい。

そして、そのプロセスの一番最初にイメージレイヤー(最終的な画像が記憶されているレイヤー)に置かれるノイズ画像を作るための数字がシード値になります。
つまり、シード値が同じで、セッティングも同じなら、同じ計算をするので、出力された画像も同じ画像になります。
DrawThings でのシード値の扱い
シード値を指定して連続で複数枚描かせると、シード値を自動的に変えながら描いてくれるのですが、シード値の変わり方には一定の法則が適用されます。
今回も次のセッティングで描いてみます。
| 項目 | 値 |
|---|---|
| Prompt | Photo of Japanese girl, 18 yo, smile, glasses, earrings |
| Negative Prompt | <easenegative>(worst quality:2) |
| Model | MajicMix Rialistic v7 (8-bit) |
| LoRA | Disabled |
| Control | Disabled |
| Strength | 100% |
| Seed | 12345 |
| Image Size | 512×512 |
| Steps | 16 |
| Text Guidance | 4.5 |
| Sampler | DPM++ 2M AYS |
| Shift | 1.0 |
| Batch Size | 1 |
そして、シード値の変化を見るために2枚描かせてみます。2枚描かせるには、Generateボタンの隣の数字を次のスクショのように2にして、Generateボタンをタップまたはクリックです。



プロンプトに short hair を追加して、再度シード値を12345にして2枚描かせるとこうなります。


シード値は、12345 の次は、必ず 3336926330 なのです。1枚目は黒い服、2枚目は薄水色の服というところが同じですね。
一方で、シード値を指定せず毎回ランダムなシード値にする New seed on generation (-1) を選ぶと、スタートするシード値がランダムになりますが、その後はその法則が適用されます。
つまり、1枚描いてプロンプト修正してまた同じシードで書きたい場合はシード値を指定しておくし、毎回シード値を変えて書きたい場合は、ランダムにしておくのが良いと思います。
ただ、シード値が同じだと、結果が似てくるので、気に入った絵が描けたら、もっと「こうだったらいいのにな」というのをプロンプトに書き足していくことで、理想に近づく事ができるのですが、それを追加したことによって、失うものもあったりして、成功率はそんなに高くなく、沼にはまって時間だけが経っていく・・・。なんて言う事にもなったりします。
シード値を ランダム( New seed on generation ) にして更に3枚描かせてみました。



いかがでしたか。絵は計算の結果です。同じ端末で同じセッティングで同じシード値なら同じ絵を描くのです。そして、最初のノイズ画像を作るために使われるのがシード値というお話でした。
次の記事はこちら。

コメント