Spaces:
Runtime error
Runtime error
File size: 2,847 Bytes
e3dd038 4e7fe8d e3dd038 134c8c2 e3dd038 134c8c2 c8d48fa e3dd038 134c8c2 2f108fa 134c8c2 2f108fa 134c8c2 e3dd038 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
from diffusers import StableDiffusionXLControlNetPipeline, ControlNetModel, AutoencoderKL
import torch
import pickle as pkl
import spaces
device = "cuda"
def get_cn_pipeline(reference_flg):
controlnets = [
ControlNetModel.from_pretrained("./controlnet/lineart", torch_dtype=torch.float16, use_safetensors=True),
ControlNetModel.from_pretrained("mattyamonaca/controlnet_line2line_xl", torch_dtype=torch.float16)
]
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
"cagliostrolab/animagine-xl-3.1", controlnet=controlnets, vae=vae, torch_dtype=torch.float16
)
return pipe
def invert_image(img):
# 画像を読み込む
# 画像をグレースケールに変換(もしもともと白黒でない場合)
img = img.convert('L')
# 画像の各ピクセルを反転
inverted_img = img.point(lambda p: 255 - p)
# 反転した画像を保存
return inverted_img
def get_cn_detector(image):
#lineart_anime = LineartAnimeDetector.from_pretrained("lllyasviel/Annotators")
#canny = CannyDetector()
#lineart_anime_img = lineart_anime(image)
#canny_img = canny(image)
#canny_img = canny_img.resize((lineart_anime(image).width, lineart_anime(image).height))
re_image = invert_image(image)
detectors = [re_image, image]
print(detectors)
return detectors
@spaces.GPU
def generate(pipe, detectors, prompt, negative_prompt, reference_flg=False, reference_img=None):
pipe.to("cuda")
default_pos = ""
default_neg = ""
prompt = default_pos + prompt
negative_prompt = default_neg + negative_prompt
if reference_flg==False:
print("####False####")
image = pipe(
prompt=prompt,
negative_prompt = negative_prompt,
image=detectors,
num_inference_steps=50,
controlnet_conditioning_scale=[1.0, 0.2],
).images[0]
else:
print("####True####")
print(reference_img)
pipe.load_ip_adapter(
"h94/IP-Adapter",
subfolder="sdxl_models",
weight_name="ip-adapter-plus_sdxl_vit-h.bin"
)
image = pipe(
prompt=prompt,
negative_prompt = negative_prompt,
image=detectors,
num_inference_steps=50,
controlnet_conditioning_scale=[1.0, 0.2],
ip_adapter_image=reference_img,
).images[0]
return image |