欢迎来到 NitroFusion 的世界,它是由 ChenDY 开发的一种开创性文本到图像模型!
什么是 NitroFusion?
NitroFusion 是一种尖端的文本到图像模型,建立在广受欢迎的 Diffusers 库之上。它利用稳定扩散和 sdxl 技术以及对抗扩散蒸馏的强大功能,创建出令人惊叹的逼真图像。该模型基于研究论文 “arxiv: 2412.02030”,该论文探讨了文本到图像生成的最新进展。
主要功能:
- 文本到图像的生成:NitroFusion 擅长将文字提示转换成具有视觉吸引力的图像,是创意专业人员和爱好者的理想工具。
- Stable Diffusion and SDXL: 该模型利用这些先进技术确保稳定和高质量的图像生成,从而产生令人印象深刻的视觉输出。
- 逆向扩散蒸馏:这项技术进一步提高了模型的性能,使其能够生成具有超凡细节和清晰度的图像。
入门:
要开始使用 NitroFusion,只需访问 Hugging Face 网站并导航到 ChenDY 的 NitroFusion 资源库。您可以浏览模型卡、文件和社区讨论,了解有关该项目的更多信息。该模型可随时用于部署,让您可以进行实验并创建自己的文本到图像杰作。
from diffusers import LCMScheduler
class TimestepShiftLCMScheduler(LCMScheduler):
def __init__(self, *args, shifted_timestep=250, **kwargs):
super().__init__(*args, **kwargs)
self.register_to_config(shifted_timestep=shifted_timestep)
def set_timesteps(self, *args, **kwargs):
super().set_timesteps(*args, **kwargs)
self.origin_timesteps = self.timesteps.clone()
self.shifted_timesteps = (self.timesteps * self.config.shifted_timestep / self.config.num_train_timesteps).long()
self.timesteps = self.shifted_timesteps
def step(self, model_output, timestep, sample, generator=None, return_dict=True):
if self.step_index is None:
self._init_step_index(timestep)
self.timesteps = self.origin_timesteps
output = super().step(model_output, timestep, sample, generator, return_dict)
self.timesteps = self.shifted_timesteps
return output
import torch
from diffusers import DiffusionPipeline, UNet2DConditionModel
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
# Load model.
base_model_id = "stabilityai/stable-diffusion-xl-base-1.0"
repo = "ChenDY/NitroFusion"
# NitroSD-Realism
ckpt = "nitrosd-realism_unet.safetensors"
unet = UNet2DConditionModel.from_config(base_model_id, subfolder="unet").to("cuda", torch.float16)
unet.load_state_dict(load_file(hf_hub_download(repo, ckpt), device="cuda"))
scheduler = TimestepShiftLCMScheduler.from_pretrained(base_model_id, subfolder="scheduler", shifted_timestep=250)
scheduler.config.original_inference_steps = 4
# # NitroSD-Vibrant
# ckpt = "nitrosd-vibrant_unet.safetensors"
# unet = UNet2DConditionModel.from_config(base_model_id, subfolder="unet").to("cuda", torch.float16)
# unet.load_state_dict(load_file(hf_hub_download(repo, ckpt), device="cuda"))
# scheduler = TimestepShiftLCMScheduler.from_pretrained(base_model_id, subfolder="scheduler", shifted_timestep=500)
# scheduler.config.original_inference_steps = 4
pipe = DiffusionPipeline.from_pretrained(
base_model_id,
unet=unet,
scheduler=scheduler,
torch_dtype=torch.float16,
variant="fp16",
).to("cuda")
prompt = "a photo of a cat"
image = pipe(
prompt=prompt,
num_inference_steps=1, # NotroSD-Realism and -Vibrant both support 1 - 4 inference steps.
guidance_scale=0,
).images[0]
结论:
ChenDY的NitroFusion是一个非凡的文本到图像模型,它突破了人工智能生成艺术的界限。凭借其先进的技术和社区支持,它为艺术家、设计师和开发人员提供了一个独特而强大的工具。敬请期待更多激动人心的更新,加入 NitroFusion 社区,成为这场创意革命的一份子!