multimodalart's picture
Upload 52 files
18d0601 verified
"""
A handy utility for verifying SDXL image generation locally.
To set up, first run a local cog server using:
cog run -p 5000 python -m cog.server.http
Then, in a separate terminal, generate samples
python samples.py
"""
import base64
import os
import sys
import requests
def gen(output_fn, **kwargs):
if os.path.exists(output_fn):
return
print("Generating", output_fn)
url = "http://localhost:5000/predictions"
response = requests.post(url, json={"input": kwargs})
data = response.json()
try:
datauri = data["output"][0]
base64_encoded_data = datauri.split(",")[1]
data = base64.b64decode(base64_encoded_data)
except:
print("Error!")
print("input:", kwargs)
print(data["logs"])
sys.exit(1)
with open(output_fn, "wb") as f:
f.write(data)
def main():
SCHEDULERS = [
"DDIM",
"DPMSolverMultistep",
"HeunDiscrete",
"KarrasDPM",
"K_EULER_ANCESTRAL",
"K_EULER",
"PNDM",
]
gen(
f"sample.txt2img.png",
prompt="A studio portrait photo of a cat",
num_inference_steps=25,
guidance_scale=7,
negative_prompt="ugly, soft, blurry, out of focus, low quality, garish, distorted, disfigured",
seed=1000,
width=1024,
height=1024,
)
for refiner in ["base_image_refiner", "expert_ensemble_refiner", "no_refiner"]:
gen(
f"sample.img2img.{refiner}.png",
prompt="a photo of an astronaut riding a horse on mars",
image="https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png",
prompt_strength=0.8,
num_inference_steps=25,
refine=refiner,
guidance_scale=7,
negative_prompt="ugly, soft, blurry, out of focus, low quality, garish, distorted, disfigured",
seed=42,
)
gen(
f"sample.inpaint.{refiner}.png",
prompt="A majestic tiger sitting on a bench",
image="https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png",
mask="https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png",
prompt_strength=0.8,
num_inference_steps=25,
refine=refiner,
guidance_scale=7,
negative_prompt="ugly, soft, blurry, out of focus, low quality, garish, distorted, disfigured",
seed=42,
)
for split in range(0, 10):
split = split / 10.0
gen(
f"sample.expert_ensemble_refiner.{split}.txt2img.png",
prompt="A studio portrait photo of a cat",
num_inference_steps=25,
guidance_scale=7,
refine="expert_ensemble_refiner",
high_noise_frac=split,
negative_prompt="ugly, soft, blurry, out of focus, low quality, garish, distorted, disfigured",
seed=1000,
width=1024,
height=1024,
)
gen(
f"sample.refine.txt2img.png",
prompt="A studio portrait photo of a cat",
num_inference_steps=25,
guidance_scale=7,
refine="base_image_refiner",
negative_prompt="ugly, soft, blurry, out of focus, low quality, garish, distorted, disfigured",
seed=1000,
width=1024,
height=1024,
)
gen(
f"sample.refine.10.txt2img.png",
prompt="A studio portrait photo of a cat",
num_inference_steps=25,
guidance_scale=7,
refine="base_image_refiner",
refine_steps=10,
negative_prompt="ugly, soft, blurry, out of focus, low quality, garish, distorted, disfigured",
seed=1000,
width=1024,
height=1024,
)
gen(
"samples.2.txt2img.png",
prompt="A studio portrait photo of a cat",
num_inference_steps=25,
guidance_scale=7,
negative_prompt="ugly, soft, blurry, out of focus, low quality, garish, distorted, disfigured",
scheduler="KarrasDPM",
num_outputs=2,
seed=1000,
width=1024,
height=1024,
)
for s in SCHEDULERS:
gen(
f"sample.{s}.txt2img.png",
prompt="A studio portrait photo of a cat",
num_inference_steps=25,
guidance_scale=7,
negative_prompt="ugly, soft, blurry, out of focus, low quality, garish, distorted, disfigured",
scheduler=s,
seed=1000,
width=1024,
height=1024,
)
if __name__ == "__main__":
main()