拡散モデル(Diffusion model)とは?意味や定義、GANやVAEとの違いまでわかりやすく解説
INDEX
- 拡散モデル(Diffusion model)とは?
- 拡散モデル(Diffusion model)の中身
- Forward Process
- Reverse Process
- 拡散モデル(Diffusion model)と類似の生成AIとの違い
- VAEとの違い
- GANとの違い
- Flow-based modelsとの違い
- 拡散モデル(Diffusion model)との関連する用語
- Text to Image、VLM
- Image to Image
- 拡散モデル(Diffusion model)を使用しているAIサービス4選
- Stable Diffusion
- DALL・E2
- Midjourney
- Firefly
- 拡散モデル(Diffusion model)を実装するために必要なこと
- 拡散モデル(Diffusion model)まとめ
- さらに、今注目を集める生成AIリスキリングの第一歩を。生成AIパスポートとは?
現在多くの画像生成AIサービスで使用している「Diffusion model」。これは拡散モデルの1つであり、画像生成AI分野では高い注目を集めています。画像生成AIに携わるなら学ぶべき学習モデルの1つです。本記事では拡散モデル(Diffusion model)の意味や定義を初心者の方にもわかりやすく解説していきます。
拡散モデル(Diffusion model)とは?
拡散モデル(Diffusion Model)とは、画像データの拡散過程(ノイズが加えられてデータが破壊される過程)を学習した画像生成AIモデルの1つです。
簡単に説明すると、元の画像にノイズを加えて画像全てをノイズの状態にすることをいいます。
また、ノイズ化したデータを逆に適用させて、元の画像データへ戻したり、新たな画像データを生成することもできるのも特徴です。
よって、拡散モデル(Diffusion Model)を学習すれば、1つのデータからあらゆる画像データが作成できるということになります。
以上のことから、拡散モデル(Diffusion Model)は画像生成において、とても優秀です。
そのため、Stable DiffusionやDALL・E2、GLIDEといった有名画像AI生成サービスでも導入されています。
拡散モデル(Diffusion model)の中身
拡散モデル(Diffusion model)の動作原理は、大きく分けて二つのプロセス、すなわち「Forward process」と「Reverse Process」によって成り立っています。
「Forward process」では、元の画像データにノイズを加え、「Reverse Process」では、このノイズデータからノイズを徐々に取り除いていくのです。
ここでは、Forward process」と「Reverse Process」についてどのような機能が備わっているのか詳しく解説していきます。
Forward Process
Forward Processとは、画像データにノイズを加え最終的にノイズのみの画像に変換させる確率過程です。
具体的には、元々の画像にガウスノイズ(ランダムノイズ)を少しずつ加えることで、最終的にはガウス分布(ノイズのような形)をえます。
この確率過程は、付加するノイズの平均値や、ガウス分布になるまでのステップ数を使った計算式が使用されるのが特徴的です。
そして、その計算されたノイズを元の画像に追加することで、このプロセスは実行されます。
このプロセスの特徴として、各ステップでのパラメータの学習が不要です。
そのため、全体の構造は比較的シンプルで、理解しやすいという点が挙げられます。
Reverse Process
Reverse Processは、前に説明したForward Processと逆の手順で行うプロセスのことです。
具体的には、ガウス分布(ノイズのような形の分布)から始めて、ノイズを一つずつ取り除き、結果元の画像や新たな画像に再構築する過程(逆拡散過程)のことをいいます。
ただし、ただ単に逆の手順を辿れば元の画像が得られるわけではありません。
データ全体を使って、条件付き確率を推定するモデルの学習をする必要があります。
とはいえ、リバースプロセスは比較的シンプルなプログラムコードで実装可能です。
ノイズを加えたデータに対して、作成したネットワーク構造を使って逆予測を行い、少しずつ元のデータに近づくような処理を進めていきます。
拡散モデル(Diffusion model)と類似の生成AIとの違い
画像生成AIは拡散モデルだけではありません。これまで多く生み出された生成AIの中の1つなのです。
ここでは、拡散モデル以外の生成AIについて、拡散モデルとどのように違いがあるのか詳しく解説していきます。
VAEとの違い
Diffusion modelとVAE(変分オートエンコーダ)は元画像を学習し新しい画像を作成するという似た特徴はありますが、違いは元画像の学習方法です。
Diffusion modelとVAEは、元画像を学習し似たような画像の生成を行う部分では似た特徴を持っていますが、
VAEでは次元圧縮して、そこから新たな画像へと復元するということをします。
一方、Diffusion modeでは元画像を圧縮しません。元画像を全てノイズにしてしまうため破壊という表現になってしまいます。
例えるなら、VAEは元画像の良い部分は残したまま画像を作成する。Diffusion modelではゼロから新たな画像を作成するという違いがあるのです。
VAEについて詳しく説明した記事はこちら
GANとの違い
GAN(敵対的生成ネットワーク)と拡散モデルには、学習方法や適用範囲に違いがあります。
GANは、本物と偽物のデータを対比させることで学習を進め、2つのモデルが互いに競争する特性をもつ一方で、拡散モデルはデータにノイズを加えたり取り除いたりすることで学習を進めるというプロセスです。
また、GANも拡散モデルも元画像から画像を生成する能力を持ちますが、GANについては学習が不安定で多様性に欠けるという課題点もあります。
とはいえ、GANは高品質で鮮明な画像生成には優秀です。
一方、拡散モデルは元画像情報から画像を生成するタスクには高い評価を得ています。
したがって、GANと拡散モデルは、それぞれ異なる特性と適用範囲を持つ生成モデルであり、適用するタスクや目的によって最適なモデルを選択することが重要なのです。
GANについて詳しく説明した記事はこちら
Flow-based modelsとの違い
AIの生成モデルとして、Flow-based modelsと拡散モデルは、それぞれ異なる学習方法と適用範囲を持つため、利点と問題点が存在します。
Flow-based modelsは潜在変数とデータの次元が等しく、データ生成プロセスを同じ空間内での軌跡として扱うプロセスです。
一方、拡散モデルは元の画像にノイズを加えて画像全てをノイズの状態にし、ノイズ化したデータを逆に適用させて画像データを生成します。
これは、Flow-based modelsが逐次変換を加えてデータを生成するため、可逆的な関数でなければならず、モデルの表現力が制限されるという問題がある一方。
拡散モデルは元の画像にノイズを加えて画像全てをノイズの状態にした後、ノイズ化したデータを逆に適用させて画像データを生成するという特性があるためです。
具体的には、フFlow-based modelsは単純な確率分布を複雑な確率分布に変換する能力がありますが、画像生成にはあまり用いられません。
一方、拡散モデルは画像生成において非常に優れており、有名画像AI生成サービスでも利用されています。
拡散モデル(Diffusion model)との関連する用語
拡散モデルは、Text to Image(テキストから画像へ)やImage to Image(画像から画像へ)といったタスクで重要な役割を果たしているモデルです。
Text to Imageの場合だと、拡散モデルはテキストプロンプトから得られた情報を基に、該当する画像を生成します。
一方、Image to Imageの場合、既存の画像から得られた情報を基に、それと似た新たな画像を生成するアプローチです。
このように、拡散モデルを学ぶうえで、Text to ImageとImage to Imageは重要な用語になってきます。
Text to Image、VLM
Text to Imageのタスク処理をする際に、VLM(Visual Language Model)と拡散モデルが協同して、テキストから画像を生成します。
VLMは画像とそれに関連するテキスト(タグ・ラベル・アノテーション)の関係性を学習するマルチモーダルな学習モデルです。
画像認識モデルのように「画像を見たら正解となるテキストを出力する」ような学習は行わず、画像とテキストの関係性を表す情報を出力します。
このVLMを利用することにより、拡散モデルはテキストと画像の関係性を表す情報をノイズデータに追加し、それを元に画像を生成するのです。
例えるなら、「猫」というテキストがVLMから出力された場合、それに対応する画像の概念情報が拡散モデルに追加されます。
その結果、拡散モデルは「猫」に関連する画像を生成(Text to Image)することができるのです。
以上のことから、VLMと拡散モデルの共同作業は、テキストから画像を効率的に生成するText to Imageタスクにおいて、不可欠な関連性を持っていることがわかります。
Image to Image
拡散モデルはImage to Imageタスクを使用して、元の画像を変換し新たな画像を生成しする構造です。
具体的には拡散モデルは、初期の入力画像にノイズを加えて潜在空間へノイズデータを送ります。
その際、VLMなどを使って指示情報を追加することで潜在空間の情報を変化させ、潜在空間の中で「別の意味を加えられたノイズデータ」を画像化するのです。
これにより、元の画像に似ているものの、少し異なる画像データが生成されます。
例えば、初期の入力画像が「犬」であったとしましょう。
このとき、ノイズを加えて潜在空間のノイズデータに変換し、そのノイズデータに「笑っている」という指示情報をVLMが追加します。
その結果、拡散モデルは「笑っている犬」に関連する画像を生成になるのです。
したがって、拡散モデルはImage to Imageタスクにおいて、初期の入力画像を変換し、新たな画像を生成するという役割を果たすという関連性があります。
拡散モデル(Diffusion model)を使用しているAIサービス4選
拡散モデルは、現代のAI技術における重要なピースであり、多くの画像生成AIサービスで採用されています。
その代表例として以下の通りです。
・Stable Diffusion
・DALL-E
・Midjourne
・Adobe Firefly
これらのサービスは、すべて拡散モデルを用いて画像生成を行っていますが、その具体的な適用方法や特徴はそれぞれ違います。
ここでは、それぞれのAIサービスの差異について紹介していきますので、理解して拡散モデルの多様性とその可能性について深く理解しましょう。
Stable Diffusion
Stable Diffusionは、英国のスタートアップ企業Stability AIが開発したオープンソースの画像生成AIサービスです。
ユーザーはテキストを入力するだけで高品質な画像を生成でき、2024年現在に利用されている画像生成AIのほとんどがStable Diffusion系列が利用されています。
生成には拡散モデルを使用しており、オープンソースでも公開された数少ない拡散モデルです。
Stable Diffusionは、Webアプリケーションやローカル環境で利用でき、英語だけでなく日本語版も提供しています。
また、Stable Diffusionは「Photorealistic-fuen-v1」のような高品質画像生成や「text2video Extension」のようなAI動画生成サービスにも応用されており、画像生成AI市場への影響力は極めて大きいです。
しかし、学習データに著作権者の同意が得られていないデータが含まれていたり、一部の学習モデルが海賊版のデータを利用して学習をしているという課題も指摘されています。
Stable Diffusionについて詳しく説明した記事はこちら
DALL・E2
DALL・E2はOpenAIが開発した画像生成AIツールで、ユーザーがテキストを入力することで画像を生成するものです。
このツールは拡散モデルを利用し、特にクリエイティビティ面で優れています。
DALL・E2は、極端に見える英文を入力しても要素を上手に読み取り、1つのデータとしてまとめる能力が特徴的です。
また、生成した画像に手を加えて仕上げる機能も備えています。
無料で利用可能ですが、毎月の使用上限が設けられており、それを超える利用は有料です。
日本語の入力にも対応していますが、精度が不十分な可能性があるため、現在は英文入力が推奨されています。
DALL・E2はText to Imageのためのベースアップとして、2023年にGPT-3からGPT-4へと変更となり、さらに複雑なプロンプトにも対応できるようになりました。
結果、DALL・E2は拡散モデルを利用した画像生成AIツールの中でも、クリエイティブで高品質の画像を生成できるようになったのです。
しかし、使用上限や言語対応などいくつかの制約があるため、利用の際にはこれらを考慮はしなければいけません。
Midjourney
Midjourneyは元NASAの技術者らが開発した画像生成サービスで、一部のDiscordユーザーが利用できるのが特徴です。
このサービスでは拡散モデルが使用されていると考えられています。
Midjourneyでは無料で25枚まで、有料プランではモデルにより200枚から無制限までの画像生成が可能です。
特にコーポレートプランでは、生成した画像を企業向けの商用利用が可能となっています。
画像についてはDiscord上で提供される流れとなっていますが、精度の高い画像生成も可能で、またアニメ調のイラスト生成も可能です。
こちらの技術やアーキテクチャは公開されておらず、拡散モデルが使われているかどうかは開発者からの明言ありません。
しかし、拡散モデルを利用した技術との類似性から、その使用が推察されています。
Midjourneyについて詳しく説明した記事はこちら
Firefly
Adobe FireflyはAdobe社がリリースした画像生成AIツールで、著作権者の許諾を得た画像のみを学習データとして使用しています。
そのため、著作権侵害のリスクが非常に低いです。 また、拡散モデルを採用していることも公言されています。
Adobe FireflyはAdobe Stockやパブリックドメインの画像を学習データとして使用し、著作権侵害のリスクを最小限に抑えています。
これにより、商用利用でも安心して使用することが可能です。
くわえて、拡散モデルを採用していることから、Text to Imageだけでなく、Image to Imageや画像編集中の「
Image in painting」にも対応しており、高い汎用性を持っています。
無料での利用も可能ですが、使用回数には制限があるため、基本的にはサブスクリプション型の有料サービスがおすすめです。
Fireflyについて詳しく説明した記事はこちら
拡散モデル(Diffusion model)を実装するために必要なこと
拡散モデルの実装方法はさまざまなやり方がありますが、ここではPythonのライブラリであるPyTorchを使って説明していきます。
初心者の方にとっては少々専門的な内容になりますが、各ステップごとに説明していきますので、理解することを目指してみてください。
- 「Diffusionモデル実装編」: このステップではDiffusionモデルの基本的な仕組みを作ります。Diffusionモデルは大まかに言うと、データを生成するプロセス(forward process)と、生成したデータを元に戻すプロセス(reverse process)の2つです。この2つのプロセスと、モデルの精度を評価するための「損失関数」を作るのがこのステップでは大事になってきます。
- 「U-Net実装編」: 次に、Diffusionモデルの中で大事な役割を果たす「U-Net」という部分を作ります。U-Netは画像を扱うための特別な形をしたニューラルネットワーク(脳の神経細胞のネットワークを模した計算モデル)です。Diffusionモデルの中では、データをどのように生成するかを学習するために使います。
- 「学習編」: 最後に、1と2で作ったモデルを使って、コンピュータにデータ生成を学習させます。この学習を通じて、拡散モデルはどのようにデータを生成すれば良いかを覚えていきます。
これらのステップは少々複雑で、プログラミングやAIの知識が必要です。
ですから、ご自身で全てをおこなうのは大変かもしれません。その場合は、専門的な知識を持つ人に頼るのも一つの方法です。
拡散モデル(Diffusion model)まとめ
この記事では、拡散モデル(Diffusion Model)について紹介していきました。
拡散モデルとは元の画像データにノイズを加え、その後逆のプロセスでノイズを取り除くことで新たな画像を生成するというものです。
また、他の画像生成AIとの違いも明確で、VAE、GAN、Flow-based modelsといった他のモデルとは異なる特性を持っています。
最後に、拡散モデルがAI画像生成サービスの中でも有名サービスで利用されていますが、今の話題性から今後も多くの画像生成AIサービスでの利用も増えてくるでしょう。
また、高解像度化やさらなる技術の進歩・発展もしていくと予想されます。この記事を参考に、拡散モデルの重要性とその可能性についての理解して頂けたら幸いです。
さらに、今注目を集める生成AIリスキリングの第一歩を。生成AIパスポートとは?
生成AIパスポートは、一般社団法人生成AI活用普及協会(GUGA)が提供する、AI初心者のために誕生した、生成AIリスクを予防する資格試験です。AIを活用したコンテンツ生成の具体的な方法や事例に加え、企業のコンプライアンスに関わる個人情報保護、著作権侵害、商用利用可否といった注意点などを学ぶことができます。
⽣成AIの台頭により、AIはエンジニアやデータサイエンティストといった技術職の方々だけではなく誰もがAIを使えるようになりました。今、私たちがインターネットを当たり前に活用していることと同様に、誰もが生成AIを当たり前に活用する未来が訪れるでしょう。
そのような社会では、採用や取引の場面で、生成AIを安全に活用できる企業・人材であることが選ばれる前提条件になり「生成AIレベルの証明」が求められることが予測できます。生成AIパスポート試験に合格すると、合格証書が発行されるため、自身が生成AIを安全に活用するためのリテラシーを有する人材であることを、客観的な評価として可視化することが可能です。
ぜひあなたも生成AIレベルを証明し「生成AI人材」に仲間入りしましょう!