Li Mu の論文集中読解シリーズ 5: DALL E2 (GAN、VE/VAE/VQ-VAE/DALL E から拡散モデル DDPM/ADM までの生成モデルに関するクロストーク)


ポータル:

I.はじめに

1.1 DALL・Eの概要

「OpenAI が提供する 120 億パラメータのマジック モデル」を参照してください。

  2021年1月、OpenAIは120億個のパラメータを含む大規模モデルDALL・Eをリリースした。DALL・Eは、テキストを「読む」だけで、テキストの内容に応じて本物そっくりのマスターポートレートを「自動的に」生成できるため、リリースされ、すぐにインターネット上で人気になりました。当時の DALL・E の絵画スタイルは次のようなものでした。OpenAI は、
ここに画像の説明を挿入
  擬人化された動物やオブジェクトの作成、無関係な概念の合理的な方法の組み合わせ、テキストのレンダリング、既存の画像への変換の適用など、複数の機能があることを発見しました。
ここに画像の説明を挿入
ここに画像の説明を挿入
その他の生成デモについては、「OpenAI の 120 億パラメータ マジック モデル」を参照してください。

1.2 DALL・E2の概要

  OpenAIDALL·E昨年1月とGLIDE年末の発売に続き、1年後の2022.4月に発売される予定だDALL·E2それに比べてDALL·EDALL·E2よりリアルで正確なポートレートを生成できます。テキストの説明で指定されたコンセプト、属性、スタイルの 3 つの要素が統合され、「リアルな」画像と芸術作品が生成されます。解像度が4倍にアップ!DALL・E2の公式Webサイトを開くと、DALL・E2には次の機能があることがわかります。

  1. テキストから直接画像を生成すると、
    DALL·E2テキストの説明に基づいてオリジナルの実際の画像を生成できます (モデルはテキストと画像の両方の特徴をよく学習するため)。また、これらの概念、属性、またはスタイルを任意に組み合わせることができます。以下に例も示します。説明はテディベア、属性は最新の AI 研究、スタイルは 1980 年の月面であり、モデルは次の画像を生成します。
    ここに画像の説明を挿入

これらの変数を変更すると、新しい画像が生成されます。別の例は次の例です。

ここに画像の説明を挿入
2. 画像の拡張
DALL·E2元のキャンバスを超えて画像を拡張し、新しい拡張コンポジションを作成できます。
ここに画像の説明を挿入

  1. テキストから画像を編集すると
    DALL·E2、影、反射、テクスチャを考慮して、既存の画像を編集および変更したり、要素を追加および削除したりできます。たとえば、以下の例では、部屋にフラミンゴを追加します。常識的に考えてフラミンゴが水面にいる可能性は低いので、2の位置に追加するとフラミンゴの浮き輪になります。3 の位置の場合、さまざまな角度スタイルでフラミンゴを生成することもでき、これらには反射も含まれ​​ます。
    ここに画像の説明を挿入
    ここに画像の説明を挿入
  2. 与えられた画像をDALL·E2元のスタイルを維持しながら、さまざまなバリエーションを生成します (テキストは必要ありません)
    ここに画像の説明を挿入
  3. DALL・E と比較すると、同じテキストを与えた場合、DALL·E24 倍の解像度の画像を生成できます。

DALL·E2最後に、いくつかの倫理的考慮事項 (たとえば、一部のブラック ワードはレビュー メカニズムをバイパスする可能性がある)  のためDALL·E2、オープン ソースは存在せず、モデルをリリースすることはできません。その API でさえ、社内または研究のために少数のユーザーに公開されています (主に Twitter または Reddit の Big V)。順番待ちリストに載っていない、体験したいほとんどのお友達のために、DALL・E Miniを試すことができます。

  Boris Dayma らは、論文に基づいてミニですがオープンソース モデルを作成しましたDall·E Miniが、トレーニング セットとモデルは比較的小さく、生成の品質は低くなります。github ホームページで提供されている colab を直接開いて実行することも、huggingfaceスペースdale-miniで使用することもできます。
  huggingfaceSapces が提供されており、モデル コードをそこにアップロードした後、APP にして直接再生できます。
ここに画像の説明を挿入

1.3 ヴィンセントグラフモデルの進歩

  DALL・EでもDALL・E Miniでも、テキストに基づいて画像を生成する効果は非常に優れているため、2021.1のDALL・Eリリース以来、同様の作品が多数追随しています。

  • 2021年:
    • 1 月、OpenAI は DALL・E (GPT+VQ-VAE) を開始しました
    • 5月、清華社は中国で生成された画像をサポートするCogViewを立ち上げた
    • 11月にはマイクロソフトと北京大学が画像や短いビデオを生成できるNUWA(Nvwa)を立ち上げました
    • 12 月、OpenAI はGLIDEモデル (分類子を使用しないガイダンス拡散モデル)を開始しました。
    • 12月、Baiduは中国語もサポートするERNIE-ViLGモデルを発売した。
  • 2022年:

  ディフュージョンモデルは非常に人気のある方向性です。現在の普及モデルの開発レベルは 18 年ほど前の GAN と同等であり、改善できる点はまだたくさんありますが、GAN は 5 ~ 6 年前から開発されており、ほぼすべての開発が完了しています。発掘されてきました。

2. はじめに

  論文のタイトルである「Herarchical Text-Conditional Image Generation with CLIP Latents」は、CLIPテキストの特徴(条件)に基づいて特徴に基づいて階層的な画像生成を行うことを意味します。ここで階層的とは、DALL·E2最初に低解像度の画像(64*64)が生成され、再度256*256の画像が生成され、最終的に1024*1024の高解像度の大きな画像が生成されるという階層構造になっています。さらにDALL·E2、CLIP モデルによって学習されたテキスト画像ペアの特徴も使用され、画像のデコードと生成には拡散モデルが使用されます。これについては後で詳しく説明します。

  論文の筆頭著者である Aditya Ramesh は CLIP と DALL-E の研究に参加しており、GPT-3/コーデックスの著者と同様に拡散モデルの専門家も 2 名います。DALL·E2実際、それはCLIPモデルとGLIDEモデルの融合です。

2.1 概要

  OpenAI によってトレーニングされたものなど、以前の比較学習モデルはCLIP、一致する画像とテキストのペアを使用してトレーニングされており、非常に堅牢な画像特徴を学習できます。これらの機能は意味情報とスタイル情報の両方を取得できますが、分類タスクのみに使用されるのは残念です。

CLIPモデルの特徴を画像生成に  利用するために、著者は 2 段階のモデルを提案します。まず、テキストの説明が与えられ、CLIP に従ってテキスト特徴が生成されます (ここでの CLIP はフリーズされており、トレーニングされていません)。その後、次のようになります。

  • prior: テキスト特徴から CLIP のような画像特徴を生成します。著者は AR (自己回帰モデル) と拡散モデルを試しましたが、後者の方がうまく機能しました。
  • decoder: 事前に出力された画像特徴に基づいて画像を生成します。ここでも拡散モデルが使用されます。

  著者は、画像の特徴を明示的に生成する方法 (つまり、前段階) により、生成される画像の多様性 (多様性) が大幅に向上し、画像の忠実性やテキストとの一致度が損なわれないことを発見しました。 . . 拡散モデルに基づくデコーダは、画像の特徴に応じてさまざまな画像 (スタイルは似ているが詳細が異なる) を生成できます。また、テキストに基づいて画像を生成する構造により、CLIP の特性を簡単に利用できるモデルとなり、テキストを使用して画像を直接編集する機能を実現でき、ゼロショット (直接推論、トレーニング不要) です。

  つまり、この 2 段階でフレームワークが生成され、得られる写真はリアルかつ多様です。GAN によって生成される画像も、本来の目的が本物と偽物を混合することであるため、非常にリアルですが、多様性はあまり高くなく、生成される画像はすべて類似しており、オリジナルではありません。これは、優れた多様性と創造性のため、最新のモデルDALL·E2と両方のモデルが拡散モデルを使用する理由でもあります。ここでの成功はモデルを使用する上で非常に重要であり、著者はメソッドの章で比較的簡単なメソッドを書いています。デフォルトでは、誰もが CLIP モデルを学習しています。CLIP について知らない場合は、私の以前のブログ投稿「Li Mu の論文集中読解シリーズ 4: CLIP と改善作業の講義 (LSeg、GroupViT、VLiD、GLIPv1、GLIPv2、CLIPasso)」を参照してくださいImagen
  DALL·E2CLIP

2.2 概要とモデルの構造

  導入の最初の段落で、著者は CLIP モデルを再び爆発させ、CLIP によって学習された画像の特徴は非常に堅牢であると述べました (漫画のバナナであるかどうかなど、さまざまなディストリビューション/スタイルに対する堅牢性は非常に強いです)。バナナや自然界をスケッチします。バナナは区別できます)、ゼロショットを行うことができ、これはさまざまな下流の視覚分野で非常に効果的であることが証明されています。

  拡散モデルは非常に早く(15年前)に提案されたもので、確率分布モデルであり、生成される画像は確率分布からサンプリングされるため、多様性が非常に優れています。現在の普及モデルは、画像とビデオの生成において最高の結果を達成しています。

拡散モデルの忠実度は GAN ほど良くありません (GAN の目的は、非常に人気のあるDeepface  などの本物と偽物を混合することです)。しかし、20 年以来、DDPM から改良された DDPM、拡散モデルが GAN を超え、最新のものに至るまでDALL·E2Imagen拡散モデルの忠実度を向上させるために一連の手法が使用されてきました。その 1 つがブートストラップ手法ですguidance technique
  guidance technique忠実度を向上させるためにある程度の多様性を犠牲にすることができ、拡散モデルのスコアは GAN と同等になり、多様性はさらに強力になり、現在のモデルになりましたSOTADALL·E2著者は、その中で、これが非常に重要であることを具体的に述べておりguidance techniqueこれによりモデルの効果が大幅に向上します。

  以下は、作者が導入部分で投稿した、ベレー帽と黒いセーターを着た柴犬、化学試薬を混ぜる狂気のパンダ科学者、土星に宇宙飛行士のスーツを着たイルカ、など待ってください。画像は高解像度で、細部までよく表現されています。

ここに画像の説明を挿入

ここに画像の説明を挿入

モデル構造

  ここで著者は DALL・E2 の全体構造を示します。上部は 1 でCLIP、下部は ですDALL·E2
ここに画像の説明を挿入
1. CLIP トレーニング プロセスは
  次の図に示されており、CLIP入力は画像とテキストのペアのペアです (たとえば、入力は犬の写真であり、対応するテキストもそれが犬であることを示しています)。これらのテキストと画像は、それぞれ対応する特徴を通過してText Encoder出力Image Encoderされます。そして、これら出力されたテキスト特徴量と画像特徴量に対して比較学習を行う。
  モデル入力がn画像とテキストのペアの場合、n画像とテキストのペアは正のサンプル (下図の出力特徴行列の対角線上の青い部分) であり、もう一方はn 2 − nn^2- nn2n対のサンプルはすべて負のサンプルです。このように、モデルのトレーニング プロセスでは、n 2 − nn^2-n をn2n 個の負のサンプルの類似度 (コサイン類似度)cosine similarity
  CLIP使用されるデータセットはOpenAIインターネットから収集された 4 億個のテキストと画像のペアであるため、モデルの 2 つのエンコーダーは非常によくトレーニングされており、テキストと画像の特徴は密接にリンクされており、これは直接実現できる画像分類でもありますCLIPzero-shot理由。

  Text EncoderNLP で一般的に使用されるtext transformerモデルを使用することも、一般的に使用されるモデルまたは他のモデルImage Encoderを使用することもできますつまり、分類にはトレーニングや微調整は必要なく、分類はカテゴリのリスト (オープンボキャブラリー) に限定されなくなります。カテゴリ プロンプト (つまり、下の図の文) をカテゴリ ラベルに自由に追加すると、モデルは新しいカテゴリを検出できるため、ImageNet 上の検出可能なカテゴリは 1000 よりはるかに大きく、これが最も魅力的な場所でもあります。 。CNNvision transformer
  zero-shotCLIPA photo of {label}CLIP

ここに画像の説明を挿入
2. DALL·E2
  上の CLIP はトレーニング後、フリーズされ、トレーニングや微調整には参加しなくなります。DALL・E2 トレーニング中の入力もテキストと画像のペアです。要約で述べた 2 段階のトレーニングは次のとおりです。

  • prior: テキスト特徴から画像特徴を生成します
    • テキストと画像はロックされCLIP text encoder、エンコードされてCLIP image encoder、それぞれエンコードされたテキストの特徴と画像の特徴が取得されます。(ここでは、この部分は常にロックされており、写真部分は同じであるため、テキストとテキスト特徴は1対1に対応します)
    • priorモデルの入力は上記の CLIP によってエンコードされたテキスト特徴であり、そのグランド トゥルースは CLIP によってエンコードされた画像特徴であり、トレーニングはテキスト特徴を使用して画像特徴を予測することによって完了しますprior
    • 推論中、テキストは引き続きテキスト特徴を取得し、次にCLIP text encoderトレーニングに従ってprior生成された CLIP と同様の画像特徴を取得します(この時点では画像がないため、CLIP image encoderプロセスの一部はありません)。現時点では、画像の特徴は非常によくトレーニングされている必要があり、画像の生成に使用できるだけでなく、テキスト (豊富な意味情報を含む) と非常に密接に関連しています。
  • decoder: 生成された画像をデコードする通常の拡散モデル デコーダ。
    こちらのデコーダはバージョンアップ版だGLIDEそうですDALL·E2=CLIP+GLIDE
    ここに画像の説明を挿入

  実際、最も乱暴な方法は、融合特徴を備えた大規模なモデルが中間でトレーニングされている限り、テキスト特徴に基づいて直接画像を生成することです。しかし、著者が前に要約で述べたように、画像の特徴を生成する明示的なプロセス (つまり文本→文本特征→图片特征→图片) があり、画像の特徴から画像が生成される場合、モデルの効果ははるかに向上するため、2 段階の生成が必要になります。という方法が採用されています。
  さらに、論文では、著者はこの論文のモデルをunCLIP「ではない」とDALL·E2呼んでいます。これは、CLIP がテキスト/画像のトレーニングから特徴を取得し、トレーニングされた画像の特徴を使用して分類や検出などのタスクを実行できるためです (それ自体が分類のためのものです) 、その後の改善作業には検出やセグメンテーションなどを行うため)、入力→特徴というプロセスになります。DALL·E2CLIP の逆の処理である以下の処理な文本特征→图片特征→图片ので、筆者はこれを と呼んでいますunCLIP

3. アルゴリズムの予測

  DALL·E2GLIDE、CLIP、普及モデルをベースにしていますが、この部分ではGLIDEとの違いと実装の詳細のみを述べており、前の部分も実装の詳細であり、手法そのものについては触れていません。したがって、この部分だけからモデル全体の具体的なアルゴリズムを知ることは不可能です。

  以下は、GAN から AE (自動エンコーダー)、VAE シリーズの作業 (自動エンコーディング変分ベイズ) から拡散モデル、および一連のフォローアップ作業に至る、グラフ生成前の作業の簡単な紹介です。

3.1 GAN

  GANs(Generative Adversarial Networks、Generative Adversarial Networks) は、対立トレーニングから生成モデルを推定することです。生成モデルは、生成ニューラル ネットワーク (Generator Neural Network) と弁別ニューラル ネットワーク (Discriminator Neural Network) という 2 つの基本的なニューラル ネットワークで構成されGますD
  ジェネレーターは、G与えられたノイズ (一般に一様分布または正規分布を指します) からサンプリングすることによってデータを合成し、ディスクリミネーターは、Dサンプルが実際のサンプルであるか、G によって生成されたサンプルであるかを区別するために使用されます。の目標は、判別ネットワークを欺いて間違いを犯すGためにできるだけ多くの実際の画像を生成することでありの目標は、生成された画像を実際の画像からできるだけ分離することです。両者は互いに競い合いながら進化し、最終的にはG によって生成されるデータが実際のデータ (写真、シーケンス、ビデオなど) に近づくようになります。DDDGD(G(z)) = 0.5
ここに画像の説明を挿入

  GAN は分布をモデル化し、そのモデルがさまざまな分布を生成できることを期待しています。最も理想的な状態では、G は「本物を隠す」のに十分な画像 G(z) を生成できます。D の場合、G が生成した画像が本物であるかどうかを判断することは困難であるためD(G(z)) = 0.5、このときのノイズ分布は実際のデータ分布に近くなります。

GAN には次のような多くの制限もあります。

  • トレーニングが十分に安定していない。
    2 つのネットワークを同時にトレーニングする必要があるため、バランスの問題が伴います。学習がうまくいかないとモデルが崩れてしまうので、この欠点は非常に致命的です。
  • GAN によって生成される多様性は十分ではありません。
    GAN の主な最適化目標は、画像を可能な限りリアルにすることです。その世代の多様性は主に最初に与えられたランダムノイズによるものであり、創造性(独創性)は十分ではありません。
  • GAN は暗黙的に生成され、十分に美しくない
    GAN は確率モデルではなく、その生成はネットワークを通じて行われるため、GAN の生成は暗黙的です。モデルが何に基づいてトレーニングされているかが分からず、モデルがどのような分布に従うかが分からない場合、そのモデルはその後の VAE モデルや数学における拡散モデルほど美しくありません。

3.2 AE

はじめに:オートエンコーダー

  AEオートエンコーダは、エンコーダを使用して高次元の入力xxを供給するボトルネック アーキテクチャ (ボトルネック) です。xは基礎となる低次元コードhhh を入力し、デコーダを使用して潜在的なコードhhhは最終出力x ''{x}'バツ'目的関数は、x '' {x}'バツ' x {x}再構築できる×自分自身を再構築するため、Autoencoder と呼ばれます。

ここに画像の説明を挿入

3.3 DAE/MAE

  MAE の論文「マスクされたオートエンコーダはスケーラブルな視覚学習者である」これは主に、画像のピクセル領域の 75% をマスクアウトし、ViT encoder画像の特徴を入力および抽出し、それを使用してdecoder元の画像を再構成するため、
  教師なしトレーニング プロセスとなります。大規模な推論に使用でき、トレーニングを使用できます。MAE encoder下流タスクの微調整のために良好な画像特徴が抽出されます。ご興味がございましたら、私の投稿「Li Mu の論文集中読解シリーズ II: Vision Transformer、MAE、Swin-Transformer」をご覧ください。

  AE直後に出てきたのがDAE(Denoising Autoencoder)、つまり元の画像xxxはある程度スクランブルされてxc x_cバツc(破損したx)。次に、xc x_cバツcエンコーダに渡されると、フォローアップは同じであり、目的関数は依然としてx ''{x}''を期待しますバツ'元のx {x}×
  この改善は非常に有用であり、トレーニングされたモデルが非常に堅牢になり、特に視覚領域でオーバーフィッティングが起こりにくくなります。画像のピクセル情報により画像がある程度乱れた(汚染された)場合でも、モデルはその主な特徴を捉えて元の画像を再構成できます。

  これはMAE(Masked Autoencoder、マスクされたオートエンコーダ) にも似ています。トレーニング中に、作成者は画像のピクセル領域の 75% をマスクしました (下図のシーケンス内の灰色はマスクされた領域であり、デコーダには渡されません)。それでも、モデルは最終画像を再構成でき、画像の冗長性が実際に非常に高いことがわかります。著者は MAE の論文の中で、高いマスク率が非常に重要であるため、DAE または MAE の操作は依然として非常に効果的であると繰り返し強調しました。
ああ

MAEの主な構造

3.4 変分オートエンコーダ VAE

論文: 「変分ベイズの自動エンコーディング

  上記はすべて中間AE/DAE/MAE機能を学習するためのものですhを作成し、これらの機能を生成ではなく分類、検出、セグメンテーションなどの後続のタスクに使用します。途中で覚えたhhhは確率分布ではなく、再構成に特別に使用される特徴であるため、サンプリングできません。

  VAE(変分自動エンコーダ) は、このエンコーダとデコーダの構造を使用して生成するもので、AE との主な違いは、中間のボトルネック特徴を学習するのではなく、分布を学習することです。

  著者は、中央の分布がガウス分布 (平均μ \muである) であると仮定しています。μと分散σ \sigmaσで説明します)。具体的には、入力xxxをエンコードして特徴を取得した後、いくつかの FC 層を接続してμ \muμσ \sigmas

  μ \μμσ \sigmaσがトレーニングされた後、エンコーダーは破棄できます。推論中にトレーニングされた分布からzzz out (z = μ + σ ⋅ ε z=\mu +\sigma \cdot \varepsilonz=メートル+pε ) をデコードして、VAE を生成に使用できるようにします。
ここに画像の説明を挿入
  ベイズ確率の観点から、x から z を予測する以前のプロセスは、事後確率q θ ( z ∣ x ) q_{\theta }(z|x)q( z x )、学習された分布は事前分布p θ P ( x ∣ z ) p_{\theta }P(x|z)pP ( x z )x を予測するための z が尤度であるとすると、モデルのトレーニング プロセスは尤度を最大化することになります。このように、数学的な観点から見ると、VAE はよりクリーンで美しいものとなり、VAE には世代の優れた多様性など、いくつかの優れた特性もあります。

  VAE は確率分布からサンプリングするため、生成される多様性は GAN よりもはるかに優れています。これが、VQ-VAE/VQ-VAE-2 や VQ-VAE に基づく DALL・E など、将来的に VAE ベースの一連の作品が存在する理由です。

以下は、Su Jianlin 教師の「変分オートエンコーダー (1): これが起こった」からの抜粋です。

/ のここに画像の説明を挿入
背後にある内容(式)が多すぎるので、興味があれば見てください。

3.5VQ-VAE/VQ-VAE2

  VQ-VAE(Vector Quantized - variational AutoEncoder) は、論文「Neural Discrete Representation Learning」に初めて登場し、VQ-VAE-2 と同様、Google チームの傑作です。

  VQ はベクトル量子化されており、エンコードされたベクトルは離散的、つまり VAE が量子化されているため、VQ-VAE最終的なエンコードされたベクトルの各要素は整数になります。

3.5.1 なぜ量子化ベクトルなのか?

  実生活では、多くの情報 (音声、画像) が連続しており、タスクのほとんどは回帰タスクです。しかし、実際にそれを表現するとき、実際にこれらのタスクを解決するとき、私たちはそれを離散化しました。画像はピクセルに変換され、音声はサンプリングされ、うまく機能するもののほとんどは分類モデル (回帰タスク → 分類タスク) です。

  以前の VAE モデルのままである場合、モデルを大きくするのは簡単ではなく、分布を学習するのは簡単ではありません。分布zz を直接予測する代わりにzですが、codebookこれを 1 に置き換えます。コードブックはクラスタリングの中心として理解でき、そのサイズは通常 K*D (K=8192、Dim=512/768) です。つまり、長さ D のベクトル (クラスタリング中心) が 8192 個あります。

3.5.2 VQ-VAE アルゴリズム

  xx高さと幅を取得するためのx入力エンコーダー( h , w ) (h,w)( h ,w )特徴マップfffを計算し、特徴マップ内のベクトルとコードブック内のベクトル (クラスター中心) の間の類似性を計算します。次に、特徴マップに最も近いクラスター中心ベクトルの番号 (1 ~ 8192) を行列zz内側にあります

  トレーニングが完了すると、特徴量をエンコードする必要はなくなります。f、代わりに行列zz をzの数値はコードブック内のベクトルに対応し、新しい特徴マップfq f_qfq(量子化された特徴量子化された特徴)。最後に前と同じように、fq f_qを使用します。fq元の画像をデコードして再構築します。現時点では、量的特徴はランダムに生成されるのではなく常にコードブックから取得されるため、非常に制御可能であり、最適化が比較的簡単です。
ここに画像の説明を挿入

  • 左:VQ-VAEのモデル構造
  • 右:embedding space視覚化。エンコーダ出力z ( x ) z(x)z ( x ) は最も近い (最も近い) 点e 2 e_2e2
  • 赤い線の勾配▽ z L \triangledown _{z}LzL は、エンコーダに次のフォワードでの出力の変更 (パラメータの更新) を強制します。
  • エンコーダの出力とデコーダの入力は D 次元空間を共有するため、勾配にはエンコーダが損失を減らすためにパラメータをどのように変更するかに関する有効な情報が含まれています。

リファクタリングの効果をいくつか示します。
ここに画像の説明を挿入

  VQ-VAEまた、トレーニング済みのものを使用するなど、CV 分野での自己教師あり学習にも使用できますBEIT上記と同じプロセスを経た画像の特徴マップは、ネットワークをトレーニングするための自己教師ありモデルとして使用されます。フォローアップの作業 (ビジョン言語 BEIT) もあります。これも同様のアイデアですが、マルチモーダル タスクを実行するために Transformer エンコーダが使用される点が異なります。DALL·Ecodebookquantiseground truthVL-BEIT

3.5.3 制限事項

  VQ-VAE学習は固定されているcodebookため、VAE のようにランダムにサンプリングして生成することはできません。したがって、VQ-VAE は VAE ではなく、AE に似ています。学習したコードブックの機能は、高レベルのタスク (分類、検出) に使用されます。

  VA-VAE を生成したい場合は、ネットワークを別途トレーニングする必要がありますが、prior論文では、著者はネットワークをトレーニングしましたpixcl-CNN(生成にはトレーニング済みのコードブックを使用しました)。

3.5.4 VQ-VAE2(BigGANを超える画像生成効果)

  VQ-VAEと階層構造を単純に改良したものです。VQ-VAE2はローカルモデリングだけでなくグローバルモデリング(注目度の追加)も行うため、モデルの表現力がより強力になります。同時に、コードブックに従って事前学習を行ったので、生成された効果は非常に優れています。全体として、VQ-VAE2 は 2 段階のプロセスです。

  • 画像を適切に再現できるようにコーデックをトレーニングする
  • PixelCNN 自己回帰モデルをトレーニングして、エンコード テーブルの分布に適合できるようにし、ランダム サンプリングを通じて画像を生成します。

ステージ 1: 離散潜在空間への画像エンコード用の階層化された VQ-VAE をトレーニングします。

  • 入力画像xxx 、エンコーダを通じてE ( x ) E(x)E ( x ) を使用し、最近傍再構成を使用してE ( x ) E(x)E ( x )は、コードブックからの最も近いプロトタイプ ベクトルに置き換えられます。
  • コードブックは離散的なコードテーブルとして理解でき、顔画像を例にとると、髪の色、顔の形、表情、肌の色などがコードブックに含まれます。したがって、量子化とは、自己エンコーダによって生成されたベクトルE ( x ) E(x) をエンコード テーブルを通じて変換することです。E ( x )の離散化:
    ここに画像の説明を挿入
  • デコーダは別の非線形関数を通じてデータを再構築します。

ここに画像の説明を挿入

  作者提到其动机是把全局信息(如shape和geometry)以及局部信息(如纹理)分开建模。如图所示,top level用于model全局信息(256 * 256下采样得到 64 * 64),bottom level用于model局部细节(64 * 64再降为32 * 32)。解码器分别从两个隐层中重建图像。
  原文中还有再加middle level,实验结果表明加了middle level之后,生成的图像清晰度更高)。

stage2:在离散隐空间上拟合一个PixelCNN先验

  • 经过Stage1,将图片编码为了整数矩阵,所以在Stage2用自回归模型PixelCNN,来对编码矩阵进行拟合(即建模先验分布)。
  • 通过PixelCNN得到编码分布后,就可以随机生成一个新的编码矩阵,然后通过编码表 E E E映射为浮点数矩阵,最后经过deocder重构得到一张图片。

生成效果
ここに画像の説明を挿入
ここに画像の説明を挿入

3.6 DALL·E

论文《Zero-Shot Text-to-Image Generation》、OpenAI的DALL·E官网代码

  VQ-VAE的生成模式是pixcl-CNN +codebook,其中pixcl-CNN就是一个自回归模型。OpenAI 一看,这不是到了施展自己看家本领GPT的时候了吗,所以果断将pixcl-CNN换成GPT。再加上最近多模态相关工作的火热进展,可以考虑使用文本引导图像生成,所以就有了DALL·E

DALL·E模型结构如下:

论文里没有画出模型结构,网上找了一圈暂时也没发现,只好贴出视频里的手绘图了,将就看一下

ここに画像の説明を挿入
DALL·E和VQ-VAE-2一样,也是一个;两阶段模型:

  • Stage1:ビジュアルコードブ​​ックの学習
    • 入力: 画像とテキストのペア (トレーニング中)。
    • エンコーディング特徴
      テキストは BPE によってエンコードされ、256 次元の特徴ft f_tが取得されます。f; 画像 (256×256) は、VQ-VAE を通じて画像特徴fq f_qを取得します。fq(これは上記でトレーニングされた VQ-VAE です。そのコードブックを直接使用してください。fq f_qfq32×32までの寸法)
  • Stage2:先例を学ぶ
    • 元の画像をfq f_q
      に再構築しますfq1024 次元のトークンをまっすぐにして、256 次元のテキスト フィーチャft f_tを接続します。f、1280次元のトークン列が得られます。次に、それを GPT (マスクされたデコーダー) に直接送信して、元の画像を再構築します。

  推論中、入力テキストはテキスト特徴を取得するためにエンコードされ、自己回帰手法を使用して GPT を通じてテキストが生成されます。生成された複数の画像は、CLIP モデルと入力テキストを通じて計算され、最も類似した (最も適切な説明を表す) 画像が呼び出されます。
  さらに、トレーニングの詳細も数多くあり、DALL・E のほぼ半分は、120 億個のパラメーターを使用してモデルをトレーニングする方法と、そのような大規模なモデルのトレーニングをサポートするのに十分なデータセットを収集する方法に当てられています。 。

3.7 拡散モデル(オリジナル)

参考文献 Zhihu: 「今年人気の CV 普及モデル (DDPM) を理解する方法」

  前述したように、 、 などの一部の主流のビンセント グラフ モデルではDALL·E 2画像生成モデルとしてImagen拡散モデル ( ) が採用されており、これも拡散モデルの研究が盛り上がるきっかけとなりました。Diffusion ModelGANと比較して、拡散モデルの学習はより安定しており、より多様なサンプルを生成することができ、OpenAIの論文はDDPM拡散モデルがGANを超える可能性があることも証明しています。

簡単に言うと、拡散モデルは、順拡散プロセス (フォワード) と逆生成プロセス (リバース) の 2 つのプロセスで構成されます。

  • 順拡散処理:データがランダムノイズ(雑音)になるまで、データにガウスノイズを徐々に加えていく処理
  • 逆生成プロセス: ランダム ノイズから開始し、画像を生成するまで徐々にノイズを除去します (ノイズ除去)

拡散モデルと他の主流の生成モデルの比較は次のとおりです。
ここに画像の説明を挿入
  下図に示すとおりです。順方向プロセスと逆方向プロセスはどちらもパラメータ化されたマルコフ連鎖です。
ここに画像の説明を挿入

  1. 拡散プロセス: ノイズ化

  詳細な説明は次のとおりです: 与えられた画像x 0 x_0バツ0、それに小さな正規分布ノイズを徐々に加えます。x0x_0バツ0少量のノイズ (いくつかのノイズ ポイントなど) を追加してx 1 x_1を取得します。バツ1を追加し続けて、x 2 x_2を取得します。バツ2...、累積tttステップ後、xt x_tバツ上で説明したノイズ付加プロセスは次の式で書くことができます。
ここに画像の説明を挿入
  上記の式は次のことを意味します。 by xt − 1 x_{t-1}バツt 1xt x_{t}を取得バツ処理q ( xt ∣ xt − 1 ) q(\mathbf{x}_{t} \vert \mathbf{x}_{t-1})q ( xxt 1)、分布NNN._ _ ここで( β t ) t = 1 T (\beta _{t})_{t=1}^{T}( b)t = 1Tは各ステップで使用される分散です。
  このノイズが見えますzzzのみβbそしてxt − 1 x_{t-1}バツt 1を決定することは、学習可能なプロセスではなく、固定値です。したがって、 xバツ0、各ステップβ t \beta _{t}を事前に決定しますbの固定値、任意のステップのノイズの多いデータxt x_{t}を推定できます。バツ、拡散プロセス全体もマルカフ連鎖ですMarkov chain(上のボックスで選択された式)。
  適切に設計されたvariance schedule条件 (各ステップで設定された分散。通常は後ろの分散が大きくなります) の下で、拡散ステップ数TTがTが十分に大きい場合、最終的なx T \mathbf{x}_{T}バツT元のデータは完全に失われ、ランダムノイズ(等方性のある正規分布)となります。
ここに画像の説明を挿入

  拡散という言葉は熱力学からインスピレーションを得たものです。熱力学では、高密度の物体はゆっくりと低密度の物体に浸透します。このプロセスは 拡散 と呼ばれますdiffusionたとえば、スプレーした香水はゆっくりと部屋全体に広がり、最終的には一種のbalance(等方性正規分布、ランダムノイズに近づく)に達します。
  この概念は CV 分野で引用されており、上記のモデルは 拡散モデル と呼ばれますDiffusion Model
  拡散プロセスは多くの場合固定されています。つまり、DDPM線形スケジュールなど、事前に定義された分散スケジュールが採用されますvariance schedule

ここに画像の説明を挿入

  1. 逆のプロセス: ノイズ除去

  逆過程の各ステップの真の分布 q ( xt − 1 ∣ xt ) q(\mathbf{x}_{t-1} \vert \mathbf{x}_t) がわかっている場合q ( xt 1x)から、ランダム ノイズz : x T 〜 N ( 0 , I ) z:\mathbf{x}_T \sim \mathcal{N}(\mathbf{0}, \mathbf{I})z:バツTN ( 0 ,I ) (GAN の z と同様) 開始し、徐々にノイズ除去を行うことで実際のサンプルを生成できます (xt → xt − 1 → xt − 2 , . . , → x 0 x_{t}\rightarrow x_{t-1 }\rightarrow x_{t-2},...,\rightarrow x_{0}バツバツt 1バツt 2... バツ0):
ここに画像の説明を挿入

  推定分布q ( xt − 1 ∣ xt ) q(\mathbf{x}_{t-1} \vert \mathbf{x}_t)q ( xt 1x)ニューラルネットワークを使用して実行できます。具体的には、 xt x_tのようなノイズをランダムにサンプリングするとします。バツ(または他のステップ)。徐々にx 0 x_0になるようにモデルをトレーニングできます。バツ0使用されるこれらのモデルはすべてパラメーターを共有します (つまり、モデルが 1 つだけ) が、複数回サンプリングされます。拡散モデリングは、最終的な生成モデルを構成するこれらのトレーニング済みネットワークを取得することがすべてです。

  トレーニング後、いつでもサンプリングしてくださいttt xt x_tでのノイズ加算結果バツα t = 1 − β t \alpha _{t}=1-\beta _{t} とします。ある=1bα ˉ t = ∏ s = 1 t α s \bar{\alpha }_{t}=\prod _{s=1}^{t}\alpha_{s}あるˉ=s = 1あるs(不足しているのは乗数です)、次のようになります。
ここに画像の説明を挿入

  順方向プロセスと逆方向プロセスは両方ともパラメータ化ですMarkov chain続きにはマルコフ連鎖、隠れ変数モデル、最適化関数などたくさんの数式が出てきますが、また書くと脱線します。興味があれば、上記の Zhihu の記事を読んでください。派生記事も多数あります。

安定した拡散もこのプロセスを通じて行われ、グラフ生成操作を実行できます (拡散後は、より多くのスペースが確保されます)。

ここに画像の説明を挿入

  1. バックボーン (ほとんどの拡散モデルで選択U-Net)

  上記からわかるように、モデルの入力次元と出力次元は、前方プロセスと後方プロセスを通して変化しません。したがって、diffusion model最も一般的なモデル構造は ですU-Net
  U-Netエンコーダを使用して画像を少し圧縮し、デコーダを使用してそれを段階的に復元するため、入力サイズと出力サイズは常に同じになり、拡散モデルのバックボーンに非常に適しています。
  さらに、効果をより良く復元するために、以前の情報を後ろに直接渡してより詳細を復元できるU-Netいくつかの操作が含まれています。skip connectionRiga にいくつかのアテンション操作を追加するなど、フォローアップではまだいくつかの改善が行われておりU-Net、これにより画像生成が改善されます。
ここに画像の説明を挿入
4. 限界: トレーニングと推論が遅い

  拡散モデルの最大の制限の 1 つは、トレーニングと推論が非常に遅いことです。GAN の場合、結果は推論中に 1 回フォワードで生成できますが、拡散モデルは何度もフォワードする必要があり、非常に時間がかかります。特に最も原始的な拡散モデルttt = 1000 は、ランダム ノイズを選択した後、最終生成結果を得るまでに画像を少しずつ復元するのに 1,000 回のフォワードが必要であることを意味するため、推論には拡散モデルが最も遅くなります。

  1. 開発プロセスは
    以下でゆっくり紹介します

3.8 DDPM

3.8.1 主な貢献

  DDPM2020 年 6 月に公開されました。元の拡散モデルにいくつかの改良が加えられ、最適化プロセスが容易になりました。DDPM普及モデルで初めて良好な画像を生成できたものであり、普及モデルの先駆けともいえる。主に、次のDDPM2 つの重要な貢献があります。

  1. 画像改善を予測から予測ノイズに変換する
  • 著者は、毎回xt x_{t}から直接、バツxt − 1 x_{t-1} を予測しますバツt 1、この画像から画像への変換は十分に最適化されていません。そこで著者はxt x_{t}から直接予測することを検討します。バツxt − 1 x_{t-1}バツt 1このステップで追加されたノイズε \varepsilonε、これは問題を単純化します。
  • ResNetこの操作は残差構造にある程度似ています。いくつかのレイヤーが追加されるたびに、モデルはxxから直接取得されたものではなくなります。xでyyを予測するy (これはより困難です) ですが、新しい層に( y − x ) (yx)( y× このようにして、新しい層は再学習する必要がなく、xxxと真の値yyy間の残差はresidual)
  • 目的関数
    • DDPM は、構造化オートエンコーダーを使用して、時間 t におけるガウス ノイズzzU-Netを分析します。zを予測します。トレーニングの目標は、予測されたノイズが実際のノイズと一致することを期待することであるため、目的関数は予測されたノイズとzzzのL1損失:p ( xt − 1 ∣ xt ) = ∥ z − f θ ( xt , t ) ∥ p(\mathbf{x}_{t-1} \vert \mathbf{x}_t)=\left \| z-f_{\theta }(x_{t},t) \right \|p ( xt 1x)=∥z _f( ×t )
    • ここにzzをタグ付けしますzは順拡散プロセスの各ステップで追加されるため、既知です。ここでf ε f_{\varepsilon }feU-Netこれはモデル構造に対応し、t はU-Net別の入力ですtime embedding
    • この単純な L1 損失関数を使用して、モデルをトレーニングできます。
  • time embedding
    • U-Net現時点でのxt x_{t}を除くモデル入力バツtime embedding、別の入力(トランスフォーマーの正弦波位置エンコーディングと同様)があり、これは主にU-Netモデルに伝えるために使用されます。これが逆プロセスの最初のステップです。
    • time embeddingの重要な機能はブートストラップU-Netの生成です。
        U-Netの各層は共有パラメータなので、異なる入力に応じて異なる出力を生成するにはどうすればよいでしょうか? なぜなら、ランダムなノイズから始めて大まかな輪郭 (全体的な特徴) を生成し、次に詳細を段階的に追加してリアルな画像 (局所的な特徴、角や角) を生成したいからです。
        現時点では、time embeddingモデルが現在どのステップにあるのか、私の世代では大まかに行う必要があるのか​​、それとも詳細に行う必要があるのか​​を思い出させることができるものがあります。したがって、これを追加するとtime embedding、生成とサンプリングに非常に役立ち、モデルの効果を大幅に向上させることができます。
    • xt x_{t}バツ合計はtime embedding直接加算、連結、またはその他の方法で操作できます。
  1. 正規分布の平均のみを予測する

  正規分布は、平均と分散によって定義されます。著者はここで、実際にはモデルは分散を学習する必要はなく、平均のみを学習する必要があることを発見しました。逆のプロセスでは、ガウス分布の分散項目は定数を直接使用しており、モデルの効果はすでに非常に優れています。したがって、モデルの最適化の難易度は再び低下します。

3.8.2 まとめ: VAE との違い

  DDPMこれもある程度似ておりVAE、エンコーダ/デコーダ構造とみなすこともできますが、いくつかの違いがあります。

  1. 拡散プロセスでは、エンコーダが段階的にzzに進みます。zxtx_t)バツ)、固定プロセスですが、VAE のエンコーダーは学習可能です。
  2. DDPM の各ステップの出力と出力は同じ次元ですが、一般的なオートエンコーダー (AE/VAE など) の場合、中間のボトルネック特徴は入力よりもはるかに小さいことがよくあります。
  3. 拡散モデルにはステップ(時間ステップ、時間埋め込み)という概念がありstep、画像を生成するためにモデルは多くのステップを経る必要があります。すべてのステップでU-Netパラメータは共有されます。

3.8.3 DDPM の改善

  DDPM が拡散モデルを実際のデータセットで適切に機能させると、突然多くの人々の関心を集めました。DDPM は数学的に特にシンプルで美しく、順方向でも逆方向でも、多くの推論によって証明できるガウス分布であり、多くの優れた特性があるためです。
DALL・E2の2作目、3作目を見て、すぐに勉強し始めました。そこで 2020 年末頃、OpenAI が再び立ち上げられましたimproved DDPM
improved DDPMDDPM と比較して、いくつかの変更が加えられています。

  • DDPM の逆の処理で、ガウス分布の分散項目は学習せずに定数をそのまま使用します。improved DDPM著者は、分散効果がより優れているはずである場合、変更後のサンプリングと生成の効果ははるかに優れていると感じています。
  • DDPMノイズを追加するときに使用される線形変更がvariance scheduleコサイン スケジュールに変更され、効果が向上します (学習率が線形からコサインに変更されたのと同様です)。
  • 単純にスケールモデルを試してみると、生成効果がより良くなります

3.9 ADM ネット: 拡散モデルは GAN よりも強力です

3.9.1 主な改善点

  上記の 3 番目の点は、OpenAI にとって間違いなく良いニュースです。そこで二人はすぐに研究を開始し、 「拡散モデルが画像合成で GAN に勝つ」という論文を発表しましたimproved DDPM。この論文には、以前の論文と比べていくつかの改善が加えられています。

  • 大規模なモデルを使用します。ネットワークを増やして広げ、より多くのアテンション ヘッドを使用し、自己注意のスケールを増やします (単一スケールの注意は複数スケールの注意に変更されます)。
  • classifier guidanceサンプリングと生成のためにモデルをブートストラップするために使用される方法。これにより、生成された画像がよりリアルになるだけでなく、バ​​ックサンプリング プロセスも高速化されます。この論文では、ノイズから画像を生成するために必要なサンプルはわずか 25 個です。
  • 新しい正規化方法が提案されています。記事では、Adaptive Group Normalizationステップ数に基づく適応正規化です。このメソッドはグループ正規化を改良したものです:
    AdaGN ( h , y = [ ys , yb ] ) = ys GroupNorm ( h ) + yb \text{AdaGN}(h,y=[y_s,y_b]) = y_s \text{グループノルム}(h)+y_bAdaGN ( h ,y=[ ysyb])=ysグループノルム( h )+yb

上式のhhhは残差ブロック アクティベーション関数yyの出力です。yは、後で使用されるタイム ステップとクラス情報の線形層埋め込みです。グループ正規化は、入力チャネルの方向をグループ化して正規化するための正規化方法であり、ローカル LayerNorm として理解できます。
ここに画像の説明を挿入

3.9.2 モデル効果

  GAN を上回る拡散モデルが登場してから、ImageNet 生成タスクで最先端の BigGAN を破り、初めて拡散モデルのスコアを超えましたBigGANs以下は定性的に生成された結果で、左側が BigGAN-deep、中央が ADM、右側が実際の画像です。
ここに画像の説明を挿入

3.9.3 分類子のガイダンス

  この論文以前はDiffusion Models Beat GANs、拡散モデルによって生成された画像も非常にリアルでしたが、IS スコアと FID スコアを計算すると、GAN ほど良くありませんでした。この場合、論文で生成された画像は著者が慎重に選択したものであると誰もが考えるため、結果に十分な説得力がなく、原稿を通過して論文を獲得できないことになります。

  IS (インセプション スコア) と FID (Frechet インセプション ディスタンス スコア) は、現在画像生成モデルの一般的な判別指標です。簡単に言うと、IS生成された画像の信憑性や多様性から生成モデルを評価し、スコアが高いほど良く、FID実際の画像と生成された画像の「距離」を測定するために使用され、スコアが小さいほどスコアが高くなります。より良い。

  スコアは依然として非常に重要ですが、同時に、拡散モデルのサンプリングと画像の生成は非常に遅いため、モデルのサンプリングと生成に役立つ追加のガイダンスがあればよいのにと著者は考えています。そこで、著者は以前から一般的な手法を借用しましたclassifier guided diffusion。つまり、逆のプロセスでトレーニングを行いながらU-Net、単純な画像分類器もトレーニングしました。この分類器は ImageNet でトレーニングされていますが、拡散モデルの入力には常に大量のノイズが追加されているため、画像には大量のノイズが追加されており、実際の ImageNet 画像とは大きく異なるため、最初からトレーニングされています。

  サンプリング時xt x_tバツその後、それを分類器に直接投げると、画像分類が正しいかどうかを確認できますが、このときクロスエントロピー目的関数を計算し、それに応じて勾配を取得することができます。次に、 xt x_tで分類子を使用しますバツ勾配情報∇ xt log p θ ( xt ) \nabla_{x_t}\text{log}p_{\theta}(x_t)バツログp( ×)は、サンプリングと拡散モデルの生成をガイドします。

  この勾配は、現在の画像にオブジェクトが含まれているかどうか、またそのオブジェクトが本物であるかどうかを暗示します。U-Netこの種のグラデーションに基づいて、意味を理解するだけでなく、実際のオブジェクトと一致する必要がある、さまざまな詳細なテクスチャを含む、より現実的な画像を生成するのに役立ちます

  分類子ガイダンスを使用した後、生成される効果はより現実的になり、さまざまな開始スコアのスコアが大幅に向上しました。つまり、本稿で初めて普及モデルのスコアを上回ったことになるBigGANsしかし、著者はまた、これは実際には、生成される画像の忠実度 (リアリズム) と引き換えに、多様性をいくらか犠牲にしているとも述べています (無条件拡散モデルの場合、分類子勾配の誘導により、クラスごとに出力されるモデルのパフォーマンスが向上します)。しかし、その多様性と忠実度は GAN よりも優れており、画像生成の分野で拡散モデルの地位を即座に確立したため、このトレードオフには価値があります。
ここに画像の説明を挿入
  上の図からわかるように、classifier guidance精度と IS が増加し、FID と再現率が減少しています (条件付きモデルにより強度が増加し、FID が増加しますが、それでも分類器ガイダンスなしの場合よりも高いです。さまざまな実験があります)スコアは後で、投稿されません)。

最も単純で最も原始的な方法以外にもclassifier guidance、他にも多くの誘導方法があります。

  • CLIP guidance: 簡易分類子をCLIPに置き換えると、テキストと画像がリンクされます。現時点では、モデルの採用と生成をガイドするためにグラデーションを使用できるだけでなく、そのサンプリングと生成をガイドするためにテキストも使用できます。(ここでは Vincent の図が機能することが判明しました)
  • 画像側のガイダンス: ピクセルレベルのガイダンスに画像再構成を使用することに加えて、画像の特徴とスタイルのレベルでのガイダンスも提供でき、グラム行列のみが必要です。
  • テキスト側: トレーニングされた NLP 大規模モデルをガイドとして使用できます

上記のすべての誘導方法は、次の目的関数でyyになります。y、つまりモデルの入力はxt x_{t}バツそして、時間の埋め込み、および条件。条件を追加すると、モデルを迅速かつ適切に生成できます。
p ( xt − 1 ∣ xt ) = ∥ z − f θ ( xt , t , y ) ∥ p(\mathbf{x}_{t-1} \vert \mathbf{x}_t)=\left \| z -f_{\theta }(x_{t},t,y) \right \|p ( xt 1x)=∥z _f( ×y )

3.9.4 分類器フリーガイダンス(条件付き生成監視・無条件生成)

「拡散モデルに基づくテキストガイド画像生成アルゴリズム」「DDPM から GLIDE へ: 拡散モデルに基づく画像生成アルゴリズムの進歩」

  ガイドのために追加のネットワークが導入され、推論がより複雑になるため (拡散モデルを繰り返し反復する必要があり、反復ごとに追加のスコアを計算する必要がある)、フォローアップ作業分類器の無料ガイダンスが導入されます。
  classifier free guidanceこのメソッドはモデル入力の内容のみを変更します。条件付き入力 (ランダムなガウス ノイズ入力とガイダンス情報) に加えて、無条件のサンプリング入力もあります。両方の入力が同じ拡散モデルに供給されるため、無条件および条件付きで生成できます。
  条件付き出力f θ ( xt , t , y ) f_{\theta }(x_{t},t,y) を取得します。f( ×y )および無条件出力f θ ( xt , t , ϕ ) f_{\theta }(x_{t},t,\phi )f( ×ϕ )、前者を使用して後者を監視し、トレーニング用の拡散モデルをガイドできます。最後に、逆拡散を生成に使用する場合、無条件生成を使用して条件付き生成と同様の効果を達成できます。このように分類器の制限を取り除くため、分類器フリー指導と呼ばれます。

  たとえば、トレーニング中に画像とテキストのペアを使用する場合、この時点でテキストをガイダンス信号として使用できます。つまり、トレーニング中にテキストをyyとして使用します。y画像を生成します。それからyyyは削除され、空のセットϕ \phiϕ (空シーケンス)、追加の出力を生成します。

  拡散モデルは本質的にトレーニングにコストがかかりますが、classifier free guidanceこの方法ではトレーニング中に 2 つの出力を生成する必要があるため、トレーニングのコストが高くなります。しかし、この方法は本当に効果があるのでGLIDE、 、DALL·E2、でImagen使用されており、非常に重要なテクニックであることが記載されています。非常に多くのテクニックを使用した結果、GLIDE最終的に非常に優れたヴィンセント グラフ モデルが完成し、使用するパラメーターは 35 億個だけで、生成効果とスコアはDALL·E(120 億個のパラメーター) よりも優れています。

  OpenAI はGLIDE、この方向性が信頼できると判断し、すぐにフォローアップし、DALL·EVQ-VAE ルートを考慮しなくなりました。階層世代(56→256→1024)に変更したりGLIDE、以前のネットワークに追加したりして、ようやく入手できましたDALL·E2

4.DALL·E2アルゴリズム

「論文読解:AIバーチャルヒューマンペインター OpenAI DALL-E2」を参照

4.1 2段階生成

  1 時間かけて道を切り開き、DALL·E2以下のアルゴリズム部分の説明を始めてください。
  論文のトレーニング データセットは画像xxで構成されていますxとそれに対応するキャプション (キャプション)yyy構成。指定された画像xxx、トレーニングされた CLIP モデルはそれぞれテキスト特徴zt z_tzと画像の特徴zi z_iz私は次に、キャプションから画像を生成するように 2 つのコンポーネントをトレーニングします。

  • prior: 従来モデルP ( zi ∣ y ) P(z_i|y)P ( z私はy ) 、タイトルyyによるy はCLIP 画像特徴を生成しますzi z_iz私は
  • decoder: デコーダP ( x ∣ zi , y ) P(x|z_i,y)P ( x z私はy )、CLIP画像特徴を生成しますzi z_iz私は(およびオプションのテキスト タイトルyyy ) 画像xx条件付き×

  前述したように、従来モデルの入力はCLIPでエンコードされたテキスト特徴量であり、そのグラウンドトゥルースはCLIPでエンコードされた画像特徴量であり、グラフィックテキストペア入力モデルであるため、CLIPエンコードが可能です。

ここに画像の説明を挿入
DALL·E2二段発電機も   同様です。最初に CLIP をトレーニングした後、任意のテキストyyy、CLIP テキスト エンコーダーによって生成されたテキスト特徴。次に、事前に従って画像特徴を生成し、最後にデコーダを使用して画像特徴をデコードし、生成された画像を取得します。CLIP+prior+decoder はウェンセン グラフ モデル全体です:
P ( x , y ) = P ( x , zi ∣ y ) = P ( x ∣ zi , y ) P ( zi ∣ y ) P(x,y)=P ( x,z_i|y)=P(x|z_i,y) P(z_i|y)P ( x ,y =P ( x ,z私はy )=P ( x z私はy ) P ( z私はy )

  • P ( x , y ) P(x, y)P ( x ,y ) : テキストyyyイメージxxバツ
  • P ( x , zi ∣ y ) P(x,z_i|y)P ( x ,z私はy ) : テキストyyy は画像特徴を生成しますzi z_iz私はそして写真xx×CLIP は常にロックされているため、画像xxx、固定zi z_iz私はつまり、この 2 つは同等なので、P ( x , y ) = P ( x , zi ∣ y ) P(x,y)=P(x,z_i|y) となります。P ( x ,y =P ( x ,z私はy )
  • P ( x ∣ zi , y ) P(x|z_i,y) は上で導入されましたP ( x z私はy )P ( zi ∣ y ) P(z_i|y)P ( z私はy )をそれぞれdecoder合計しP ( x , zi ∣ y ) P(x,z_i|y) をprior求めます。P ( x ,z私はy )したがって、確率論的な観点から、この 2 段階の生成は正当化されます。

4.2 デコーダ

  デコーダは、拡散モデルを使用して CLIP グラフィック機能 (およびオプションのタイトルyy)を生成します。y ) を条件付き画像として使用していますが、この部分は GLIDE をベースに改良されています。
  まず、デコーダはCLIP guidanceclassifier-free guidance。つまり、ここでの逆拡散のプロセスでは、ガイダンス情報が CLIP モデルまたはタイトルyyy、そしてもちろん、それがフレッドの指導である場合もあります。これにより、10% の確率で CLI 機能がランダムにゼロに設定され、50% の確率でテキスト タイトル yy が削除されますyこのトレーニング方法はコストが高くなりますが、より良い結果を得るために、OpenAI は使用できるものはすべて使用します。

  CLIP guidance上記の 3.9.3 と 3.9.4 で紹介したようにclassifier-free guidance、ここにはまだ CLIP ガイダンスのトレーニングの詳細がいくつかありますが、これはコードを見ることによってのみ知ることができ、ビデオでは詳しく説明されていません。

  次に、解像度を向上させるために、DALL·E2階層的な生成も使用されます。つまり、2 つのアップサンプリングされた拡散モデルがトレーニングされます。1 つは画像の解像度を 64x64 から 256x256 にアップサンプリングし、もう 1 つはそれを 1024x1024 にアップサンプリングします。同時に、アップサンプラーの堅牢性を向上させるために、ノイズも追加されます (最初のアップサンプリング段階ではガウスぼかしが使用され、2 番目の段階ではより多様な BSR 劣化が使用されます)。

  最後に、著者は、ホロー畳み込みのみ (セルフアテンションなし、つまり Transformer なしの畳み込みのみ) を使用するため、推論中にモデルを任意の解像度に適用できることも強調しています。この論文では、タイトルをアップサンプリングすることに利点は見出されず、ガイダンスなしで無条件の ADM ネットを使用しました。

4.3以前

  priorテキスト特徴から画像特徴を生成するために使用され、著者のこの部分では 2 つのモデルをテストしました。効果が良好であるため、どちらのモデルも分類子を使用しないガイダンスを使用しました。

  • AR (自己回帰モデル)
    • DALL・E や GPT と同様に、CLIP 画像の特徴はzi z_i です。z私は離散コードシーケンスに変換され、タイトルyyがマスクされます。yは自己回帰予測に使用されます。
    • CLIPでは、OpenAIは、この自己回帰予測モデルの学習効率が低すぎると述べており、モデルの学習を高速化するために、PCAの次元削減も使用されています。
  • 普及モデル:
    • 処理シーケンスが使用されますTransformer decoderここでの入力と出力はすべて埋め込みシーケンスであるため、U-Net の使用には適していません。
    • 入力シーケンスには、テキスト、CLIPテキスト特徴量、3.8.1で述べたタイムステップ埋め込み、ノイズ付加後のCLIP画像特徴量、Transformer独自の埋め込み(CLSトークンなど)が含まれます。最終的に、このシーケンスは、ノイズを追加せずに CLIP 画像の特徴を予測するために使用されますz私は
    • この論文では、汚染されていない画像の特徴を直接予測すると、zi z_i が得られることがわかりました。z私はこれはノイズを予測するよりも優れており (提案されて以来、誰もがノイズを予測することに変更したため)、平均二乗誤差が予測に使用されます (次の式でzi z_iDDPMがわかります)z私はノイズの代わりに)
      ここに画像の説明を挿入

4.4 まとめ: 奇跡を起こすために努力する

  画像生成には多くのスキルが必要であり、モデルの概要を描くのが難しい場合がよくあります。しかし、これだけ話していると、これらのテクニックが役立つ場合もあれば、そうでない場合もあることがわかるでしょう。

  • DDPM直接予測画像を予測ノイズに変更することで、最適化プロセスを簡素化することが提案されています。ただし、DALL·E2ここではノイズを予測するこのアプローチには従いません。
  • DALL·E2画像特徴を生成する明示的なプロセスがあれば、モデルの効果ははるかに優れていることが提案されているため、2 段階の生成方法が採用されています。しかし、それはImagen最初のもので直接解決され、より単純で効果は非常に優れています。U-Net
  • CLIPとDALL·E2両者は、自己回帰モデルのトレーニングはコストがかかりすぎ、トレーニングは非効率すぎると主張しています。しかし 7 月頃、Google は自己回帰テキスト画像生成にパスウェイ モデルを使用して Parti を再び開始し、その効果はDALL·E2と を直接上回りましたImagen

結局のところ、すべては奇跡なのです。スケールのみが問題であり、他のモデルやトレーニング手法については議論できます。

5. 画像処理

この文書では、次の 3 つの操作について説明します。

5.1 変更点

画像が与えられると、
ここに画像の説明を挿入
  上記のモデルの概要から多くの類似した画像 (スタイルとオブジェクトが類似する) が確認できます。コーギー画像が与えられると、CLIP 画像エンコーダーを出力して画像の特徴を取得すると、対応する CLIP テキストの特徴を取得できます ( CLIP グラフィック機能とテキスト機能の間には 1 対 1 の対応関係があります)。次に、このテキスト特徴をプリアに入力して画像特徴を取得し、最後にそれをデコードして新しいコーギー画像を生成します。2 つのコーギー画像は同様のスタイルとセマンティクスを持っていますが、細部がいくつか変更されています。
x → CLIP − image − endoerzi → CLIP zt → Priorzi ' → decoderx ' \mathbf {x\overset{CLIP-image-endoer}{\rightarrow}z_i\overset{CLIP}{\rightarrow}z_t\overset{prior}{ \rightarrow}{z_i}'\overset{デコーダー}{\rightarrow}{x}'}バツCLIP 画像エンドアz私はクリップzz私はデコーダバツ

  このように、デザインを行って説明テキストを入力すると、モデルがさまざまな画像を生成し、最終的に気に入った画像を選択する (またはモデルを再度入力して生成する) ことが便利です。このように、苦労してデザインする必要はなく、写真さえ選べれば作業が大幅に簡素化されます。

5.2 画像補間

  DALL·E22 つの画像を混合して、下の最初の画像のようなバリエーションを得ることができます。左に近づくほどスタイル ペイントの割合が大きくなり、生成される画像はこのスタイル ペイントに近づき、右に近づくほどスタイル ペイントに近づきます。生成された画像はコーギー犬の画像に近づきます。
ここに画像の説明を挿入

5.3 テキスト補間

  DALL·E22 つのテキストの間を補間することも可能で、結果として得られる画像も徐々に変化します。もう少し丁寧にやれば、Photoshopを学習する代わりにテキストを使ってPピクチャーを作成できると推定されます。

  • 最初の行はアニメでの猫から超サイヤ人への変更です
  • ビクトリア朝の家がモダンな家に生まれ変わりました
  • 第三行是从成年狮变为幼年狮
  • 第四行从冬天景色变为秋天
    ここに画像の説明を挿入

  还有人觉得可以用DALL·E2做数据增强。比如先写一个包含几个单词的prompt,输入GPT3去生成一大段文字。再把这段话扔给DALL·E2生成图片,这样就有了图片-文本对了。这样就可以无穷无尽的生成图片-文本对,再将其扔给CLIP模型,继续训练DALL·E2

六、实验

6.1 MS-COCO数据集对比

  下图是在MS-COCO数据集上和其它模型对比了一下FID分数。可以看到Zero-shot FID分数从DALL·EGLIDE降了非常多,说明扩散模型还是很好用的。prior用扩散模型比用AR,效果稍微好了一点,而且训练也容易一些,所以这部分也用了扩散模型。
ここに画像の説明を挿入

表2:MS-COCO 256×256上的FID比较。对于AR和扩散prior,解码器引导scale= 1.25

6.2 图像生成效果对比

ここに画像の説明を挿入

  • 最上面是真实图片
  • 绿色火车沿着铁轨开过来:
    • DALL·E生成的类似动漫火车,不够真实
    • GLIDE生成的火车太大了,几乎占了整个画面,没有开过来的感觉
    • DALL·E2生成的两张都不错。
  • 另外DALL·E2生成的大象图,水面有反光;滑雪图还有阳光和倒影,所以说质量真的不错。

七、局限性

  1. 不能很好的结合物体和属性

    • 给定文本:红色方块在蓝色方块上面。右图GLIDE生成的不错,但是DALL·E2的结果惨不忍睹。作者觉得使用了CLIP模型的原因。
    • CLIPを使用すると、テキストと画像がより密接にリンクされ、ヴィンセントの地図のタスクが実行しやすくなりますが、その一方で、CLIPは比較学習で赤い四角形と青い四角形などの類似性のみを考慮します。ここでは正方形ですが、実際のところ、CLIP は「上」が何なのかもわかりませんし、上、下、左、右、はい、いいえの概念もわかりません。CLIP は最初から最後までオブジェクトの類似性を検索するため、下流タスクを実行するときにオブジェクトとその属性をうまく区別できず、生成効果が低下します。
      ここに画像の説明を挿入
  2. テキスト生成は、字幕付きの画像を正しく生成するのに十分ではありません。
    たとえば、下の画像では、「ディープ ラーニング」を含むロゴが生成されます。その結果、生成された画像はディープのスペルを間違えたり、学習が欠落したりすることさえあります。著者は、原文が BPE エンコードのエンコーダ(単語を接尾辞や接尾辞などのサブワードに分割)を使用しているためと考えましたが、他にも理由があるはずです。
    ここに画像の説明を挿入

  3. 複雑すぎるシーンは生成できません

    • 上の写真は犬が芝生で遊んでいて、その隣には湖があります。犬の近くから見ることもできますが、遠景のほうが適切です。
    • 以下の図はタイムズ スクエアのマップの生成を示しており、各スクリーンと看板にカラー ブロックがあることがわかります。

ここに画像の説明を挿入
4. 黒人の言語 (この部分は論文には載っていません)

志胡氏: 「研究者らは、DALL-E 2 が独自に作成した言語を使用して画像を生成していることを偶然発見しました。全文は黒色であり、人間には理解できません。」

  研究者は、DALL-E 2 には人間には理解できない独自のスラングがあるが、モデルはそれを自ら認識できることを発見しました。彼は、DALLE-2 のスラングを見つける簡単な方法を考え出しました。
  「野菜」に対応する熟語を見つけたいとします。「2 人の農家が野菜について話しています。字幕付き」というプロンプトを設定すると、下の左の図が表示されます。中のサブタイトルの上部は野菜を表し、サブタイトルの下部は鳥を表しています。これら 2 つの字幕をプロンプトとして使用して、モデルは以下の画像 b と c を出力します。これらはそれぞれ、食べ物の山と数羽の鳥の画像です。

DALL·E2ここから、オブジェクトとオブジェクトの属性があまりよく一致していないことも  わかります。これが上記の 2 番目の制限です。ご興味がございましたら、上記の Zhihu の投稿をご覧ください。
ここに画像の説明を挿入
ここに画像の説明を挿入

左: プロンプト「食べ物について話し合う 2 頭のクジラ、字幕付き」を使用して生成された画像、右: プロンプト: 文字化けしたテキスト「Wa ch zod ahaakesrea.」を使用すると、大量の魚介類が生成されます。

  投稿の中で著者は、NLP システムは一部のポリシーや規制などに従って有害な情報をフィルタリングでき、一般にその方が正確で効率的であると述べています。しかし、この種のスラングや意味不明なプロンプト ワード (意味不明の言葉) は、このフィルタリング メカニズムを回避して安全ロープを生成する可能性がある問題です。

これで投稿は終わりです、少しやつれています。または、後で時間があるときに最適化して補足します。

おすすめ

転載: blog.csdn.net/qq_56591814/article/details/127749105