import paddle
from ppdiffusers import DiffusionPipeline, ControlNetModel
from ppdiffusers.utils import load_image, image_grid
import numpy as np
from PIL import Image
import cv2

class CannyDetector:
    def __call__(self, img, low_threshold, high_threshold):
        return cv2.Canny(img, low_threshold, high_threshold)
apply_canny = CannyDetector()

# 加载模型
controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny", paddle_dtype=paddle.float16)
pipe = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", 
                                         controlnet=controlnet,
                                         safety_checker=None,
                                         feature_extractor=None,
                                         requires_safety_checker=False,
                                         paddle_dtype=paddle.float16, 
                                         custom_pipeline="webui_stable_diffusion_controlnet", 
                                         custom_revision="9aa0fcae034d99a796c3077ec6fea84808fc5875")

# 或者 # custom_pipeline="junnyu/webui_controlnet_ppdiffusers")

# 加载图片
raw_image = load_image("https://paddlenlp.bj.bcebos.com/models/community/junnyu/develop/control_bird_canny_demo.png")
canny_image = Image.fromarray(apply_canny(np.array(raw_image), low_threshold=100, high_threshold=200))

# 选择sampler
# Please choose in ['pndm', 'lms', 'euler', 'euler-ancestral', 'dpm-multi', 'dpm-single', 'unipc-multi', 'ddim', 'ddpm', 'deis-multi', 'heun', 'kdpm2-ancestral', 'kdpm2']!
pipe.switch_scheduler('euler-ancestral')

# propmpt 和 negative_prompt
prompt = "a (blue:1.5) bird"
negative_prompt = ""
# 想要返回多少张图片
num = 4
clip_skip = 2
controlnet_conditioning_scale = 1.
num_inference_steps = 50

all_images = []
print("raw_image vs canny_image")
display(image_grid([raw_image, canny_image], 1, 2))
for i in range(num):
    img = pipe(
        prompt=prompt,
        negative_prompt = negative_prompt,
        image=canny_image,
        num_inference_steps=num_inference_steps,
        controlnet_conditioning_scale=controlnet_conditioning_scale,
        clip_skip= clip_skip,
    ).images[0]
    all_images.append(img)
display(image_grid(all_images, 1, num))

image

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API: The model has no library tag.