🚀 Stable Diffusion 3.5 Large Controlnet - Depth
このモデルは、Stable Diffusion 3.5 Large のDepth ControlNetを提供します。画像生成において、深度情報を利用した高度な制御が可能です。
🚀 クイックスタート
本モデルの利用には、ライセンス契約に同意する必要があります。また、Stability AIのプライバシーポリシーについても確認してください。
✨ 主な機能
- 深度情報を利用した画像生成の高度な制御が可能です。
- 非商用利用や、年間収益が100万ドル未満の商用利用に無料で使用できます。
- 生成されたメディアの所有権を保持できます。
📦 インストール
SD3.5 Standalone RepoでのControlnetsの使用
リポジトリをインストールします。
git clone git@github.com:Stability-AI/sd3.5.git
pip install -r requirements.txt
次に、モデルとサンプル画像をダウンロードします。
input/sample_cond.png
models/clip_g.safetensors
models/clip_l.safetensors
models/t5xxl.safetensors
models/sd3.5_large.safetensors
models/canny_8b.safetensors
そして、以下のコマンドを実行します。
python sd3_infer.py --controlnet_ckpt models/depth_8b.safetensors --controlnet_cond_image input/sample_cond.png --prompt "A girl sitting in a cafe, cozy interior, HDR photograph"
DiffusersでのControlnetsの使用
最新のdiffusersバージョンにアップグレードします。
pip install -U diffusers
そして、以下のコードを実行します。
import torch
from diffusers import StableDiffusion3ControlNetPipeline, SD3ControlNetModel
from diffusers.utils import load_image
controlnet = SD3ControlNetModel.from_pretrained("stabilityai/stable-diffusion-3.5-large-controlnet-depth", torch_dtype=torch.float16)
pipe = StableDiffusion3ControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-3.5-large",
controlnet=controlnet,
torch_dtype=torch.float16,
).to("cuda")
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/marigold/marigold_einstein_lcm_depth.png")
generator = torch.Generator(device="cpu").manual_seed(0)
image = pipe(
prompt = "a photo of a man",
control_image=control_image,
guidance_scale=4.5,
num_inference_steps=40,
generator=generator,
max_sequence_length=77,
).images[0]
image.save('depth-8b.jpg')
💻 使用例
基本的な使用法
python sd3_infer.py --controlnet_ckpt models/depth_8b.safetensors --controlnet_cond_image input/sample_cond.png --prompt "A girl sitting in a cafe, cozy interior, HDR photograph"
高度な使用法
import torch
from diffusers import StableDiffusion3ControlNetPipeline, SD3ControlNetModel
from diffusers.utils import load_image
controlnet = SD3ControlNetModel.from_pretrained("stabilityai/stable-diffusion-3.5-large-controlnet-depth", torch_dtype=torch.float16)
pipe = StableDiffusion3ControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-3.5-large",
controlnet=controlnet,
torch_dtype=torch.float16,
).to("cuda")
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/marigold/marigold_einstein_lcm_depth.png")
generator = torch.Generator(device="cpu").manual_seed(0)
image = pipe(
prompt = "a photo of a man",
control_image=control_image,
guidance_scale=4.5,
num_inference_steps=40,
generator=generator,
max_sequence_length=77,
).images[0]
image.save('depth-8b.jpg')
📚 ドキュメント
前処理
入力画像を制御に使用するために前処理することができます。SD3.5はこの動作を実装していないため、事前に外部スクリプトで行うことをお勧めします。
import torchvision.transforms as transforms
from depthfm.dfm import DepthFM
depthfm_model = DepthFM(ckpt_path=checkpoint_path)
depthfm_model.eval()
img = F.to_tensor(img)
c, h, w = img.shape
img = F.interpolate(img, (512, 512), mode='bilinear', align_corners=False)
with torch.no_grad():
img = self.depthfm_model(img, num_steps=2, ensemble_size=4)
img = F.interpolate(img, (h, w), mode='bilinear', align_corners=False)
ヒント
- ControlNetの強度は0.7から始めて、必要に応じて調整することをお勧めします。
- Eulerサンプラーとやや高いステップ数(50 - 60)を使用すると、最良の結果が得られます。
--text_encoder_device <device_name>
を渡すことで、テキストエンコーダを直接VRAMにロードすることができ、追加のVRAM使用量を犠牲にして、完全な推論ループを高速化することができます。
使用用途
モデルのすべての使用は、許容使用ポリシーに準拠する必要があります。
範囲外の使用
このモデルは、人や出来事の事実的または真実の表現を生成するように訓練されていません。したがって、このようなコンテンツを生成するためにモデルを使用することは、このモデルの能力範囲外です。
訓練データと戦略
これらのモデルは、合成データやフィルタリングされた公開データを含む、様々なデータで訓練されています。
🔧 技術詳細
整合性評価
整合性評価方法には、構造化された評価と特定の害に対するレッドチーミングテストが含まれます。テストは主に英語で行われ、すべての可能性のある害をカバーしているとは限りません。
特定されたリスクと緩和策
- 有害コンテンツ: モデルを訓練する際にフィルタリングされたデータセットを使用し、有用性と害の防止の間の適切なバランスを図るセーフガードを実装しています。ただし、すべての可能性のある有害コンテンツが削除されていることを保証するものではありません。すべての開発者とデプロイヤーは、注意を払い、特定の製品ポリシーとアプリケーションのユースケースに基づいてコンテンツセーフティガードレールを実装する必要があります。
- 誤用: 技術的な制限と開発者およびエンドユーザーの教育は、モデルの悪意のあるアプリケーションに対抗するのに役立ちます。すべてのユーザーは、微調整やプロンプトエンジニアリングメカニズムを適用する場合も含め、許容使用ポリシーに準拠する必要があります。製品の違反的な使用に関する情報は、Stability AIの許容使用ポリシーを参照してください。
- プライバシー侵害: 開発者とデプロイヤーは、データプライバシーを尊重する技術でプライバシー規制に準拠することが推奨されます。
📄 ライセンス
このモデルは、Stability Community Licenseの下でリリースされています。詳細については、Stability AIを訪問するか、お問い合わせしてください。
ライセンスの主要コンポーネント
- 非商用利用で無料: 個人や組織は、科学研究を含む非商用利用のために、このモデルを無料で使用することができます。
- 商用利用で無料(年間収益100万ドルまで): スタートアップ、中小企業、クリエイターは、年間総収益が100万ドル未満である限り、商用目的でこのモデルを無料で使用することができます。
- 出力の所有権: 制限的なライセンスの影響を受けることなく、生成されたメディアの所有権を保持します。
年間収益が100万ドルを超える組織は、こちらからエンタープライズライセンスについてお問い合わせください。
謝辞
- Lvmin Zhang、Anyi Rao、およびManeesh Agrawala、元のControlNet論文の著者。
- Lvmin Zhang、Tile ControlNetも開発し、Blur ControlNetのインスピレーションとなった。
- Diffusersライブラリの著者、開発中にコードが参照された。
- InstantXチーム、FluxとSD3 ControlNetsも訓練中に参照された。
- モデルのすべての初期テスターと評価者、およびStability AIチーム。
お問い合わせ
モデルに関する問題を報告するか、お問い合わせる場合は、以下の連絡先にご連絡ください。
- セーフティ問題: safety@stability.ai
- セキュリティ問題: security@stability.ai
- プライバシー問題: privacy@stability.ai
- ライセンスと一般的な質問: https://stability.ai/license
- エンタープライズライセンス: https://stability.ai/enterprise