飞桨PaddlePaddle中SDXL的常用方法

PaddlePaddle中使用SDXL的方法
controlnetvaeunetlora使用方法示例:

python 复制代码
# controlnet、vae、unet及lora使用方法
# 安装develop的ppdiffusers
# pip install "ppdiffusers>=0.24.0"
import numpy as np
import cv2
from PIL import Image
import paddle
from ppdiffusers import (
    ControlNetModel, 
    StableDiffusionXLControlNetPipeline,
    AutoencoderKL, 
	UNet2DConditionModel, 
	EulerAncestralDiscreteScheduler
)
from ppdiffusers.utils import load_image


# load unet
unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0/unet", paddle_dtype=paddle.float16, variant="fp16")

# load controlnet
controlnet = ControlNetModel.from_pretrained("diffusers/controlnet-canny-sdxl-1.0")

# load vae
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", paddle_dtype=paddle.float16)

pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    # "SG161222/RealVisXL_V3.0", 
    paddle_dtype=paddle.float16, 
    safety_checker=None, 
    controlnet=controlnet, 
    variant="fp16",
    low_cpu_mem_usage=True, 
    vae=vae,
	unet=unet,
)

# denoise策略
pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config)

# 开启 xformers
pipe.enable_xformers_memory_efficient_attention()

# Initialize LoRA model and weights
# 模型路径:./lora/anime-detailer-xl.safetensors
lora_model_id = "./lora"  # 模型所在目录
lora_filename = "anime-detailer-xl.safetensors"  # 模型名字
lora_scale_slider = 2  # -2 for less detailed result

# Load and fuse LoRA weights
pipe.load_lora_weights(
    lora_model_id, 
    weight_name=lora_filename, 
    from_diffusers=True, 
    from_hf_hub=True
)
pipe.fuse_lora(lora_scale=lora_scale_slider)

# 固定随机种子
generator = paddle.Generator().manual_seed(100)

# 定义prompt
prompt = "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting"
negative_prompt = 'low quality, bad quality, sketches'

# controlnet参数设置
controlnet_conditioning_scale=0.5

# controlnet参考图
image = load_image(
    "https://hf-mirror.com/datasets/hf-internal-testing/diffusers-images/resolve/main/sd_controlnet/hf-logo.png"
)
# image = image.resize((1024, 1024)) # 修改尺寸(width, height),忽略
# 参考图生成线稿
image = np.array(image)
image = cv2.Canny(image, 100, 200)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
image = Image.fromarray(image)

image = pipe(
    prompt,  
    negative_prompt=negative_prompt, 
    width=1024, 
    height=1024, 
    image=image,
    num_inference_steps=30,
    guidance_scale=3,
    num_images_per_prompt=1,
    generator=generator, 
    controlnet_conditioning_scale=controlnet_conditioning_scale, 
).images[0]

image.save("text_ctl_img.png")

更多详细使用方法可以参考官方文档以及hf-mirror.com中直接搜索比较官方的对应模型查看api使用方法,基本类似(提供了一种解决问题的思路)。

相关推荐
tzc_fly1 小时前
使用机器学习在单细胞水平识别肿瘤细胞
人工智能·机器学习
IT古董1 小时前
【漫话机器学习系列】021.类别特征(Categorical Feature)
人工智能·机器学习
湫ccc1 小时前
《机器学习》数据预处理简介
人工智能·机器学习
机器懒得学习2 小时前
打造智能化恶意软件检测桌面系统:从数据分析到一键报告生成
人工智能·python·算法·数据挖掘
szpc16212 小时前
100V宽压输入反激隔离电源,适用于N道沟MOSFET或GaN或5V栅极驱动器,无需光耦合
c语言·开发语言·人工智能·单片机·嵌入式硬件·生成对抗网络·fpga开发
weixin_543662862 小时前
伏羲0.13(文生图)
人工智能·深度学习
985小水博一枚呀2 小时前
【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码
大数据·网络·人工智能·深度学习·神经网络·cnn
itwangyang5203 小时前
AIDD - 人工智能药物设计 -使用 Butina 模块对相似化合物进行聚类
人工智能·数据挖掘·聚类
Gui林3 小时前
RoboMIND:多体现基准 机器人操纵的智能规范数据
人工智能·ai·机器人
jionghan38554 小时前
理想的未来在AI——李想深度解析理想汽车的智能化之路
人工智能·汽车