Stable Diffusion Version 2 : 概要 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 12/19/2022 (v2.1)
* 本ページは、Stable Diffusion Version 2 の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
Stable Diffusion Version 2 : 概要
このレポジトリはゼロから訓練された Stable Diffusion モデルを含み、新しいチェックポイントで継続的に更新されます。以下のリストは現在利用可能なすべてのモデルの概要を提供しています。More coming soon.
News
December 7, 2022 : Version 2.1
- 768×768 解像度 (Stable Diffusion 2.1-v, HuggingFace) と 512×512 解像度 (Stable Diffusion 2.1-base, HuggingFace) の新しい stable diffusion モデル、両方とも 2.0 と同じ数のパラメータとアーキテクチャに基づき、LAION-5B データセットのより制限の少ない NSFW フィルタリングにより 2.0 上で微調整されています。デフォルトでは、xformers がインストールされていないときモデルのアテンション演算は全精度で評価されます。fp16 を有効にするには (これは v2.1 モジュールの vanilla アテンションモジュールにより数値的な不安定さを引き起こす可能性があります)、ATTN_PRECISION=fp16 python <thescript.py> で貴方のスクリプトを実行します。
November 24, 2022 : Version 2.0
- 768×768 解像度の新しい stable diffusion モデル (Stable Diffusion 2.0-v) です。U-Net のパラメータ数は 1.5 と同じですが、テキストエンコーダとして OpenCLIP-ViT/H (訳注: 翻訳 OpenCLIP) を使用し、ゼロから訓練されています。SD 2.0-v はいわゆる v-予測 モデルです。
- 上記のモデルは SD 2.0-base から微調整されました、これは標準的なノイズ予測モデルとして 512×512 画像上で訓練され、これもまた利用可能です。
- x4 アップスケーリングな潜在的テキスト誘導型拡散モデル を追加しました。
- SD 2.0-base から微調整された、新しい depth-guided stable diffusion モデル。このモデルは MiDaS で推論された単眼 (monocular) depth 推定値で条件付けされていて、構造保全 (structure-preserving) img2img と形状条件付き (shape-conditional) 合成のために利用できます。
- SD 2.0-base から微調整された、テキスト誘導型インペインティング・モデル。
オリジナルのレポジトリ をフォローして、モデルからサンプリングする基本的な推論スクリプトを提供しています。
オリジナルの Stable Diffusion モデルは CompVis と RunwayML とのコラボで作成され、そのワークの上に構築しています :
潜在的拡散モデルによる高解像度画像合成
Robin Rombach*, Andreas Blattmann*, Dominik Lorenz, Patrick Esser, Björn Ommer
CVPR ’22 オーラル|GitHub|arXiv|プロジェクトページ
and many others.
Stable Diffusion は潜在的テキスト-to-画像拡散モデルです。
要件
既存の 潜在的拡散 環境を以下を実行して更新できます :
conda install pytorch==1.12.1 torchvision==0.13.1 -c pytorch
pip install transformers==4.19.2 diffusers invisible-watermark
pip install -e .
xformers の効率的なアテンション
GPU 上での効率性とスピードのために、xformers ライブラリのインストールを強く勧めます。
export CUDA_HOME=/usr/local/cuda-11.4
conda install -c nvidia/label/cuda-11.4.0 cuda-nvcc
conda install -c conda-forge gcc
conda install -c conda-forge gxx_linux-64==9.5.0
それから、以下を実行します (コンパイルには最大 30 分かかります)。
cd ..
git clone https://github.com/facebookresearch/xformers.git
cd xformers
git submodule update --init --recursive
pip install -r requirements.txt
pip install -e .
cd ../stablediffusion
インストールが成功すれば、コードは自動的に U-Net とオートエンコーダの self- と cross-アテンション層に対してメモリ効率的なアテンションをデフォルトにします。
免責事項
※ 訳注 : 必ず 原文 も確認してください。
Stable Diffusion モデルは一般的なテキスト-to-画像拡散モデルで、従って訓練データに存在するバイアスや (誤った) コンセプトを反映してしまいます。露骨なアダルト素材の含有を削減する努力は行ないましたが、追加の安全メカニズムと考慮なしにサービスや製品に提供される重みを使用することは勧めません。重みは研究 (中間) 成果であり、そのように扱われるべきです。訓練手順とデータの詳細、そしてモデルの使用目的は該当する モデルカード で見つけられます。重みは CreativeML Open RAIL++-M ライセンス のもとで Hugging Face の StabilityAI organization 経由で利用可能です。
Stable Diffusion v2
Stable Diffusion v2 はモデルアーキテクチャの特定の構成を指し、拡散モデルについて 865M UNet によるダウンサンプリング因子 8 のオートエンコーダと OpenCLIP ViT-H/14 テキストエンコーダを使用しています。SD 2-v は 768×768 px 出力を生成します。
様々な分類器フリーなガイダンス・スケール (1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0) と 50 DDIM サンプリングステップによる評価はチェックポイントの相対的な改良を示しています :
テキスト-to-画像
Stable Diffusion 2 は CLIP ViT-H/14 テキストエンコーダの penultimate (最後から 2 番目の) テキスト埋め込みで条件付けされた潜在的拡散モデルです。サンプリングのための参照スクリプト を提供しています。
参照サンプリング・スクリプト
このスクリプトは、閲覧者が 画像を機械生成されたものと認識する のに役立つように、出力の 不可視な透かし を組み込みます。SD2-v (768px) と SD2-base (512px) モデルに対する config を提供しています。
最初に、SD2.1-v と SD2.1-base に対する重みをダウンロードします。
SD2.1-v モデルをサンプリングするには、以下を実行します :
python scripts/txt2img.py --prompt "a professional photograph of an astronaut riding a horse" --ckpt --config configs/stable-diffusion/v2-inference-v.yaml --H 768 --W 768
or try out the Web Demo: HuggingFace Spaces
ベースモデルからサンプリングするためには、次を使用します :
python scripts/txt2img.py --prompt "a professional photograph of an astronaut riding a horse" --ckpt --config
デフォルトでは、これは DDIM サンプラー を使用し、サイズ 768×768 (その上で訓練されています) の画像を 50 ステップでレンダリングします。実験では、v-models はより高いガイダンススケールでサンプリングできます。
Note : すべてのモデルのバージョンに対する推論 config は EMA-only チェックポイントで使用されるように設計されています。そのため configuration で use_ema=False が設定されます、そうでないとコードは非-EMA から EMA 重みに切り替えようとします。
Stable Diffusion による画像改変
Depth-Conditional Stable Diffusion
Stable Diffusion の確立された img2img 機能を増強するため、形状保存 (shape-preserving) stable diffusion モデルを提供します。
画像改変に対するオリジナル手法は、初期画像に関して重要な意味的変更を導入することに注意してください。それが望ましくない場合、depth-conditional stable diffusion モデルと dpt_hybrid MiDaS モデル重み (訳注: 直接重みがダウンロードされます) をダウンロードして、後者をフォルダ midas_models に置いて、以下によりサンプリングします :
python scripts/gradio/depth2img.py configs/stable-diffusion/v2-midas-inference.yaml <path-to-ckpt>
or
streamlit run scripts/streamlit/depth2img.py configs/stable-diffusion/v2-midas-inference.yaml <path-to-ckpt>
この手法はベースモデルのサンプル自体で利用できます。例えば、匿名の discord ユーザにより生成された このサンプル を取ります。gradio or streamlit スクリプト depth2img.py を使用して、MiDaS モデルは最初にこの入力から単眼深度推定 (monocular depth estimate) を推論し、それから拡散モデルはその (相対的) 深度出力で条件付けされます。
depth2image
このモデルはフォトリアリスティックなスタイルに対して特に有用です : サンプル をご覧ください。1.0 の最大強度に対して、モデルはすべてのピクセルベースの情報を除去して、テキストプロンプトと推論された単眼深度推定にのみ依存します。
Classic Img2Img
For running the “classic” img2img, use
python scripts/img2img.py --prompt "A fantasy landscape, trending on artstation" --init-img --strength 0.8 --ckpt <path/to/model.ckpt>
and adapt the checkpoint and config paths accordingly.
Stable Diffusion による画像アップスケーリング
After downloading the weights, run
python scripts/gradio/superresolution.py configs/stable-diffusion/x4-upscaling.yaml
<path-to-checkpoint>
or
streamlit run scripts/streamlit/superresolution.py -- configs/stable-diffusion/x4-upscaling.yaml <path-to-checkpoint>
for a Gradio or Streamlit demo of the text-guided x4 superresolution model.
このモデルは実入力と合成サンプルの両方で使用できます。後者については、より高い noise_level の設定を勧めます、例えば noise_level=100 です。
Stable Diffusion による画像インペインティング
Download the SD 2.0-inpainting checkpoint and run
python scripts/gradio/inpainting.py configs/stable-diffusion/v2-inpainting-inference.yaml <path-to-checkpoint>
or
streamlit run scripts/streamlit/inpainting.py -- configs/stable-diffusion/v2-inpainting-inference.yaml <path-to-checkpoint>
for a Gradio or Streamlit demo of the inpainting model.
このスクリプトは RunwayML レポジトリのデモに不可視の透かしを追加しますが、両方とも checkpoints/configs で交換可能に動作するはずです。
Shout-Outs (謝辞)
- Thanks to Hugging Face and in particular Apolinário for support with our model releases!
- Stable Diffusion would not be possible without LAION and their efforts to create open, large-scale datasets.
- The DeepFloyd team at Stability AI, for creating the subset of LAION-5B dataset used to train the model.
- Stable Diffusion 2.0 uses OpenCLIP, trained by Romain Beaumont.
- Our codebase for the diffusion models builds heavily on OpenAI’s ADM codebase and https://github.com/lucidrains/denoising-diffusion-pytorch. Thanks for open-sourcing!
- CompVis initial stable diffusion release
- Patrick‘s implementation of the streamlit demo for inpainting.
- img2img is an application of SDEdit by Chenlin Meng from the Stanford AI Lab.
- Kat’s implementation of the PLMS sampler, and more.
- DPMSolver integration by Cheng Lu.
- Facebook’s xformers for efficient attention computation.
- MiDaS for monocular depth estimation.
ライセンス
※ 訳注 : 原文 参照。
BibTeX
※ 訳注 : 原文 参照。
以上