🚀 StableMaterials
StableMaterials は、写実的な物理ベースレンダリング(PBR)マテリアルを生成するために設計された拡散ベースのモデルです。このモデルは、半教師あり学習を潜在拡散モデル(LDM)と統合し、テキストまたは画像のプロンプトから高解像度でタイル可能なマテリアルマップを生成します。StableMaterials は、拡散(ベースカラー)と鏡面反射(粗さ、金属性)の両方の特性、およびマテリアルのメソ構造(高さ、法線)を推論することができます。🌟
詳細については、プロジェクトページを訪問するか、arXiv で全文を読んでください。
⚠️ 重要提示
このリポジトリには、LDM と LCM の両方のバージョンの ベースモデル の重みとパイプラインコードが含まれています。リファイナーモデルとそのパイプライン、およびインペインティングパイプラインは、近日公開予定です。
🚀 クイックスタート
StableMaterials は、拡散ベースのモデルで、写実的な物理ベースレンダリング(PBR)マテリアルを生成することができます。半教師あり学習と潜在拡散モデル(LDM)を統合し、高解像度でタイル可能なマテリアルマップを生成します。
✨ 主な機能
🧩 ベースモデル
ベースモデルは、圧縮VAE(変分オートエンコーダ)を使用して低解像度(512x512)のマテリアルマップを生成し、その後潜在拡散プロセスを行います。このアーキテクチャは、LDMパラダイムのMatFuseアダプテーションに基づいており、多様性と高い視覚的忠実度を重視したマテリアルマップ生成に最適化されています。 🖼️
🔑 主要な特徴
- 半教師あり学習:モデルは、注釈付きデータと注釈なしデータの両方を使用して学習され、敵対的学習を利用して大規模な事前学習画像生成モデルから知識を蒸留します。 📚
- 知識蒸留:SDXLモデルを使用して生成された注釈なしテクスチャサンプルを学習プロセスに組み込み、異なるデータ分布間のギャップを埋めます。 🌐
- 潜在的一貫性:潜在的一貫性モデルを採用して高速生成を促進し、高品質な出力を生成するために必要な推論ステップを削減します。 ⚡
- 特徴ローリング:U-Netアーキテクチャの各畳み込み層と注意層に対して特徴マップをローリングすることで、新しいタイル可能性技術を導入します。 🎢
💻 使用例
基本的な使用法
標準モデル
from diffusers import DiffusionPipeline
from diffusers.utils import load_image
pipe = DiffusionPipeline.from_pretrained(
"gvecchio/StableMaterials",
trust_remote_code=True,
torch_dtype=torch.float16
)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
pipe = pipe.to(device)
material = pipe(
prompt="Old rusty metal bars with peeling paint",
guidance_scale=10.0,
tileable=True,
num_images_per_prompt=1,
num_inference_steps=50,
).images[0]
material = pipe(
prompt=load_image("path/to/input_image.jpg"),
guidance_scale=10.0,
tileable=True,
num_images_per_prompt=1,
num_inference_steps=50,
).images[0]
basecolor = material.basecolor
normal = material.normal
height = material.height
roughness = material.roughness
metallic = material.metallic
一貫性モデル
from diffusers import DiffusionPipeline, LCMScheduler, UNet2DConditionModel
from diffusers.utils import load_image
unet = UNet2DConditionModel.from_pretrained(
"gvecchio/StableMaterials",
subfolder="unet_lcm",
torch_dtype=torch.float16,
)
pipe = DiffusionPipeline.from_pretrained(
"gvecchio/StableMaterials",
trust_remote_code=True,
unet=unet,
torch_dtype=torch.float16
)
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
pipe = pipe.to(device)
material = pipe(
prompt="Old rusty metal bars with peeling paint",
guidance_scale=10.0,
tileable=True,
num_images_per_prompt=1,
num_inference_steps=4,
).images[0]
material = pipe(
prompt=load_image("path/to/input_image.jpg"),
guidance_scale=10.0,
tileable=True,
num_images_per_prompt=1,
num_inference_steps=4,
).images[0]
basecolor = material.basecolor
normal = material.normal
height = material.height
roughness = material.roughness
metallic = material.metallic
📚 ドキュメント
モデルアーキテクチャ
想定される用途
StableMaterials は、コンピュータグラフィックスのアプリケーション(ゲーム開発、建築可視化、デジタルコンテンツ作成など)において、高品質でリアルなPBRマテリアルを生成するために設計されています。このモデルは、テキストと画像によるプロンプトの両方をサポートしており、多様で直感的なマテリアル生成を可能にします。 🕹️🏛️📸
🗂️ 学習データ
モデルは、MatSynth と Deschaintre らのデータセットを組み合わせたもので学習されており、6,198個の一意のPBRマテリアルが含まれています。また、様々なプロンプトを使用してSDXLモデルから生成された4,000個のテクスチャ - テキストペアも組み込まれています。 🔍
🔧 制限事項
StableMaterials は堅牢なパフォーマンスを示しますが、いくつかの制限があります。
- 複雑な空間関係を記述する複雑なプロンプトに対応するのが難しい場合があります。 🧩
- 非常に詳細なパターンや図形を正確に表現できない場合があります。 🎨
- 特定のマテリアルタイプに対して誤った反射特性を生成することがあります。 ✨
将来のアップデートでは、より多様な学習プロンプトを組み込み、複雑なテクスチャの処理を改善することで、これらの制限を解消することを目指しています。
📖 引用
このモデルを研究で使用する場合は、以下の論文を引用してください。
@article{vecchio2024stablematerials,
title={StableMaterials: Enhancing Diversity in Material Generation via Semi-Supervised Learning},
author={Vecchio, Giuseppe},
journal={arXiv preprint arXiv:2406.09293},
year={2024}
}
📄 ライセンス
このモデルは、OpenRAIL ライセンスの下で提供されています。
情報テーブル
属性 |
详情 |
モデルタイプ |
拡散ベースのモデル |
学習データ |
MatSynth と Deschaintre らのデータセット、SDXL モデルから生成されたテクスチャ - テキストペア |