🚀 Stable Diffusion 画像変動モデルカード
このモデルは、Stable Diffusionをベースに、画像埋め込みを受け取るように微調整されたものです。DALLE - 2に似た画像変動を生成でき、Diffusersライブラリで使用できます。
🚀 クイックスタート
V2モデルがリリースされ、ぼやけ問題が解決されました! 📣
🧨🎉 Image Variationsは、🤗 Diffusersでネイティブにサポートされるようになりました! 🎉🧨

✨ 主な機能
バージョン2
このバージョンのStable Diffusionは、CompVis/stable - diffusion - v1 - 4 - originalから微調整され、テキスト埋め込みではなくCLIP画像埋め込みを受け取るようになっています。これにより、Stable Diffusionを使用してDALLE - 2に似た「画像変動」を作成できます。このバージョンの重みはhuggingface Diffusersに移植されており、Diffusersライブラリでこれを使用するには、Lambda Diffusersリポジトリが必要です。
このモデルは2段階で訓練され、元の変動モデルよりも長い時間訓練されており、元のバージョンと比較して、より良い画像品質とCLIP評価の類似度を提供します。
訓練の詳細とv1とv2の比較については、以下を参照してください。
💻 使用例
基本的な使用法
Diffusersのバージョンが0.8.0以上であることを確認してください(古いバージョンの場合は、このモデルカードの下部にある古い手順を参照してください)
from diffusers import StableDiffusionImageVariationPipeline
from PIL import Image
device = "cuda:0"
sd_pipe = StableDiffusionImageVariationPipeline.from_pretrained(
"lambdalabs/sd-image-variations-diffusers",
revision="v2.0",
)
sd_pipe = sd_pipe.to(device)
im = Image.open("path/to/image.jpg")
tform = transforms.Compose([
transforms.ToTensor(),
transforms.Resize(
(224, 224),
interpolation=transforms.InterpolationMode.BICUBIC,
antialias=False,
),
transforms.Normalize(
[0.48145466, 0.4578275, 0.40821073],
[0.26862954, 0.26130258, 0.27577711]),
])
inp = tform(im).to(device).unsqueeze(0)
out = sd_pipe(inp, guidance_scale=3)
out["images"][0].save("result.jpg")
高度な使用法
正しくリサイズする重要性(またはしないこと)
訓練中の少しの見落としにより、このモデルはアンチエイリアシングなしでリサイズされた画像を期待しています。これが大きな違いを生み、推論時に同じ方法でリサイズすることが重要です。PIL画像をDiffusersパイプラインに渡すと、リサイズ中にアンチエイリアシングが適用されるため、上記の例の変換に従って手動で準備したテンソルを入力する方が良いです!
以下は、リサイズ中にアンチエイリアシングを使用しない(上)と使用する(下)場合の生成画像の例です。(入力はこの画像)


V1とV2の比較
以下はV1とV2の例です。バージョン2はより注意深く、長時間訓練されています。詳細は以下を参照してください。V2 - 上とV1 - 下


入力画像:

重要なことは、長時間の訓練により、V2は訓練データからいくつかの一般的な画像を暗記しているように見えることです。たとえば、以前の「真珠の耳飾りをした少女」の例では、変動を作成するのではなく、元の画像をほぼ完全に再現します。いつでもrevision="v1.0"
を指定してv1を使用できます。
「真珠の耳飾りをした少女」を入力としたv2の出力(ガイダンススケール = 3)

🔧 技術詳細
訓練手順
このモデルは、Stable Diffusion v1 - 3から微調整され、テキストエンコーダが画像エンコーダに置き換えられています。訓練手順はStable Diffusionと同じですが、画像はViT - L/14画像エンコーダを通じてエンコードされ、最終的な投影層を介してCLIP共有埋め込み空間に投影されます。このモデルはLAION improved aesthetics 6plusで訓練されました。
-
ハードウェア: 8 x A100 - 40GB GPU([Lambda GPU Cloud](https://lambdalabs.com/service/gpu - cloud)によって提供)
-
オプティマイザ: AdamW
-
第1段階 - Stable Diffusion v1.4モデルのCrossAttention層の重みのみを微調整
- ステップ数: 46,000
- バッチ: バッチサイズ = 4、GPU = 8、勾配蓄積 = 4。総バッチサイズ = 128
- 学習率: 10,000ステップで1e - 5までウォームアップし、その後一定に維持
-
第2段階 - 第1段階から再開し、全体のunetを訓練
- ステップ数: 50,000
- バッチ: バッチサイズ = 4、GPU = 8、勾配蓄積 = 5。総バッチサイズ = 160
- 学習率: 5,000ステップで1e - 5までウォームアップし、その後一定に維持
訓練は、[元のStable Diffusion訓練コードの修正版](https://github.com/justinpinkney/stable - diffusion)を使用して行われました。
📚 ドキュメント
用途
以下のセクションは、[Stable Diffusionモデルカード](https://huggingface.co/CompVis/stable - diffusion - v1 - 4)から適応されています。
直接的な使用
このモデルは研究目的のみを意図しています。可能な研究分野とタスクには、以下が含まれます。
- 有害なコンテンツを生成する可能性のあるモデルの安全な展開。
- 生成モデルの制限とバイアスの調査と理解。
- アートワークの生成とデザインや他のアートプロセスでの使用。
- 教育または創造的なツールでのアプリケーション。
- 生成モデルに関する研究。
除外される使用法については、以下を参照してください。
誤用、悪意のある使用、および想定外の使用
このモデルは、人々に敵対的または疎外感を与える環境を作り出す画像を意図的に作成または拡散するために使用してはなりません。これには、人々が不快、苦痛、または不快感を感じると予想される画像の生成、または歴史的または現在のステレオタイプを広めるコンテンツの生成が含まれます。
想定外の使用
このモデルは、人やイベントの事実的または真実の表現として訓練されていないため、このモデルを使用してそのようなコンテンツを生成することは、このモデルの能力の範囲外です。
誤用と悪意のある使用
このモデルを使用して、個人に残酷なコンテンツを生成することは、このモデルの誤用です。これには、以下が含まれますが、これらに限定されません。
- 人やその環境、文化、宗教などの侮辱的、非人間的、またはその他の有害な表現の生成。
- 差別的なコンテンツまたは有害なステレオタイプを意図的に宣伝または拡散すること。
- 本人の同意なしでの個人のなりすまし。
- 見る人の同意なしでの性的なコンテンツ。
- 誤情報と偽情報
- 重大な暴力とグロテスクな表現
- 著作権またはライセンスされた素材をその使用条件に違反して共有すること。
- 著作権またはライセンスされた素材をその使用条件に違反して改変したコンテンツを共有すること。
制限とバイアス
制限
- このモデルは完全な写実性を達成しません。
- このモデルは読み取り可能なテキストをレンダリングできません。
- このモデルは、構成性を必要とするより難しいタスク(「青い球の上に赤い立方体」に対応する画像のレンダリングなど)ではうまく機能しません。
- 顔や一般的な人物は適切に生成されない場合があります。
- このモデルは主に英語のキャプションで訓練されており、他の言語ではうまく機能しません。
- このモデルの自動符号化部分は損失があります。
- このモデルは大規模なデータセット[LAION - 5B](https://laion.ai/blog/laion - 5b/)で訓練されており、成人向けの素材が含まれており、追加の安全メカニズムと考慮なしに製品で使用するには適していません。
- データセットの重複排除には追加の対策が取られていません。その結果、訓練データに重複する画像については、ある程度の暗記が見られます。訓練データは[https://rom1504.github.io/clip - retrieval/](https://rom1504.github.io/clip - retrieval/)で検索でき、暗記された画像の検出に役立つ可能性があります。
バイアス
画像生成モデルの能力は印象的ですが、社会的バイアスを強化または悪化させる可能性もあります。Stable Diffusion v1は、[LAION - 2B(en)](https://laion.ai/blog/laion - 5b/)のサブセットで訓練されており、これは主に英語の説明に限定された画像で構成されています。他の言語を使用するコミュニティや文化のテキストと画像は、不十分に考慮される可能性があります。これは、白と西洋の文化がしばしばデフォルトとして設定されるため、モデルの全体的な出力に影響を与えます。さらに、このモデルが英語以外のプロンプトでコンテンツを生成する能力は、英語のプロンプトと比較して著しく劣ります。
安全モジュール
このモデルの意図された使用法は、Diffusersの[Safety Checker](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable - diffusion/safety_checker.py)と一緒に使用することです。このチェッカーは、モデルの出力を既知のハードコードされたNSFW概念と比較することで機能します。これらの概念は、このフィルターの逆エンジニアリングの可能性を減らすために意図的に隠されています。具体的には、チェッカーは画像生成後にCLIPModel
の埋め込み空間で有害な概念のクラス確率を比較します。これらの概念は生成された画像とともにモデルに渡され、各NSFW概念の手動で設計された重みと比較されます。
古い手順
Diffusersのバージョンが0.8.0未満の場合、StableDiffusionImageVariationPipeline
はありません。この場合、lambda - diffusersリポジトリとともに古いリビジョン(2ddbd90b14bc5892c19925b15185e561bc8e5d0a
)を使用する必要があります。
まず、[Lambda Diffusers](https://github.com/LambdaLabsML/lambda - diffusers)をクローンし、必要なパッケージをインストールしてください(以下の例では仮想環境で行っています)。
git clone https://github.com/LambdaLabsML/lambda-diffusers.git
cd lambda-diffusers
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
次に、以下のPythonコードを実行してください。
from pathlib import Path
from lambda_diffusers import StableDiffusionImageEmbedPipeline
from PIL import Image
import torch
device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = StableDiffusionImageEmbedPipeline.from_pretrained(
"lambdalabs/sd-image-variations-diffusers",
revision="2ddbd90b14bc5892c19925b15185e561bc8e5d0a",
)
pipe = pipe.to(device)
im = Image.open("your/input/image/here.jpg")
num_samples = 4
image = pipe(num_samples*[im], guidance_scale=3.0)
image = image["sample"]
base_path = Path("outputs/im2im")
base_path.mkdir(exist_ok=True, parents=True)
for idx, im in enumerate(image):
im.save(base_path/f"{idx:06}.jpg")
このモデルカードはJustin Pinkneyによって作成され、[Stable Diffusionモデルカード](https://huggingface.co/CompVis/stable - diffusion - v1 - 4)をベースにしています。
📄 ライセンス
creativeml - openrail - m