Last active
September 8, 2022 15:07
-
-
Save htoyryla/77b6376fe04ef3a66ff6a9b1cb206a09 to your computer and use it in GitHub Desktop.
Script for image2image using stablediffusion using incremental strength
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from torch import autocast | |
import torch | |
import requests | |
from PIL import Image | |
import sys | |
from diffusers import StableDiffusionImg2ImgPipeline #, preprocess | |
import random | |
import argparse | |
# image to image generation using StableDiffusion 0.3.0 dev | |
# by default generates 29 images varying strength 0 to 1 | |
# set --start and --step to vary the starting strength etc | |
# Point model to your stablediffusion pretrained folder | |
# or a save from textual inversion if needed | |
parser = argparse.ArgumentParser() | |
# define params and their types with defaults if needed | |
parser.add_argument('--model', type=str, default="/work/dtest/stable-diffusion-v1-4", help='path to model') | |
parser.add_argument('--text', type=str, default="", help='text prompt') | |
parser.add_argument('--image', type=str, default="", help='path to init image') | |
parser.add_argument('--output', type=str, default="", help='path to output') | |
parser.add_argument('--h', type=int, default=512, help='image height') | |
parser.add_argument('--w', type=int, default=512, help='image width') | |
parser.add_argument('--start', type=int, default=0, help='start aka skip') | |
parser.add_argument('--step', type=int, default=5, help='step to increase start point per iteration') | |
parser.add_argument('--g', type=float, default=7.5, help='guidance scale') | |
parser.add_argument('--seed', type=int, default=0, help='manual seed') | |
opt = parser.parse_args() | |
# load the pipeline | |
device = "cuda" | |
pipe = StableDiffusionImg2ImgPipeline.from_pretrained( | |
#"CompVis/stable-diffusion-v1-4", | |
#"file:///work/dtest/stable-diffusion-v1-4", | |
"textual_inversion_st-pes6", | |
revision="fp16", | |
torch_dtype=torch.float16, | |
use_auth_token=True | |
).to(device) | |
pipe.enable_attention_slicing() | |
fn = opt.image | |
ofn = opt.output | |
start = opt.start | |
if opt.seed > 0: | |
seed = opt.seed | |
else: | |
seed = random.randint(0,63444) | |
g = opt.g | |
steps = 100 | |
print(start, seed) | |
init_image = Image.open(fn).convert("RGB") | |
init_image = init_image.resize((opt.h, opt.w)) | |
#init_image = preprocess(init_image) | |
prompt = opt.text | |
step = opt.step | |
for n in range(start,steps, step): | |
beta = n/steps | |
with autocast("cuda"): | |
generator = torch.Generator("cuda").manual_seed(seed) | |
images = pipe(prompt=prompt, init_image=init_image, strength=beta, guidance_scale=g, generator=generator)["sample"] | |
images[0].save(ofn+"-"+str(n)+".png") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment