Resize hires as an image

This commit is contained in:
Craig 2022-10-29 20:40:30 -04:00 committed by Lincoln Stein
parent 82d4904c07
commit d05b1b3544

View File

@ -10,6 +10,8 @@ from ldm.models.diffusion.ddim import DDIMSampler
from ldm.invoke.generator.omnibus import Omnibus from ldm.invoke.generator.omnibus import Omnibus
from ldm.models.diffusion.shared_invokeai_diffusion import InvokeAIDiffuserComponent from ldm.models.diffusion.shared_invokeai_diffusion import InvokeAIDiffuserComponent
from PIL import Image from PIL import Image
from ldm.invoke.devices import choose_autocast
from ldm.invoke.image_util import InitImageResizer
class Txt2Img2Img(Generator): class Txt2Img2Img(Generator):
def __init__(self, model, precision): def __init__(self, model, precision):
@ -44,16 +46,13 @@ class Txt2Img2Img(Generator):
ddim_num_steps=steps, ddim_eta=ddim_eta, verbose=False ddim_num_steps=steps, ddim_eta=ddim_eta, verbose=False
) )
#x = self.get_noise(init_width, init_height)
x = x_T
if self.free_gpu_mem and self.model.model.device != self.model.device: if self.free_gpu_mem and self.model.model.device != self.model.device:
self.model.model.to(self.model.device) self.model.model.to(self.model.device)
samples, _ = sampler.sample( samples, _ = sampler.sample(
batch_size = 1, batch_size = 1,
S = steps, S = steps,
x_T = x, x_T = x_T,
conditioning = c, conditioning = c,
shape = shape, shape = shape,
verbose = False, verbose = False,
@ -69,11 +68,21 @@ class Txt2Img2Img(Generator):
) )
# resizing # resizing
samples = torch.nn.functional.interpolate(
samples, image = self.sample_to_image(samples)
size=(height // self.downsampling_factor, width // self.downsampling_factor), image = InitImageResizer(image).resize(width, height)
mode="bilinear"
) image = np.array(image).astype(np.float32) / 255.0
image = image[None].transpose(0, 3, 1, 2)
image = torch.from_numpy(image)
image = 2.0 * image - 1.0
image = image.to(self.model.device)
scope = choose_autocast(self.precision)
with scope(self.model.device.type):
samples = self.model.get_first_stage_encoding(
self.model.encode_first_stage(image)
) # move back to latent space
t_enc = int(strength * steps) t_enc = int(strength * steps)
ddim_sampler = DDIMSampler(self.model, device=self.model.device) ddim_sampler = DDIMSampler(self.model, device=self.model.device)