ノイズから美しい画像が作られる
ComfyUIで画像生成の様子をプレビューしてみると、最初は砂嵐のようなノイズしか見えないのに、ステップが進むにつれて輪郭が現れ、最終的にはそれなりに整った画像になっていくのが分かります。
「ただのノイズから、どうやって意味のある画像が生まれるのか?」
この不思議な動きをしている本体が、拡散モデル (Diffusion Model) です。
拡散モデルとは
いま目の前にあるノイズ画像は、まったく意味のないものではなく、 「元のきれいな画像に、余計なノイズが乗って汚れたもの」 だとみなしてしまいます。
そう考えるなら、余計なノイズだけうまく取り除くことができれば、 元のきれいな画像に戻せるはずだ。 という話になります。
では、その「ノイズを取り除く係」をAIにやらせましょう。
拡散モデルの学習
AIは「関係性」を覚えるのが得意です。
拡散モデルでは、次のようなペアを大量に見せて学習させます。
- きれいな画像
- その画像にノイズを乗せた 「汚れた画像」
このペアを通して、AIは、汚れた画像を見たときに
「こう直せば、元のきれいな画像に少し近づきそうだ」
という直し方を学習します。
ノイズから画像を作る
この「ノイズを少し減らすAI」ができてしまえば、あとは単純です。
-
- ランダムなノイズ画像を用意する
-
- それをAIに渡して、「少しだけノイズを減らして」と頼む
-
- ちょっとマシになった画像を、もう一度AIに渡して……を繰り返す
最初はただのノイズだったものが、AIにノイズを少しずつ取り除かれながら、 だんだん「それなりに意味のある画像」に育っていくのです。
ランダムな画像が生成されるだけでは?
さて、これでノイズから何かしらの画像が生成されるようになりましたが、こんな疑問を抱くかもしれません。
「それっぽい画像」がランダムに出てくるだけじゃね?
「犬を描いて」とか「秋の森がほしい」みたいな指示は、どうやって伝えれば?
その通りで、ここまでの拡散モデルだけでは「自然な画像っぽいもの」は作れても、具体的な中身の指定はできません。
画像生成に少し触れたことがあれば
- テキストプロンプト
- ControlNet
- 参照画像(IP-Adapter など)
などといった制御方法があるのを知っているでしょう。
このように、拡散プロセスに対して 「どんな条件で生成してほしいか」 を教える仕組みを、ComfyUIではまとめて Conditioning(コンディショニング) と呼んでいます。
次は、この Conditioningについて見ていきましょう。