t2i-adapter-lineart-sdxl-1.0 项目介绍
项目背景
T2I Adapter 是一个为稳定扩散模型提供附加条件输入的网络。该项目名为“t2i-adapter-lineart-sdxl-1.0”,专注于利用线稿形式的条件输入来生成图像。它的基础模型是稳定扩散 XL 基础版1.0,由腾讯 ARC 和 Hugging Face 联合开发。
模型详情
- 开发者: T2I-Adapter 由一组学者和开发人员创建,旨在为文本到图像的扩散模型挖掘更多可控能力。
- 模型类型: 基于扩散的文本到图像生成模型。
- 使用语言: 英语。
- 许可证: Apache 2.0。
- 更多资源: 可查阅该项目的 GitHub 仓库 和 学术论文。
模型复杂度
模型的复杂度通过参数的数量得以表现:
类型 | 参数数量 |
---|---|
SD-V1.4/1.5 | 860M |
SD-XL | 2.6B |
T2I-Adapter | 77M |
T2I-Adapter-SDXL | 77/79M |
Checkpoints
t2i-adapter-lineart-sdxl-1.0 是其中一个关键的检查点,该模型是通过线稿边缘检测进行训练的。下表列出了一些相关的模型及其特性:
模型名称 | 控制图像概览 | 控制图像示例 | 生成图像示例 |
---|---|---|---|
TencentARC/t2i-adapter-lineart-sdxl-1.0 | 手绘单色线稿 |
使用示范
以下是如何使用 t2i-adapter-lineart-sdxl-1.0 生成图像的简单示例。
依赖安装
要开始使用,首先需要安装一些必要的依赖库:
pip install -U git+https://github.com/huggingface/diffusers.git
pip install -U controlnet_aux==0.0.7
pip install transformers accelerate safetensors
代码示例
以下代码将展示如何通过线稿模型生成一个图像:
from diffusers import StableDiffusionXLAdapterPipeline, T2IAdapter, EulerAncestralDiscreteScheduler, AutoencoderKL
from controlnet_aux.lineart import LineartDetector
import torch
# 加载适配器
adapter = T2IAdapter.from_pretrained(
"TencentARC/t2i-adapter-lineart-sdxl-1.0", torch_dtype=torch.float16, varient="fp16"
).to("cuda")
# 配置其他组件
model_id = 'stabilityai/stable-diffusion-xl-base-1.0'
euler_a = EulerAncestralDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
vae=AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = StableDiffusionXLAdapterPipeline.from_pretrained(
model_id, vae=vae, adapter=adapter, scheduler=euler_a, torch_dtype=torch.float16, variant="fp16",
).to("cuda")
line_detector = LineartDetector.from_pretrained("lllyasviel/Annotators").to("cuda")
- 条件图像
我们利用线稿检测工具来准备条件图像:
url = "https://huggingface.co/Adapter/t2iadapter/resolve/main/figs_SDXLV1.0/org_lin.jpg"
image = load_image(url)
image = line_detector(image, detect_resolution=384, image_resolution=1024)
- 生成图像
设定提示词进行图像生成:
prompt = "Ice dragon roar, 4k photo"
negative_prompt = "anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured"
gen_images = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
image=image,
num_inference_steps=30,
adapter_conditioning_scale=0.8,
guidance_scale=7.5,
).images[0]
gen_images.save('out_lin.png')
训练信息
该模型是在 3M 高分辨率图像-文本对上进行训练的,具体配置如下:
- 训练步数: 20000
- 批处理大小: 单 GPU 批处理大小为 16,总批处理大小为 256。
- 学习率: 固定为 1e-5
- 使用 mixed precision: fp16
t2i-adapter-lineart-sdxl-1.0 提供了更可控的图像生成能力,为用户带来了高效且多样化的创作体验。