Stability AI がテキストから画像へのモデルである Stable Diffusion XL 1.0 を発表

Stability AI は、同社がこれまでで「最も先進的な」バージョンと表現するテキストから画像へのモデルである Stable Diffusion XL 1.0 を発表しました。

安定性 AI によると、SDXL 1.0 はより鮮やかで正確な色を生成でき、コントラスト、光と影が強化され、100 万ピクセルの画像 (1024×1024) を生成できるとのことです。また、生成された画像を Web ページ上で直接後編集することもできます。

4aba73476c72ae5ec1a08d0bca1afe03.jpeg

合図の言葉も以前よりシンプルになる可能性があります。これは、SDXL 1.0 の基本モデルパラメータが 35 億に達し、理解力が強化されたためです。Stable Diffusion の基本バージョンと比較すると、パラメータの数はわずか約 10 億個です。その結果、SDXL 1.0 は現在最大のオープン イメージ モデルの 1 つになりました。

Stability AI ブログでは、SDXL 1.0 の技術的な詳細を紹介しています。まず、このモデルは規模とアーキテクチャの両方で新境地を開拓します。革新的にベース モデル + リファイナー モデルを使用しており、そのパラメーターはそれぞれ 35 億と 66 億です。

83053fde8496bb70e4d64b58db939ad1.jpeg

これにより、SDXL 1.0 は現在利用可能な最大のオープン グラフィックス モデルの 1 つになります。

Stability AI の創設者である Emad Mostaque 氏は、パラメーターの数が増えると、モデルがより多くの概念を理解し、より深いことを教えることができるようになると述べました。同時に、SDXL 0.9 バージョンでは RLHF の強化も行われました。

これが、SDXL 1.0 が短いプロンプトをサポートし、赤の広場と赤の広場を区別できるようになった理由です。

具体的な合成プロセスでは、最初のステップでベース モデルがノイズを含む潜在を生成し、次にリファインされたモデルがノイズ除去を実行します。

基本モデルは独立したモジュールとしても使用できます。これら 2 つのモデルを組み合わせることで、より多くのコンピューティング リソースを消費することなく、より高品質の画像を生成できます。

試験結果:

07e5788e20a4e12a78357324d2f6504c.jpeg


インストール:

1. リポジトリのクローンを作成します

git clone [email protected]:Stability-AI/generative-models.git

cd 生成モデル

2. 仮想環境をセットアップする

これは、クローンの後に生成モデルのルートに移動したことを前提としています。

注:これは、python3.8 および python3.10 でテストされました。他の Python バージョンでは、バージョンの競合が発生する可能性があります。

パイトーチ 1.13

# 必要なパッケージをpypiからインストールする

python3 -m venv .pt13source .pt13/bin/activate

pip3 install -r 要件/pt13.txt

PyTorch 2.0

# 必要なパッケージをpypiからインストールする

python3 -m venv .pt2source .pt2/bin/activate

pip3 install -r 要件/pt2.txt

3.SGMをインストールする

pip3 をインストールします。

4.トレーニング用にsdataをインストールする

pip3 install -e git+https://github.com/Stability-AI/datapipelines.git@main#egg=sdata

パッケージ

このリポジトリは、PEP 517 準拠のパッケージ化方法のハッチを使用します。

配布可能なホイールをビルドするには、hatch をインストールしてから、hatch build を実行します (-t Wheel を指定すると、sdist のビルドがスキップされますが、これは必要ありません)。

pip インストールハッチ

ハッチビルド -t ホイール

ビルドされたパッケージは dist/ にあります。ホイールは pip install dist/*.whl でインストールできます。

現在、このパッケージは依存関係として指定されていないことに注意してください。ユースケースと PyTorch のバージョンによっては、必要なパッケージを手動でインストールする必要があります。

推論

トリクルテキストから画像へのサンプリング デモと画像から画像へのサンプリング デモ script/demo/sampling.py を提供しています。ファイル全体のファイル ハッシュと、ファイルに保持されているテンソルのみのファイル ハッシュを提供します (これを評価するスクリプトのモデル仕様を参照してください)。現在、次のモデルがサポートされています。

·SDXL-base-1.0

ファイルハッシュ (sha256): 31e35c80fc4829d14f90153f4c74cd59c90b779f6afe05a74cd6120b893f7e5b

テンソルデータ ハッシュ (sha256): 0xd7a9105a900fd52748f20725fe52fe52b507fd36bee4fc107b1550a26e6ee1d7

·SDXL-Refiner-1.0

ファイルハッシュ (sha256): 7440042bbdc8a24813002c09b6b69b64dc90fded4472613437b7f55f9b7d9c5f

テンソルデータ ハッシュ (sha256): 0x1a77d21bebc4b4de78c474a90cb74dc0d2217caf4061971dbfa75ad406b75d81

·SDXL-base-0.9

·SDXL-Refiner-0.9

·SD-2.1-512

·SD-2.1-768

SDXLの重量:

SDXL-1.0: SDXL-1.0 の重みは、(CreativeML Open RAIL++-M ライセンスに基づいて) ここで入手できます。

・基本モデル:https://ハグフェイス.co/stability ai/stable-diffusion-XL-base-1.0/

· Refiner モデル: https://hugging face .co/stability ai/stable-diffusion-XL-refiner-1.0/

SDXL-0.9: SDXL-0.9 分銅は利用可能ですが、研究ライセンスの対象となります。研究のためにこれらのモデルにアクセスしたい場合は、以下のリンクのいずれかを使用して申請してください: SDXL-base-0.9-models および SDXL-refiner-0.9。つまり、これら 2 つのリンクのいずれかに申請でき、承認されると両方にアクセスできるようになります。アクセスをリクエストするには、組織の電子メールを使用して Hugging Face アカウントにログインしてください。

重みを取得したら、それらをチェックポイント/に配置します。次に、使用します

streamlit 実行 script/demo/sampling.py --server.port <your_port>

目に見えない透かしの検出

コードで生成された画像は、不可視の透かしライブラリを使用して、不可視の透かしをモデル出力に埋め込みます。ウォーターマークを簡単に検出するためのスクリプトも提供しています。このウォーターマークは、以前の安定した拡散版 1.x/2.x リリースとは異なることに注意してください。

スクリプトを実行するには、上記のように動作するインストールを用意するか、最小限のパッケージ インポートのみを使用して実験的なインストールを試す必要があります。

python -m venv .detectsource .detect/bin/activate


pip install "numpy>=1.17" "PyWavelets>=1.1.1" "opencv-python>=4.1.0.25"

pip install --no-deps 不可視ウォーターマーク

スクリプトを実行するには、上で説明したようにインストールが動作している必要があります。スクリプトは次の方法で使用できます (事前に仮想環境をアクティブ化することを忘れないでください (例:source .pt1/bin/activate):

# 単一のファイルをテストする

python scripts/demo/detect.py <ここにファイル名># 複数のファイルを一度にテストします

python scripts/demo/detect.py <filename 1> <filename 2> ... <filename n># 特定のフォルダー内のすべてのファイルをテストします

python scripts/demo/detect.py <ここにフォルダー名>/*

トレーニング:

トレーニング構成の例は configs/example_training にあります。トレーニングを開始するには、実行します

python main.py --base configs/<config1.yaml> configs/<config2.yaml>

構成は左から右にマージされます (後の構成は同じ値をオーバーライドします)。これを使用して、モデル、トレーニング、データ構成を組み合わせることができます。ただし、これらすべてを 1 つの構成で定義することもできます。たとえば、MNIST でクラス条件付きピクセルベースの拡散モデル トレーニングを実行するには、次を実行します。

python main.py --base configs/example_training/toy/mnist_cond.yaml

注 1:おもちゃ以外のデータセットを使用したトレーニング用に configs/example_training/imagenet-f8_cond.yaml、configs/example_training/txt2img-clipl.yaml、および configs/example_training/txt2img-clipl-legacy-ucg-training.yaml を構成するには、次のように設定します。使用するデータセットに応じて編集する必要があります (データセットは Web データセット形式で保存されることが想定されています)。変更する必要がある部分を見つけるには、それぞれの設定で USER: を含むコメントを検索します。

注 2:このリポジトリは、生成モデルのトレーニング用に pytorch1.13 と pytorch2 の両方をサポートしています。ただし、configs/example_training/autoencoder/kl-f4/imagenet-attnfree-logvar.yaml などのオートエンコーダー トレーニングの場合は、pytorch1.13 のみがサポートされます。

注 3:基礎となる生成モデル (例: configs/example_training/imagenet-f8_cond.yaml) をトレーニングするには、チェックポイントからハグ顔を取得し、この行の CKPT_PATH プレースホルダーを置き換える必要があります。提供された text-to-image 構成に対しても同じことを行います。

新たな普及モデルの構築

レギュレータ

この GeneralConditioner には、condition_config が渡されます。その唯一の属性は emb_models です。これは、生成されたモデルを条件付けるために使用されるさまざまなエンベッダー (すべて AbstractEmbModel から継承) のリストです。すべてのエンベッダーは、トレーニング可能かどうか (is_trainable、デフォルトは False)、分類子なしのブートストラップ損失率 (ucg_rate、デフォルトは 0)、および入力キー (input_key) (テキスト コンディショニングの場合は txt、クラス コンディショニングの場合は cls) を使用するかどうかを定義する必要があります。条件を評価するとき、エンベッダーは入力としてバッチ[input_key]を取得します。現在、2D から 4D 条件をサポートしており、さまざまなエンベッダーからの条件が適切に連結されています。埋め込みプログラムはCondition_configで重要であることに注意してください。

通信網

ニューラル ネットワークには network_config が渡されます。これは以前は unet_config と呼ばれていましたが、トランスベースの拡散バックボーンを実験する予定なので、まだ十分に一般的ではありません。

失敗

損失は​​、loss_config を介して次の方法で設定されます。標準の拡散モデルのトレーニングでは、sigma_sampler_config を設定する必要があります。

サンプラーの構成

前述したように、サンプラーはモデルに依存しません。Sampler_config では、数値ソルバーのタイプ、ステップ数、離散化のタイプ、および分類子なしのブートストラップ用のブートストラップ ラッパーなどを設定します。

データセットの処理

大規模なトレーニングの場合は、データ パイプライン データ パイプライン プロジェクトを使用することをお勧めします。プロジェクトは要件に含まれており、インストールセクションに続きます。小さなマップ スタイルのデータセットはリポジトリ (MNIST、CIFAR-10 など) で定義し、データ キー/値の辞書を返す必要があります。

example = {"jpg": x,  # これはテンソルです -1...1 chw

           "txt": "美しい画像"}

画像は -1...1、チャネルファースト形式であることが予想されます。


公式の紹介によると、SDXL 1.0 は 8GB VRAM を備えたコンシューマーグレードの GPU またはクラウド上で実行できます。さらに、SDXL 1.0 では微調整も改善されており、カスタム LoRA やチェックポイントを生成できるようになりました。

また、Stability AI チームは現在、SDXL 専用の T2I/ControlNet を使用して、タスク固有の構造化、スタイル設定、および組み合わせた新世代のコントロールを構築しています。



おすすめ

転載: blog.csdn.net/specssss/article/details/132000821