🚀 CleanDIFT模型卡片
Diffusion模型能够学习强大的世界表征,已被证明对语义对应检测、深度估计、语义分割和分类等任务具有重要价值。然而,Diffusion模型需要有噪声的输入图像,这会破坏信息,并引入噪声水平作为超参数,需要针对每个任务进行调整。
我们推出了CleanDIFT,这是一种通过使Diffusion模型能够直接处理干净的输入图像来提取无噪声、与时间步长无关的特征的新方法。该方法效率高,仅需在单个GPU上训练30分钟。我们随论文 "CleanDIFT: Diffusion Features without Noise" 一起发布了这些模型。
我们为Stable Diffusion 1.5和Stable Diffusion 2.1提供了检查点。
🚀 快速开始
Diffusion模型在诸多图像相关任务中表现出色,但对输入图像的噪声要求带来了信息破坏和超参数调整的问题。CleanDIFT则打破这一限制,能直接处理干净输入图像,高效提取特征。
✨ 主要特性
- 无噪声特征提取:能够直接处理干净的输入图像,提取无噪声、与时间步长无关的特征。
- 高效训练:仅需在单个GPU上训练30分钟。
- 模型兼容:提供Stable Diffusion 1.5和Stable Diffusion 2.1的检查点,且与
diffusers
库完全兼容。
📦 安装指南
暂未提供相关安装步骤信息。
💻 使用示例
基础用法
对于如何使用CleanDIFT提取特征以及如何将其用于下游任务的详细示例,请参考此处提供的笔记本。
高级用法
我们的检查点与diffusers
库完全兼容。如果您已经有一个使用diffusers
中SD 1.5或SD 2.1的管道,您可以简单地替换U-Net状态字典:
from diffusers import UNet2DConditionModel
from huggingface_hub import hf_hub_download
unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2-1", subfolder="unet")
ckpt_pth = hf_hub_download(repo_id="CompVis/cleandift", filename="cleandift_sd21_unet.safetensors")
state_dict = load_file(ckpt_pth)
unet.load_state_dict(state_dict, strict=True)
📚 详细文档
CleanDIFT打破了Diffusion模型对有噪声输入图像的依赖,通过直接处理干净输入图像,避免了信息破坏和噪声水平超参数的调整。该方法训练高效,能在短时间内完成,并且提供了与主流模型和库的兼容性,方便用户在已有管道中使用。
📄 许可证
本项目采用MIT许可证。
📚 引用
如果您在研究中使用了本项目,请使用以下BibTeX引用:
@misc{stracke2024cleandiftdiffusionfeaturesnoise,
title={CleanDIFT: Diffusion Features without Noise},
author={Nick Stracke and Stefan Andreas Baumann and Kolja Bauer and Frank Fundel and Björn Ommer},
year={2024},
eprint={2412.03439},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2412.03439},
}