-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathimg2imgsd.py
92 lines (80 loc) · 4.54 KB
/
img2imgsd.py
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
81
82
83
84
85
86
87
88
89
90
91
92
from pathlib import Path
import numpy as np
import requests
import torch
from PIL import Image
from io import BytesIO
# from diffusers import StableDiffusionImg2ImgPipeline
# device = "cuda"
# model_id_or_path = "runwayml/stable-diffusion-v1-5"
# # model_id_or_path = "models/stable-diffusion-xl-base-0.9"
# pipe = StableDiffusionImg2ImgPipeline.from_pretrained(model_id_or_path, torch_dtype=torch.float16, variant="fp16", safety_checker=None)
# pipe = pipe.to(device)
from diffusers import StableDiffusionXLImg2ImgPipeline, StableDiffusionImg2ImgPipeline
from diffusers.utils import load_image
from stable_diffusion_server.utils import log_time
# pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
# "stabilityai/stable-diffusion-xl-refiner-1.0",
# # "models/stable-diffusion-xl-base-0.9",
# torch_dtype = torch.float16,
# use_safetensors=True,
# variant="fp16",
# )
pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
"segmind/SSD-1B", # models/SSD-1B
torch_dtype=torch.float16,
use_safetensors=True,
variant="fp16",
)
pipe = pipe.to("cuda") # # "LayerNormKernelImpl" not implemented for 'Half' error if its on cpu it cant do fp16
# idea composite: and re prompt img-img to support different sizes
# url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
#
# response = requests.get(url)
# init_image = Image.open(BytesIO(response.content)).convert("RGB")
# init_image = init_image.resize((768, 512))
# successfully inpaints a deleted area strength=0.75
# init_image = Image.open("/mnt/c/Users/leepenkman/Pictures/aiart/ainostalgic-colorful-relaxing-chill-realistic-cartoon-Charcoal-illustration-fantasy-fauvist-abstract-impressionist-watercolor-painting-Background-location-scenery-amazing-wonderful-Dog-Shelter-Worker-Dog.webp").convert("RGB")
# redo something? strength 1
# init_image = Image.open("/home/lee/code/sdif/mask.png").convert("RGB")
init_image = Image.open("/home/lee/code/sdif/images/lee.jpg").convert("RGB")
init_image = Image.open(str(Path("images/input4xscaled.png"))).convert("RGB")
# init_image = Image.open("/mnt/c/Users/leepenkman/Pictures/dogstretch.png").convert("RGB")
# init_image = Image.open("/mnt/c/Users/leepenkman/Pictures/dogcenter.png").convert("RGB")
# init_image = init_image.resize((1080, 1920))
# init_image = init_image.resize((1920, 1080))
# init_image = init_image.resize((1024, 1024))
prompt = "A fantasy landscape, trending on artstation, beautiful amazing unreal surreal gorgeous impressionism"
prompt = "mouth open nostalgic colorful relaxing chill realistic cartoon Charcoal illustration fantasy fauvist abstract impressionist watercolor painting Background location scenery amazing wonderful Dog Shelter Worker Dog"
prompt = "Realistic character cartoon Charcoal illustration fantasy impressionist watercolor painting"
prompt = "8k high res"
# images = pipe(prompt=prompt, image=init_image, strength=0.75, guidance_scale=7.5).images
# images[0].save("fantasy_landscape.png")
#
# # url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"
#
# init_image = load_image(url).convert("RGB")
# prompt = "a photo of an astronaut riding a horse on mars"
study_dir = "images/upscaler"
Path(study_dir).mkdir(parents=True, exist_ok=True)
# with log_time("img2img"):
# with torch.inference_mode():
# image = pipe(prompt=prompt, image=init_image, strength=0.75, guidance_scale=7.5).images[0]
# image.save(study_dir + "/test" + str(0.75) + "guidance_scale" + str(7.5) + ".png")
#
with log_time("img2img"):
with torch.inference_mode():
# for strength in range(.1, 1, .1):
for strength in np.linspace(.1, .8, 20):
image = pipe(prompt=prompt, image=init_image, strength=strength, guidance_scale=7.6,
num_inference_steps=10
).images[0]
image.save(
study_dir + "/lee" + str(strength) + "guidance_scale" + str(7.6) + ".png")
# # for guidance_scale in range(1, 10, .5):
# for guidance_scale in np.linspace(1, 100, 10):
# image = pipe(prompt=prompt, image=init_image, strength=strength, guidance_scale=guidance_scale).images[0]
# image.save("images/study/fantasy_dogimgimgdogstretch" + str(strength) + "guidance_scale" + str(guidance_scale) + ".png")
# image = pipe(prompt, image=init_image, strength=0.2, guidance_scale=7.5).images[0]
# image.save("images/fantasy_dogimgimgdogstretch.png")
# image.save("images/fantasy_dogimgimgdogcenter.png")