StableDiffusionの初版は、2022年8月22日に公開されました。
まずは基礎として、Latent space、VAE、ノイズ除去、U-Net、CLIPなどキーワードの解説です。
Latent space
StableDiffusionでは、画像をピクセル基準ではなく、主に潜在ベクトルとして扱います。大体768次元くらいの大きさです。768個の値が、1枚の画像全てを表現することになります。
VAE
VAEは、Value Auto Encoderの略です。値を変換するということで、Latent spaceの潜在空間ベクトルとピクセル空間画像を変換する役割があります。Encoderがピクセル→ベクトル、Decoderがベクトル→ピクセルです。txt2imgの場合は最終段階でVAEの出番となっています。
ノイズ除去
StableDiffusionは、ノイズ除去拡散モデルが元になっています。ノイズ除去拡散モデルというのは画像にノイズを徐々に加えていき完全なノイズになるまでの過程を学習し、ノイズから画像への復元を実現するものです。
これを潜在空間ベクトルで行い、なおかつノイズ除去時にcross attentionとしてノイズ除去の方向性を指定する仕組みを追加したものがStableDiffusionです。
U-Net
ノイズ除去に使うモデル構造が、U-Netです。これは、扱うデータの抽象度を段階的に落としながら処理を行い、次に段階的に抽象度を上げながら処理することで、抽象度の高い情報から詳細な情報まで考慮に入れることができます。StableDiffusionでも層によって大まかに構図の層から指・塗り方の層まで抽象度の違う情報を処理しているそうです。
CLIP
CLIPは、画像とテキストを変換するためのモデルで、画像のテキスト説明、テキストの潜在ベクトル化を行えます。StableDiffusionでは最初のプロンプト入力段階でテキストの潜在ベクトル化を利用しています。
StableDiffusion v1.4 2022年8月22日
最初に公開されたモデルがv1.4です。実写風の画像生成が主で、イラスト風画像は非常に困難でした。かなり頑張ってCG風画像や、名画風、もしくは超デフォルメ風画像が限界でした。
手足の破綻率はかなりのもので、指が正確に生成されることはほぼありません。顔もかなりの確率で破綻するので、顔修復専用の機械学習モデルが追加で使われていました。
WaifuDiffusion v1.2 2022年9月8日
有志による追加学習により、イラスト風画像の生成を目指したモデルです。今ではもう公開されていませんが、様々な品質のイラストと実写画像が融合したような画像が生成されるようになりました。
NovelAI 2022年10月3日
NovelAI社が公開したStableDiffusionをベースに多少カスタマイズ、追加学習を行い、オンラインで上で利用できる有料画像生成機能です。非常に優れた品質のアニメイラスト画像を生成できました。Danbooruというイラスト転載・タグ付けサイトのデータが利用され、プロンプトがタグベースで記述できるようになっています。
当時の学習
ところで、このころは特定のキャラクターなどを追加学習するためにはモデル全体に対して学習するのが一般的でした。つまり、1キャラクターごとに4~8GBのモデルが必要になります。
そこで、簡易的な方法が出てきます。
Textual Inversion
Textual Inversion (TI)は、画像の生成方法をモデル側で学習するのではなく、Text側、つまりプロンプトとして表現される、意味のベクトルを学習するものです。例えば白髪ツインテエルフを「フリーレン」という単語に覚えさせることができます。しかし、モデルが表現できる範囲の画像しか生成されませんので、細かい特徴は一切学習できません。
WaifuDiffusion v1.3 2022年10月7日
さらなる追加学習により、v1.2よりイラスト品質の向上と実写感の減少が達成されました。破綻率も多少改善されました。
NovelAIモデル流出 2022年10月6日
NovelAIが追加学習し、有料画像生成のために利用されていたモデルが流出しました。多少カスタムされているとはいえStableDiffusionのモデルなので、少しの手間でローカル利用のモデルとして利用できたそうです。
StableDiffusionのモデルは、ミックス・マージすることが可能です。単純に値を2つのモデルの中間にしてもよいし、EMAと呼ばれる学習度合いのような値を使って2つのモデルのいいとこ取りをすることも可能です。多くの追加学習モデルをマージしていくと、多くのモデルの特徴を持ったモデルを作ることも可能です。
Anything v3.0 2022年11月13日
出自不明のモデルですが、NovelAIモデルと同等か上回るような性能を持ったイラストモデルです。NovelAIと同じくDanbooruタグが有効な他、生成される画像にもNovelAIと似た傾向があるため流出モデルがマージ成分として含まれていると考えられます。手足の破綻はかなり少なく、顔修復は不要になりました。
StableDiffusion v2.0 2022年11月24日
StableDiffusionの次世代モデルで、より大きな画像解像度で学習されたモデルで、CLIPモデルも変更されているなど、v1.4とは異なるモデル構造のため旧モデルとは非互換の新しいものでした。しかし、手足の破綻問題はあまり改善されていなかったり、要求スペックが高い他、非互換のために旧モデルの学習結果を利用できなかったためあまり普及しませんでした。
WaifuDiffusion v1.4 2023年01月01日
StableDiffusion v2.0 をベースモデルとして学習されたイラストモデルで、NovelAI流出モデルを使用していないクリーンなモデルと言えます。しかし、そこまで品質は高くありません。
少し停滞と洗練
ここから、しばらくStableDiffusionモデルの進化はゆっくりになります。他社のMidjourneyやDallといったStableDiffusionより優れた品質のものが出てきますが、いずれも非ローカルの有料サービスです。
StableDiffusionでは、マージをU-Netの層別化によるイラストモデルと実写モデルのいいとこ取りが流行ったり、追加学習の効率化や、生成の高速・省メモリ化が行われていました。
追加学習法
Hyper Network
Textual Inversionの学習ではモデルが表現できないものは学習できず、モデル学習では学習結果が数GBにもなりました。100MB程度でモデル追加学習を保存できるのがHyperNetworkです。キャラクター再現や、画風再現も可能だそうです。ただし、学習に必要なGPUスペックは多いのでそこまで流行っていません。
Dream Booth
こちらもHyper Networkと似たような追加学習方法の1つです。HyperNetworkよりも学習再現率が高いですが、モデルは数GBにもなるのでこれも流行っていません。
LoRA
Low-Rank Adaptation of LLMの略です。Hyper NetworkやDream Boothよりも低VRAMで高速に学習でき、学習結果も数十MB程度で収まります。かなり手軽なので多くのキャラクターLoRAやポーズ、顔表情のLoRAが作られています。
ControlNet 2023年02月16日
プロンプトもしくはimg2imgの利用でしか生成結果をコントロールできなかったStableDiffusionですが、ControlNetにより詳細なimg2imgコントロールを行えるようになりました。棒人間によってポーズを決めたり、線画に色付けしてもらったり、写真をイラスト化してもらったり、落書きから完成まで持っていってもらったりできます。
ただしモデルが表現できないものは描けません。
たくさんのモデル
これまでのモデルは、huggingfaceという機械学習版のgithub風サイトで公開されたものがほとんどでしたが、CivitAIというStableDiffusion特化の共有サイトの利用が増えていきます。
モデルも、イラストからCG,実写まで非常に多種多様な専用モデルが作られました。
StableDiffusion XL (SDXL) 2023年07月27日
StabilityAIより公開された、StableDiffusion v2.0の次世代モデルです。学習解像度が1024x1024基準となっており、v1.4の512x512と比べると4倍の画素数になっています。
かなり広範囲の学習をされているようで、少しの追加学習で効果がでる柔軟さをもったモデルになっているそうです。手足の破綻が少ない上に、v1.4系列では困難だった指の生成もかなり破綻率が少なく生成できます。v2.0と同様に前モデルとの互換性はありませんが、互換性がないのでNovelAI流出問題もありません。SDXLの利用者は増えているようです。
高速化
最近は、生成の高速化が流行っている印象です。NvidiaGPUのTensorCoreを利用したTensorRTや、高速生成に最適化されたLCM SamplingとLCMモデルなどがあります。
高速化を利用して、今後は動画生成も増えていくことでしょう。