1
0
Fork 0

use tile size when completing partial latents

This commit is contained in:
Sean Sube 2023-07-09 23:49:34 -05:00
parent 8acfaaa1ee
commit 95cad909fc
Signed by: ssube
GPG Key ID: 3EED7B957D362AF1
3 changed files with 34 additions and 23 deletions

View File

@ -146,7 +146,9 @@ class ChainPipeline:
)
def stage_tile(
source_tile: Image.Image, tile_mask: Image.Image, dims: Tuple[int, int, int]
source_tile: Image.Image,
tile_mask: Image.Image,
dims: Tuple[int, int, int],
) -> Image.Image:
output_tile = stage_pipe.run(
job,

View File

@ -6,7 +6,12 @@ import torch
from PIL import Image
from ..diffusers.load import load_pipeline
from ..diffusers.utils import encode_prompt, get_latents_from_seed, get_tile_latents, parse_prompt
from ..diffusers.utils import (
encode_prompt,
get_latents_from_seed,
get_tile_latents,
parse_prompt,
)
from ..params import ImageParams, Size, SizeChart, StageParams
from ..server import ServerContext
from ..worker import ProgressCallback, WorkerContext
@ -50,8 +55,6 @@ class SourceTxt2ImgStage(BaseStage):
tile_size = params.tiles
# generate new latents or slice existing
if latents is None:
if max(size) > tile_size:
latent_size = Size(tile_size, tile_size)
pipe_width = pipe_height = tile_size
@ -60,11 +63,13 @@ class SourceTxt2ImgStage(BaseStage):
pipe_width = size.width
pipe_height = size.height
# generate new latents or slice existing
if latents is None:
# generate new latents
latents = get_latents_from_seed(params.seed, latent_size, params.batch)
else:
# slice existing latents
latents = get_tile_latents(latents, dims, size)
latents = get_tile_latents(latents, dims, Size(tile_size, tile_size))
pipe_width = pipe_height = tile_size
pipe_type = params.get_valid_pipeline("txt2img")

View File

@ -6,7 +6,12 @@ import torch
from PIL import Image
from ..diffusers.load import load_pipeline
from ..diffusers.utils import encode_prompt, get_latents_from_seed, get_tile_latents, parse_prompt
from ..diffusers.utils import (
encode_prompt,
get_latents_from_seed,
get_tile_latents,
parse_prompt,
)
from ..image import mask_filter_none, noise_source_histogram
from ..output import save_image
from ..params import Border, ImageParams, Size, SizeChart, StageParams
@ -68,9 +73,6 @@ class UpscaleOutpaintStage(BaseStage):
size = Size(*source.size)
tile_size = params.tiles
# generate new latents or slice existing
if latents is None:
if max(size) > tile_size:
latent_size = Size(tile_size, tile_size)
pipe_width = pipe_height = tile_size
@ -79,12 +81,14 @@ class UpscaleOutpaintStage(BaseStage):
pipe_width = size.width
pipe_height = size.height
# generate new latents or slice existing
if latents is None:
# generate new latents
latents = get_latents_from_seed(params.seed, latent_size, params.batch)
else:
# slice existing latents
latents = get_tile_latents(latents, dims, size)
pipe_width, pipe_height, _tile_size = dims
# slice existing latents and make sure there is a complete tile
latents = get_tile_latents(latents, dims, Size(tile_size, tile_size))
pipe_width = pipe_height = tile_size
if params.lpw():
logger.debug("using LPW pipeline for inpaint")