Merge branch 'sd-webui:dev' into dev

This commit is contained in:
ZeroCool 2022-09-11 10:43:01 -07:00 committed by GitHub
commit cf924ca11f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 18 deletions

View File

@ -7,6 +7,7 @@
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
cd $SCRIPT_DIR
export PYTHONPATH=$SCRIPT_DIR
MODEL_DIR="${SCRIPT_DIR}/model_cache"
# Array of model files to pre-download
@ -31,6 +32,7 @@ ENV_UPDATED=0
ENV_MODIFIED=$(date -r $ENV_FILE "+%s")
ENV_MODIFED_FILE="${SCRIPT_DIR}/.env_updated"
if [[ -f $ENV_MODIFED_FILE ]]; then ENV_MODIFIED_CACHED=$(<${ENV_MODIFED_FILE}); else ENV_MODIFIED_CACHED=0; fi
export PIP_EXISTS_ACTION=w
# Create/update conda env if needed
if ! conda env list | grep ".*${ENV_NAME}.*" >/dev/null 2>&1; then

View File

@ -812,7 +812,7 @@ def oxlamon_matrix(prompt, seed, n_iter, batch_size):
return all_seeds, n_iter, prompt_matrix_parts, all_prompts, needrows
def perform_masked_image_restoration(image, init_img, init_mask, mask_blur_strength, mask_restore, use_RealESRGAN, RealESRGAN):
if not mask_restore:
if not mask_restore:
return image
else:
init_mask = init_mask.filter(ImageFilter.GaussianBlur(mask_blur_strength))
@ -840,7 +840,7 @@ def perform_color_correction(img_rgb, correction_target_lab, do_color_correction
except:
print("Install scikit-image to perform color correction")
return img_rgb
if not do_color_correction: return img_rgb
if correction_target_lab is None: return img_rgb
@ -854,7 +854,7 @@ def perform_color_correction(img_rgb, correction_target_lab, do_color_correction
channel_axis=2
), cv2.COLOR_LAB2RGB).astype("uint8")
)
)
)
def process_images(
outpath, func_init, func_sample, prompt, seed, sampler_name, skip_grid, skip_save, batch_size,
@ -1027,7 +1027,7 @@ def process_images(
while(torch.cuda.memory_allocated()/1e6 >= mem):
time.sleep(1)
cur_variant_amount = variant_amount
cur_variant_amount = variant_amount
if variant_amount == 0.0:
# we manually generate all input noises because each one should have a specific seed
x = create_random_tensors(shape, seeds=seeds)
@ -1114,10 +1114,10 @@ def process_images(
gfpgan_image = Image.fromarray(gfpgan_sample)
gfpgan_image = perform_color_correction(gfpgan_image, correction_target, do_color_correction)
gfpgan_image = perform_masked_image_restoration(
gfpgan_image, init_img, init_mask,
gfpgan_image, init_img, init_mask,
mask_blur_strength, mask_restore,
use_RealESRGAN = False, RealESRGAN = None
)
)
gfpgan_metadata = copy.copy(metadata)
gfpgan_metadata.GFPGAN = True
ImageMetadata.set_on_image( gfpgan_image, gfpgan_metadata )
@ -1137,7 +1137,7 @@ skip_grid, sort_samples, sampler_name, ddim_eta, n_iter, batch_size, i, denoisin
esrgan_image = Image.fromarray(esrgan_sample)
esrgan_image = perform_color_correction(esrgan_image, correction_target, do_color_correction)
esrgan_image = perform_masked_image_restoration(
esrgan_image, init_img, init_mask,
esrgan_image, init_img, init_mask,
mask_blur_strength, mask_restore,
use_RealESRGAN, RealESRGAN
)
@ -1159,7 +1159,7 @@ skip_grid, sort_samples, sampler_name, ddim_eta, n_iter, batch_size, i, denoisin
gfpgan_esrgan_image = Image.fromarray(gfpgan_esrgan_sample)
gfpgan_esrgan_image = perform_color_correction(gfpgan_esrgan_image, correction_target, do_color_correction)
gfpgan_esrgan_image = perform_masked_image_restoration(
gfpgan_esrgan_image, init_img, init_mask,
gfpgan_esrgan_image, init_img, init_mask,
mask_blur_strength, mask_restore,
use_RealESRGAN, RealESRGAN
)
@ -1175,7 +1175,7 @@ skip_save, skip_grid, sort_samples, sampler_name, ddim_eta, n_iter, batch_size,
output_images.append(image)
image = perform_masked_image_restoration(
image, init_img, init_mask,
image, init_img, init_mask,
mask_blur_strength, mask_restore,
# RealESRGAN image already processed in if-case above.
use_RealESRGAN = False, RealESRGAN = None
@ -1505,7 +1505,7 @@ def img2img(prompt: str, image_editor_mode: str, mask_mode: str, mask_blur_stren
#let's try and find where init_image is 0's
#shape is probably (3,width,height)?
if image_editor_mode == "Uncrop":
if image_editor_mode == "Uncrop":
_image=image.numpy()[0]
_mask=np.ones((_image.shape[1],_image.shape[2]))
@ -1526,7 +1526,7 @@ def img2img(prompt: str, image_editor_mode: str, mask_mode: str, mask_blur_stren
boundingbox=np.zeros(shape=(height,width))
boundingbox[colstart+PAD_IMG:colend-PAD_IMG,rowstart+PAD_IMG:rowend-PAD_IMG]=1
boundingbox=blurArr(boundingbox,4)
#this is the mask for outpainting
PAD_MASK=24
boundingbox2=np.zeros(shape=(height,width))
@ -1557,7 +1557,7 @@ def img2img(prompt: str, image_editor_mode: str, mask_mode: str, mask_blur_stren
init_image = init_image.to(device)
init_image = repeat(init_image, '1 ... -> b ...', b=batch_size)
init_latent = (model if not opt.optimized else modelFS).get_first_stage_encoding((model if not opt.optimized else modelFS).encode_first_stage(init_image)) # move to latent space
if opt.optimized:
mem = torch.cuda.memory_allocated()/1e6
modelFS.to("cpu")
@ -1617,7 +1617,7 @@ def img2img(prompt: str, image_editor_mode: str, mask_mode: str, mask_blur_stren
# turn on color correction for loopback to prevent known issue of color drift
do_color_correction = True
for i in range(n_iter):
if do_color_correction and i == 0:
correction_target = cv2.cvtColor(np.asarray(init_img.copy()), cv2.COLOR_RGB2LAB)
@ -1658,9 +1658,9 @@ def img2img(prompt: str, image_editor_mode: str, mask_mode: str, mask_blur_stren
write_info_files=write_info_files,
write_sample_info_to_log_file=write_sample_info_to_log_file,
jpg_sample=jpg_sample,
job_info=job_info,
job_info=job_info,
do_color_correction=do_color_correction,
correction_target=correction_target
correction_target=correction_target
)
if initial_seed is None:
@ -2074,7 +2074,7 @@ def imgproc(image,image_batch,imgproc_prompt,imgproc_toggles, imgproc_upscale_to
if 1 in imgproc_toggles:
if imgproc_upscale_toggles == 0:
ModelLoader(['GFPGAN','LDSR'],False,True) # Unload unused models
ModelLoader(['RealESGAN'],True,False,imgproc_realesrgan_model_name) # Load used models
ModelLoader(['RealESGAN'],True,False,imgproc_realesrgan_model_name) # Load used models
elif imgproc_upscale_toggles == 1:
ModelLoader(['GFPGAN','LDSR'],False,True) # Unload unused models
ModelLoader(['RealESGAN','model'],True,False) # Load used models
@ -2306,7 +2306,7 @@ img2img_toggles = [
'Write sample info files',
'Write sample info to one file',
'jpg samples',
'Color correction (always enabled on loopback mode)'
'Color correction (always enabled on loopback mode)',
'Filter NSFW content',
]
# removed for now becuase of Image Lab implementation
@ -2412,7 +2412,7 @@ class ServerLauncher(threading.Thread):
'inbrowser': opt.inbrowser,
'server_name': '0.0.0.0',
'server_port': opt.port,
'share': opt.share,
'share': opt.share,
'show_error': True
}
if not opt.share: