Stable Diffusionの概要と基本的な仕組み、それを簡単に使うための公式なWebサービスである「DreamStudio」を紹介し、Stable Diffusionで画像生成する際に行われていることについて駆け足で見ていきましょう。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
今、画像生成AIが「革命」と言えるほど盛り上がっているのをご存じでしょうか。2022年8月前後 からDALL・E 2(ダリ・ツー)やImagen(イマジェン)、それからもちろんMidjourney(ミッドジャーニー)など、多数の画像生成系AIが登場し、世の中を騒然とさせていました。が、それらを一足飛びで追い越して多くの人が熱中しているのがStable Diffusion(ステーブルディフュージョン)です。最初はSNSで大きな話題となりましたが、2022年9月ではテレビで紹介されるまでになっています。
特にStable Diffusionは、「誰もが必ず知っておくべき」重要なAIだと、Deep Insider編集部では考えており、この「Stable Diffusion入門」連載を企画しました。本連載では、AI/機械学習エンジニアやデータサイエンティストや、最新の話題が好きな人ではなく、「今、画像生成AIがはやっているみたいだけど、何ができて、何がすごいのかよく分からない」という普通の人に向けて、Stable Diffusionの概要と基本的な仕組み、それを簡単に使うためのサービスなどをできるだけ分かりやすくコンパクトに紹介していきます。一部の説明では、Pythonというプログラミング言語を使ったコードによる説明も行っていますが、分からない部分はスキップして読んでも大丈夫です。
これらの画像生成系AIに共通するのは、プロンプトとか呪文とか呼ばれるテキストを入力することで、高解像度のグラフィックが生成されることです。このプロンプトをどう工夫すれば、生成される画像をよりよいもの(ユーザーが望む理想に近いもの)をできるかに興味を持つ人も多く、「プロンプトエンジニアリング」と呼ばれる分野があっという間に確立されてもいます。呪文の詠唱の仕方を変えることで、その効果をビジュアルに確認できることが人々のハック魂に火を付けたともいえるでしょう。
その一方で、上に挙げたような高精度な画像生成AIが多数登場したことで「イラストレーターの仕事はなくなってしまうのか」とか「AIが生成した画像の著作権はどうなってんの」とか「自分の絵を勝手に学習に使われたくない」などの観点から議論が巻き起こってもいます。特にStable Diffusionはソースコードが公開されていることから画像生成AIとユーザーとの距離がグッと近づいた結果、こうした問題も多くの人にとって身近なものになったといえるでしょう。実際、Stable Diffusionのソースコードが公開された後は、これをベースとした多くのサービスやアプリがこれでもかというほど、一気に登場していますよね。
が、こうした点については本連載では取り上げずに、あくまでも「Stable Diffusionとは?」「試してみるには?」「コードを書いてみたい」といった観点で話をしていくことにします(かわさき)。
私は「Stable Diffusion登場前と後で世の中は変わってしまった」と考えています。それほどStable Diffusionの登場はAIの歴史の中で重要な出来事で、だからこそ「誰もがStable Diffusionのことを知っておくべきだ」と考えています。世の中には既に、Stable Diffusionの概要や、画像生成例、呪文の書き方などを書いたブログ記事が毎日のように多数出てきています。この連載は、そういったバラバラの情報が1本の連載の中でまとめられており、誰もが基礎から学べるもの、いわゆる教科書みたいなものになればよいなと思っています。そういうまとまったものが必要ですよね?
なお、「変わってしまった」とそこまで強く主張する理由は、Midjourneyまではソースコードが非公開でしたが、Stable Diffusionはオープンソースだからです。しかもStable Diffusionの方が高性能という話もあります。オープンソースということは、誰もが手元で使えるようになったということです。私の目には、Stable Diffusionを基点にさまざまな企業や人がこの技術を使って何かしらのサービスを作ったりしてさらに発展していくように映りました。覆水盆に返らず。始まった大きなうねりはもう止められない、というのが主張の理由です(一色)。
最初に述べておきたいことは、Stable Diffusionとは「画像を生成するための訓練済みのモデル」であるということです。極端なことをいえば、モデルを使う上ではその詳細な理解は(とてもありがたいことに)必要ないともいえます。Webサイトが提供しているサービスを利用したり、ローカルPCやGoogle Colab上の環境にモデルをインストールしてスクリプトを実行したりプログラムコードを記述/実行したりすることで、多くの人が比較的簡単にその恩恵にあずかれるということです。
使う分には知っておく必要はありませんが、中の仕組み、アーキテクチャーについても簡単に触れておきます。その後で使い方について紹介します。
今も述べたようにStable Diffusionは訓練済みモデルなのですが、このモデルは「潜在拡散(latent diffusion)」と呼ばれるアルゴリズムを実装したものです。ちなみに「潜在拡散モデル」はその前身ともいえる「拡散モデル(diffusion model)」と呼ばれるモデルをより効率的にしたものと考えられます(ちなみに最初に述べたAIの多くも拡散モデル/潜在拡散モデルの系譜に連なるものです)。
「潜在拡散」など、仕組みの話は何やら難しそうな単語が出てきますね。「難しくて理解できない」と思ったらスキップして大丈夫だと思います。後で出てくるVAEというのは機械学習のモデルアーキテクチャーの一つで専門用語になります。
拡散モデルと潜在拡散モデルはどちらも基本的な考え方は同じです。つまり、「純粋なノイズから少しずつノイズを取り除いていくことで、最終的に何らかの画像を得る」というものです。
これを行うには、モデルは実際の画像に少しずつノイズを付加しながら最終的に純粋なノイズ(ガウシアンノイズ)を得る過程(順方向の拡散プロセス)を基に、その逆に純粋なノイズから少しずつノイズを除去しながら最終的に元の画像を得る過程(逆方向の拡散プロセス)において、どんなノイズを純粋なノイズから除去していけば画像を得られるか(画像を生成できるか)を学習する必要があります。つまり、拡散モデル/潜在拡散モデルはこの除去されるノイズを推測し、初期値となるガウシアンノイズ(とは元の画像にノイズを適用して最後に得られたガウシアンノイズでもあります)から、逆方向の拡散プロセスの各ステップで推測したノイズを徐々に除去していき、最終的に何らかの画像を生成するものです。
拡散モデルではピクセル空間を直接操作して、この処理を実現していましたが、これは多くの計算資源を必要として、訓練や推測にも時間がかかるという弱点がありました。そこで、潜在拡散モデルではVAEでおなじみの潜在空間を用いることでこの弱点を克服し、より効率的に(訓練と)推測を行えるようにしたものといえます。
なぜ「(訓練と)」がかっこ付きかといえば、Stable Diffusionは訓練済みのモデルなので、モデルを利用するだけであれば訓練の部分はあまり関係ないからです。
というのが、Stable Diffusionの概要となるのですが、先ほどもいったように使う分にはこんなことは知っている必要はないといえばないのです。そこで、次にこれを実際に試してみることにしましょう。
Copyright© Digital Advantage Corp. All Rights Reserved.