From 5841990b0df04906da7321beef6f7f7902b7d57b Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Sun, 9 Oct 2022 05:38:38 +0100 Subject: [PATCH 01/61] Update textual_inversion.py --- .../textual_inversion/textual_inversion.py | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index cd9f34984..f63160208 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -7,6 +7,9 @@ import tqdm import html import datetime +from PIL import Image, PngImagePlugin +import base64 +from io import BytesIO from modules import shared, devices, sd_hijack, processing, sd_models import modules.textual_inversion.dataset @@ -80,7 +83,15 @@ class EmbeddingDatabase: def process_file(path, filename): name = os.path.splitext(filename)[0] - data = torch.load(path, map_location="cpu") + data = [] + + if filename.upper().endswith('.PNG'): + embed_image = Image.open(path) + if 'sd-embedding' in embed_image.text: + embeddingData = base64.b64decode(embed_image.text['sd-embedding']) + data = torch.load(BytesIO(embeddingData), map_location="cpu") + else: + data = torch.load(path, map_location="cpu") # textual inversion embeddings if 'string_to_param' in data: @@ -156,7 +167,7 @@ def create_embedding(name, num_vectors_per_token, init_text='*'): return fn -def train_embedding(embedding_name, learn_rate, data_root, log_directory, steps, create_image_every, save_embedding_every, template_file): +def train_embedding(embedding_name, learn_rate, data_root, log_directory, steps, create_image_every, save_embedding_every, template_file, save_image_with_stored_embedding): assert embedding_name, 'embedding not selected' shared.state.textinfo = "Initializing textual inversion training..." @@ -244,7 +255,15 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, steps, image = processed.images[0] shared.state.current_image = image - image.save(last_saved_image) + + if save_image_with_stored_embedding: + info = PngImagePlugin.PngInfo() + info.add_text("sd-embedding", base64.b64encode(open(last_saved_file,'rb').read())) + image.save(last_saved_image, "PNG", pnginfo=info) + else: + image.save(last_saved_image) + + last_saved_image += f", prompt: {text}" From cd8673bd9b2e59bddefee8d307340d643695fe11 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Sun, 9 Oct 2022 05:40:57 +0100 Subject: [PATCH 02/61] add embed embedding to ui --- modules/ui.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/ui.py b/modules/ui.py index b51af1214..a59832041 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -1001,7 +1001,8 @@ def create_ui(wrap_gradio_gpu_call): steps = gr.Number(label='Max steps', value=100000, precision=0) create_image_every = gr.Number(label='Save an image to log directory every N steps, 0 to disable', value=500, precision=0) save_embedding_every = gr.Number(label='Save a copy of embedding to log directory every N steps, 0 to disable', value=500, precision=0) - + save_image_with_stored_embedding = gr.Checkbox(label='Save images with embedding in PNG chunks', value=True) + with gr.Row(): with gr.Column(scale=2): gr.HTML(value="") @@ -1063,6 +1064,7 @@ def create_ui(wrap_gradio_gpu_call): create_image_every, save_embedding_every, template_file, + save_image_with_stored_embedding, ], outputs=[ ti_output, From fa0c5eb81b72bc1e562d0b9bbd92f30945d78b4e Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Sun, 9 Oct 2022 20:41:22 +0100 Subject: [PATCH 03/61] Add pretty image captioning functions --- modules/images.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/modules/images.py b/modules/images.py index 29c5ee249..10963dc7f 100644 --- a/modules/images.py +++ b/modules/images.py @@ -428,3 +428,34 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i file.write(info + "\n") return fullfn + +def addCaptionLines(lines,image,initialx,textfont): + draw = ImageDraw.Draw(image) + hstart =initialx + for fill,line in lines: + fontSize = 32 + font = ImageFont.truetype(textfont, fontSize) + _,_,w, h = draw.textbbox((0,0),line,font=font) + fontSize = min( int(fontSize * ((image.size[0]-35)/w) ), 28) + font = ImageFont.truetype(textfont, fontSize) + _,_,w,h = draw.textbbox((0,0),line,font=font) + draw.text(((image.size[0]-w)/2,hstart), line, font=font, fill=fill) + hstart += h + return hstart + +def captionImge(image,prelines,postlines,background=(51, 51, 51),font=None): + if font is None: + try: + font = ImageFont.truetype(opts.font or Roboto, fontsize) + font = opts.font or Roboto + except Exception: + font = Roboto + + sampleImage = image + background = Image.new("RGBA", (sampleImage.size[0],sampleImage.size[1]+1024), background) + hoffset = addCaptionLines(prelines,background,5,font)+16 + background.paste(sampleImage,(0,hoffset)) + hoffset = hoffset+sampleImage.size[1]+8 + hoffset = addCaptionLines(postlines,background,hoffset,font) + background = background.crop((0,0,sampleImage.size[0],hoffset+8)) + return background From 03694e1f9915e34cf7d9a31073f1a1a9def2909f Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Sun, 9 Oct 2022 21:58:14 +0100 Subject: [PATCH 04/61] add embedding load and save from b64 json --- .../textual_inversion/textual_inversion.py | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index f63160208..1b7f89062 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -7,9 +7,11 @@ import tqdm import html import datetime -from PIL import Image, PngImagePlugin +from PIL import Image,PngImagePlugin +from ..images import captionImge +import numpy as np import base64 -from io import BytesIO +import json from modules import shared, devices, sd_hijack, processing, sd_models import modules.textual_inversion.dataset @@ -87,9 +89,9 @@ class EmbeddingDatabase: if filename.upper().endswith('.PNG'): embed_image = Image.open(path) - if 'sd-embedding' in embed_image.text: - embeddingData = base64.b64decode(embed_image.text['sd-embedding']) - data = torch.load(BytesIO(embeddingData), map_location="cpu") + if 'sd-ti-embedding' in embed_image.text: + data = embeddingFromB64(embed_image.text['sd-ti-embedding']) + name = data.get('name',name) else: data = torch.load(path, map_location="cpu") @@ -258,13 +260,23 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, steps, if save_image_with_stored_embedding: info = PngImagePlugin.PngInfo() - info.add_text("sd-embedding", base64.b64encode(open(last_saved_file,'rb').read())) - image.save(last_saved_image, "PNG", pnginfo=info) + data = torch.load(last_saved_file) + info.add_text("sd-ti-embedding", embeddingToB64(data)) + + pre_lines = [((255, 207, 175),"<{}>".format(data.get('name','???')))] + + caption_checkpoint_hash = data.get('sd_checkpoint','UNK') + caption_checkpoint_hash = caption_checkpoint_hash.upper() if caption_checkpoint_hash else 'UNK' + caption_stepcount = data.get('step',0) + caption_stepcount = caption_stepcount if caption_stepcount else 0 + + post_lines = [((240, 223, 175),"Trained against checkpoint [{}] for {} steps".format(caption_checkpoint_hash, + caption_stepcount))] + captioned_image = captionImge(image,prelines=pre_lines,postlines=post_lines) + captioned_image.save(last_saved_image, "PNG", pnginfo=info) else: image.save(last_saved_image) - - last_saved_image += f", prompt: {text}" shared.state.job_no = embedding.step From 969bd8256e5b4f1007d3cc653723d4ad50a92528 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Sun, 9 Oct 2022 22:02:28 +0100 Subject: [PATCH 05/61] add alternate checkpoint hash source --- modules/textual_inversion/textual_inversion.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 1b7f89062..d7813084a 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -265,8 +265,11 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, steps, pre_lines = [((255, 207, 175),"<{}>".format(data.get('name','???')))] - caption_checkpoint_hash = data.get('sd_checkpoint','UNK') - caption_checkpoint_hash = caption_checkpoint_hash.upper() if caption_checkpoint_hash else 'UNK' + caption_checkpoint_hash = data.get('sd_checkpoint') + if caption_checkpoint_hash is None: + caption_checkpoint_hash = data.get('hash') + caption_checkpoint_hash = caption_checkpoint_hash.upper() if caption_checkpoint_hash else 'UNKNOWN' + caption_stepcount = data.get('step',0) caption_stepcount = caption_stepcount if caption_stepcount else 0 From 5d12ec82d3e13f5ff4c55db2930e4e10aed7015a Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Sun, 9 Oct 2022 22:05:09 +0100 Subject: [PATCH 06/61] add encoder and decoder classes --- .../textual_inversion/textual_inversion.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index d7813084a..44d4e08bd 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -16,6 +16,27 @@ import json from modules import shared, devices, sd_hijack, processing, sd_models import modules.textual_inversion.dataset +class EmbeddingEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, torch.Tensor): + return {'EMBEDDINGTENSOR':obj.cpu().detach().numpy().tolist()} + return json.JSONEncoder.default(self, o) + +class EmbeddingDecoder(json.JSONDecoder): + def __init__(self, *args, **kwargs): + json.JSONDecoder.__init__(self, object_hook=self.object_hook, *args, **kwargs) + def object_hook(self, d): + if 'EMBEDDINGTENSOR' in d: + return torch.from_numpy(np.array(d['EMBEDDINGTENSOR'])) + return d + +def embeddingToB64(data): + d = json.dumps(data,cls=EmbeddingEncoder) + return base64.b64encode(d.encode()) + +def EmbeddingFromB64(data): + d = base64.b64decode(data) + return json.loads(d,cls=EmbeddingDecoder) class Embedding: def __init__(self, vec, name, step=None): From d0184b8f76ce492da699f1926f34b57cd095242e Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Sun, 9 Oct 2022 22:06:12 +0100 Subject: [PATCH 07/61] change json tensor key name --- modules/textual_inversion/textual_inversion.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 44d4e08bd..ae8d207d9 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -19,15 +19,15 @@ import modules.textual_inversion.dataset class EmbeddingEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, torch.Tensor): - return {'EMBEDDINGTENSOR':obj.cpu().detach().numpy().tolist()} + return {'TORCHTENSOR':obj.cpu().detach().numpy().tolist()} return json.JSONEncoder.default(self, o) class EmbeddingDecoder(json.JSONDecoder): def __init__(self, *args, **kwargs): json.JSONDecoder.__init__(self, object_hook=self.object_hook, *args, **kwargs) def object_hook(self, d): - if 'EMBEDDINGTENSOR' in d: - return torch.from_numpy(np.array(d['EMBEDDINGTENSOR'])) + if 'TORCHTENSOR' in d: + return torch.from_numpy(np.array(d['TORCHTENSOR'])) return d def embeddingToB64(data): From 66846105103cfc282434d0dc2102910160b7a633 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Sun, 9 Oct 2022 22:06:42 +0100 Subject: [PATCH 08/61] correct case on embeddingFromB64 --- modules/textual_inversion/textual_inversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index ae8d207d9..d2b95fa3b 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -34,7 +34,7 @@ def embeddingToB64(data): d = json.dumps(data,cls=EmbeddingEncoder) return base64.b64encode(d.encode()) -def EmbeddingFromB64(data): +def embeddingFromB64(data): d = base64.b64decode(data) return json.loads(d,cls=EmbeddingDecoder) From 96f1e6be59316ec640cab2435fa95b3688194906 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Sun, 9 Oct 2022 22:14:50 +0100 Subject: [PATCH 09/61] source checkpoint hash from current checkpoint --- modules/textual_inversion/textual_inversion.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index d2b95fa3b..b16fa84ec 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -286,10 +286,8 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, steps, pre_lines = [((255, 207, 175),"<{}>".format(data.get('name','???')))] - caption_checkpoint_hash = data.get('sd_checkpoint') - if caption_checkpoint_hash is None: - caption_checkpoint_hash = data.get('hash') - caption_checkpoint_hash = caption_checkpoint_hash.upper() if caption_checkpoint_hash else 'UNKNOWN' + checkpoint = sd_models.select_checkpoint() + caption_checkpoint_hash = checkpoint.hash caption_stepcount = data.get('step',0) caption_stepcount = caption_stepcount if caption_stepcount else 0 From 01fd9cf0d28d8b71a113ab1aa62accfe7f0d9c51 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Sun, 9 Oct 2022 22:17:02 +0100 Subject: [PATCH 10/61] change source of step count --- modules/textual_inversion/textual_inversion.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index b16fa84ec..e4f339b86 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -285,15 +285,9 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, steps, info.add_text("sd-ti-embedding", embeddingToB64(data)) pre_lines = [((255, 207, 175),"<{}>".format(data.get('name','???')))] - checkpoint = sd_models.select_checkpoint() - caption_checkpoint_hash = checkpoint.hash - - caption_stepcount = data.get('step',0) - caption_stepcount = caption_stepcount if caption_stepcount else 0 - - post_lines = [((240, 223, 175),"Trained against checkpoint [{}] for {} steps".format(caption_checkpoint_hash, - caption_stepcount))] + post_lines = [((240, 223, 175),"Trained against checkpoint [{}] for {} steps".format(checkpoint.hash, + embedding.step))] captioned_image = captionImge(image,prelines=pre_lines,postlines=post_lines) captioned_image.save(last_saved_image, "PNG", pnginfo=info) else: From 0ac3a07eecbd7b98f3a19d01dc46f02dcda3443b Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Mon, 10 Oct 2022 00:05:36 +0100 Subject: [PATCH 11/61] add caption image with overlay --- modules/images.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/modules/images.py b/modules/images.py index 10963dc7f..4a4fc9774 100644 --- a/modules/images.py +++ b/modules/images.py @@ -459,3 +459,49 @@ def captionImge(image,prelines,postlines,background=(51, 51, 51),font=None): hoffset = addCaptionLines(postlines,background,hoffset,font) background = background.crop((0,0,sampleImage.size[0],hoffset+8)) return background + +def captionImageOverlay(srcimage,title,footerLeft,footerMid,footerRight,textfont=None): + from math import cos + + image = srcimage.copy() + + if textfont is None: + try: + textfont = ImageFont.truetype(opts.font or Roboto, fontsize) + textfont = opts.font or Roboto + except Exception: + textfont = Roboto + + factor = 1.5 + gradient = Image.new('RGBA', (1,image.size[1]), color=(0,0,0,0)) + for y in range(image.size[1]): + mag = 1-cos(y/image.size[1]*factor) + mag = max(mag,1-cos((image.size[1]-y)/image.size[1]*factor*1.1)) + gradient.putpixel((0, y), (0,0,0,int(mag*255))) + image = Image.alpha_composite(image.convert('RGBA'), gradient.resize(image.size)) + + draw = ImageDraw.Draw(image) + fontSize = 32 + font = ImageFont.truetype(textfont, fontSize) + padding = 10 + + _,_,w, h = draw.textbbox((0,0),title,font=font) + fontSize = min( int(fontSize * (((image.size[0]*0.75)-(padding*4))/w) ), 72) + font = ImageFont.truetype(textfont, fontSize) + _,_,w,h = draw.textbbox((0,0),title,font=font) + draw.text((padding,padding), title, anchor='lt', font=font, fill=(255,255,255,230)) + + _,_,w, h = draw.textbbox((0,0),footerLeft,font=font) + fontSizeleft = min( int(fontSize * (((image.size[0]/3)-(padding))/w) ), 72) + _,_,w, h = draw.textbbox((0,0),footerMid,font=font) + fontSizemid = min( int(fontSize * (((image.size[0]/3)-(padding))/w) ), 72) + _,_,w, h = draw.textbbox((0,0),footerRight,font=font) + fontSizeright = min( int(fontSize * (((image.size[0]/3)-(padding))/w) ), 72) + + font = ImageFont.truetype(textfont, min(fontSizeleft,fontSizemid,fontSizeright)) + + draw.text((padding,image.size[1]-padding), footerLeft, anchor='ls', font=font, fill=(255,255,255,230)) + draw.text((image.size[0]/2,image.size[1]-padding), footerMid, anchor='ms', font=font, fill=(255,255,255,230)) + draw.text((image.size[0]-padding,image.size[1]-padding), footerRight, anchor='rs', font=font, fill=(255,255,255,230)) + + return image From d6a599ef9ba18a66ae79b50f2945af5788fdda8f Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Mon, 10 Oct 2022 00:07:52 +0100 Subject: [PATCH 12/61] change caption method --- .../textual_inversion/textual_inversion.py | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index e4f339b86..21596e784 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -8,7 +8,7 @@ import html import datetime from PIL import Image,PngImagePlugin -from ..images import captionImge +from ..images import captionImageOverlay import numpy as np import base64 import json @@ -212,6 +212,12 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, steps, else: images_dir = None + if create_image_every > 0 and save_image_with_stored_embedding: + images_embeds_dir = os.path.join(log_directory, "image_embeddings") + os.makedirs(images_embeds_dir, exist_ok=True) + else: + images_embeds_dir = None + cond_model = shared.sd_model.cond_stage_model shared.state.textinfo = f"Preparing dataset from {html.escape(data_root)}..." @@ -279,19 +285,25 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, steps, shared.state.current_image = image - if save_image_with_stored_embedding: + if save_image_with_stored_embedding and os.path.exists(last_saved_file): + + last_saved_image_chunks = os.path.join(images_embeds_dir, f'{embedding_name}-{embedding.step}.png') + info = PngImagePlugin.PngInfo() data = torch.load(last_saved_file) info.add_text("sd-ti-embedding", embeddingToB64(data)) - pre_lines = [((255, 207, 175),"<{}>".format(data.get('name','???')))] + title = "<{}>".format(data.get('name','???')) checkpoint = sd_models.select_checkpoint() - post_lines = [((240, 223, 175),"Trained against checkpoint [{}] for {} steps".format(checkpoint.hash, - embedding.step))] - captioned_image = captionImge(image,prelines=pre_lines,postlines=post_lines) - captioned_image.save(last_saved_image, "PNG", pnginfo=info) - else: - image.save(last_saved_image) + footer_left = checkpoint.model_name + footer_mid = '[{}]'.format(checkpoint.hash) + footer_right = '[{}]'.format(embedding.step) + + captioned_image = captionImageOverlay(image,title,footer_left,footer_mid,footer_right) + + captioned_image.save(last_saved_image_chunks, "PNG", pnginfo=info) + + image.save(last_saved_image) last_saved_image += f", prompt: {text}" From e2c2925eb4d634b186de2c76798162ec56e2f869 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Mon, 10 Oct 2022 00:12:53 +0100 Subject: [PATCH 13/61] remove braces from steps --- modules/textual_inversion/textual_inversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 21596e784..9a18ee5c8 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -297,7 +297,7 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, steps, checkpoint = sd_models.select_checkpoint() footer_left = checkpoint.model_name footer_mid = '[{}]'.format(checkpoint.hash) - footer_right = '[{}]'.format(embedding.step) + footer_right = '{}'.format(embedding.step) captioned_image = captionImageOverlay(image,title,footer_left,footer_mid,footer_right) From 6435691bb11c5a35703720bfd2a875f24c066f86 Mon Sep 17 00:00:00 2001 From: Justin Maier Date: Sun, 9 Oct 2022 19:26:52 -0600 Subject: [PATCH 14/61] Add "Scale to" option to Extras --- javascript/ui.js | 3 ++- modules/extras.py | 28 +++++++++++++++++++++++----- modules/ui.py | 38 +++++++++++++++++++++++++------------- 3 files changed, 50 insertions(+), 19 deletions(-) diff --git a/javascript/ui.js b/javascript/ui.js index b1053201c..4100944e6 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -101,7 +101,8 @@ function create_tab_index_args(tabId, args){ } function get_extras_tab_index(){ - return create_tab_index_args('mode_extras', arguments) + const [,,...args] = [...arguments] + return [get_tab_index('mode_extras'), get_tab_index('extras_resize_mode'), ...args] } function create_submit_args(args){ diff --git a/modules/extras.py b/modules/extras.py index 41e8612c7..83ca70492 100644 --- a/modules/extras.py +++ b/modules/extras.py @@ -1,3 +1,4 @@ +import math import os import numpy as np @@ -19,7 +20,7 @@ import gradio as gr cached_images = {} -def run_extras(extras_mode, image, image_folder, gfpgan_visibility, codeformer_visibility, codeformer_weight, upscaling_resize, extras_upscaler_1, extras_upscaler_2, extras_upscaler_2_visibility): +def run_extras(extras_mode, resize_mode, image, image_folder, gfpgan_visibility, codeformer_visibility, codeformer_weight, upscaling_resize, upscaling_resize_w, upscaling_resize_h, upscaling_crop, extras_upscaler_1, extras_upscaler_2, extras_upscaler_2_visibility): devices.torch_gc() imageArr = [] @@ -67,8 +68,23 @@ def run_extras(extras_mode, image, image_folder, gfpgan_visibility, codeformer_v info += f"CodeFormer w: {round(codeformer_weight, 2)}, CodeFormer visibility:{round(codeformer_visibility, 2)}\n" image = res + if resize_mode == 1: + upscaling_resize = max(upscaling_resize_w/image.width, upscaling_resize_h/image.height) + crop_info = " (crop)" if upscaling_crop else "" + info += f"Resize to: {upscaling_resize_w:g}x{upscaling_resize_h:g}{crop_info}\n" + + def crop_upscaled_center(image, resize_w, resize_h): + left = int(math.ceil((image.width - resize_w) / 2)) + right = image.width - int(math.floor((image.width - resize_w) / 2)) + top = int(math.ceil((image.height - resize_h) / 2)) + bottom = image.height - int(math.floor((image.height - resize_h) / 2)) + + image = image.crop((left, top, right, bottom)) + return image + + if upscaling_resize != 1.0: - def upscale(image, scaler_index, resize): + def upscale(image, scaler_index, resize, mode, resize_w, resize_h, crop): small = image.crop((image.width // 2, image.height // 2, image.width // 2 + 10, image.height // 2 + 10)) pixels = tuple(np.array(small).flatten().tolist()) key = (resize, scaler_index, image.width, image.height, gfpgan_visibility, codeformer_visibility, codeformer_weight) + pixels @@ -77,15 +93,17 @@ def run_extras(extras_mode, image, image_folder, gfpgan_visibility, codeformer_v if c is None: upscaler = shared.sd_upscalers[scaler_index] c = upscaler.scaler.upscale(image, resize, upscaler.data_path) + if mode == 1 and crop: + c = crop_upscaled_center(c, resize_w, resize_h) cached_images[key] = c return c info += f"Upscale: {round(upscaling_resize, 3)}, model:{shared.sd_upscalers[extras_upscaler_1].name}\n" - res = upscale(image, extras_upscaler_1, upscaling_resize) + res = upscale(image, extras_upscaler_1, upscaling_resize, resize_mode, upscaling_resize_w, upscaling_resize_h, upscaling_crop) if extras_upscaler_2 != 0 and extras_upscaler_2_visibility > 0: - res2 = upscale(image, extras_upscaler_2, upscaling_resize) + res2 = upscale(image, extras_upscaler_2, upscaling_resize, resize_mode, upscaling_resize_w, upscaling_resize_h, upscaling_crop) info += f"Upscale: {round(upscaling_resize, 3)}, visibility: {round(extras_upscaler_2_visibility, 3)}, model:{shared.sd_upscalers[extras_upscaler_2].name}\n" res = Image.blend(res, res2, extras_upscaler_2_visibility) @@ -190,7 +208,7 @@ def run_modelmerger(primary_model_name, secondary_model_name, interp_method, int theta_0[key] = theta_func(theta_0[key], theta_1[key], (float(1.0) - interp_amount)) # Need to reverse the interp_amount to match the desired mix ration in the merged checkpoint if save_as_half: theta_0[key] = theta_0[key].half() - + for key in theta_1.keys(): if 'model' in key and key not in theta_0: theta_0[key] = theta_1[key] diff --git a/modules/ui.py b/modules/ui.py index 2231a8ed8..4bb2892b7 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -101,7 +101,7 @@ def send_gradio_gallery_to_image(x): def save_files(js_data, images, do_make_zip, index): - import csv + import csv filenames = [] fullfns = [] @@ -551,7 +551,7 @@ def create_ui(wrap_gradio_gpu_call): with gr.Row(): do_make_zip = gr.Checkbox(label="Make Zip when Save?", value=False) - + with gr.Row(): download_files = gr.File(None, file_count="multiple", interactive=False, show_label=False, visible=False) @@ -739,7 +739,7 @@ def create_ui(wrap_gradio_gpu_call): with gr.Row(): do_make_zip = gr.Checkbox(label="Make Zip when Save?", value=False) - + with gr.Row(): download_files = gr.File(None, file_count="multiple", interactive=False, show_label=False, visible=False) @@ -903,7 +903,15 @@ def create_ui(wrap_gradio_gpu_call): with gr.TabItem('Batch Process'): image_batch = gr.File(label="Batch Process", file_count="multiple", interactive=True, type="file") - upscaling_resize = gr.Slider(minimum=1.0, maximum=4.0, step=0.05, label="Resize", value=2) + with gr.Tabs(elem_id="extras_resize_mode"): + with gr.TabItem('Scale by'): + upscaling_resize = gr.Slider(minimum=1.0, maximum=4.0, step=0.05, label="Resize", value=2) + with gr.TabItem('Scale to'): + with gr.Group(): + with gr.Row(): + upscaling_resize_w = gr.Number(label="Width", value=512) + upscaling_resize_h = gr.Number(label="Height", value=512) + upscaling_crop = gr.Checkbox(label='Crop to fit', value=True) with gr.Group(): extras_upscaler_1 = gr.Radio(label='Upscaler 1', choices=[x.name for x in shared.sd_upscalers], value=shared.sd_upscalers[0].name, type="index") @@ -934,6 +942,7 @@ def create_ui(wrap_gradio_gpu_call): fn=wrap_gradio_gpu_call(modules.extras.run_extras), _js="get_extras_tab_index", inputs=[ + dummy_component, dummy_component, extras_image, image_batch, @@ -941,6 +950,9 @@ def create_ui(wrap_gradio_gpu_call): codeformer_visibility, codeformer_weight, upscaling_resize, + upscaling_resize_w, + upscaling_resize_h, + upscaling_crop, extras_upscaler_1, extras_upscaler_2, extras_upscaler_2_visibility, @@ -951,14 +963,14 @@ def create_ui(wrap_gradio_gpu_call): html_info, ] ) - + extras_send_to_img2img.click( fn=lambda x: image_from_url_text(x), _js="extract_image_from_gallery_img2img", inputs=[result_images], outputs=[init_img], ) - + extras_send_to_inpaint.click( fn=lambda x: image_from_url_text(x), _js="extract_image_from_gallery_img2img", @@ -1286,7 +1298,7 @@ Requested path was: {f} outputs=[], _js='function(){restart_reload()}' ) - + if column is not None: column.__exit__() @@ -1318,12 +1330,12 @@ Requested path was: {f} component_dict[k] = component settings_interface.gradio_ref = demo - + with gr.Tabs() as tabs: for interface, label, ifid in interfaces: with gr.TabItem(label, id=ifid): interface.render() - + if os.path.exists(os.path.join(script_path, "notification.mp3")): audio_notification = gr.Audio(interactive=False, value=os.path.join(script_path, "notification.mp3"), elem_id="audio_notification", visible=False) @@ -1456,10 +1468,10 @@ Requested path was: {f} if getattr(obj,'custom_script_source',None) is not None: key = 'customscript/' + obj.custom_script_source + '/' + key - + if getattr(obj, 'do_not_save_to_config', False): return - + saved_value = ui_settings.get(key, None) if saved_value is None: ui_settings[key] = getattr(obj, field) @@ -1483,10 +1495,10 @@ Requested path was: {f} if type(x) == gr.Textbox: apply_field(x, 'value') - + if type(x) == gr.Number: apply_field(x, 'value') - + visit(txt2img_interface, loadsave, "txt2img") visit(img2img_interface, loadsave, "img2img") visit(extras_interface, loadsave, "extras") From 1f92336be768d235c18a82acb2195b7135101ae7 Mon Sep 17 00:00:00 2001 From: JC_Array Date: Sun, 9 Oct 2022 23:58:18 -0500 Subject: [PATCH 15/61] refactored the deepbooru module to improve speed on running multiple interogations in a row. Added the option to generate deepbooru tags for textual inversion preproccessing. --- modules/deepbooru.py | 84 +++++++++++++++++++------ modules/textual_inversion/preprocess.py | 22 ++++++- modules/ui.py | 52 ++++++++++----- 3 files changed, 122 insertions(+), 36 deletions(-) diff --git a/modules/deepbooru.py b/modules/deepbooru.py index 7e3c06182..cee4a3b4a 100644 --- a/modules/deepbooru.py +++ b/modules/deepbooru.py @@ -1,21 +1,74 @@ import os.path from concurrent.futures import ProcessPoolExecutor -from multiprocessing import get_context +import multiprocessing -def _load_tf_and_return_tags(pil_image, threshold): +def get_deepbooru_tags(pil_image, threshold=0.5): + """ + This method is for running only one image at a time for simple use. Used to the img2img interrogate. + """ + from modules import shared # prevents circular reference + create_deepbooru_process(threshold) + shared.deepbooru_process_return["value"] = -1 + shared.deepbooru_process_queue.put(pil_image) + while shared.deepbooru_process_return["value"] == -1: + time.sleep(0.2) + release_process() + return ret + + +def deepbooru_process(queue, deepbooru_process_return, threshold): + model, tags = get_deepbooru_tags_model() + while True: # while process is running, keep monitoring queue for new image + pil_image = queue.get() + if pil_image == "QUIT": + break + else: + deepbooru_process_return["value"] = get_deepbooru_tags_from_model(model, tags, pil_image, threshold) + + +def create_deepbooru_process(threshold=0.5): + """ + Creates deepbooru process. A queue is created to send images into the process. This enables multiple images + to be processed in a row without reloading the model or creating a new process. To return the data, a shared + dictionary is created to hold the tags created. To wait for tags to be returned, a value of -1 is assigned + to the dictionary and the method adding the image to the queue should wait for this value to be updated with + the tags. + """ + from modules import shared # prevents circular reference + shared.deepbooru_process_manager = multiprocessing.Manager() + shared.deepbooru_process_queue = shared.deepbooru_process_manager.Queue() + shared.deepbooru_process_return = shared.deepbooru_process_manager.dict() + shared.deepbooru_process_return["value"] = -1 + shared.deepbooru_process = multiprocessing.Process(target=deepbooru_process, args=(shared.deepbooru_process_queue, shared.deepbooru_process_return, threshold)) + shared.deepbooru_process.start() + + +def release_process(): + """ + Stops the deepbooru process to return used memory + """ + from modules import shared # prevents circular reference + shared.deepbooru_process_queue.put("QUIT") + shared.deepbooru_process.join() + shared.deepbooru_process_queue = None + shared.deepbooru_process = None + shared.deepbooru_process_return = None + shared.deepbooru_process_manager = None + +def get_deepbooru_tags_model(): import deepdanbooru as dd import tensorflow as tf import numpy as np - this_folder = os.path.dirname(__file__) model_path = os.path.abspath(os.path.join(this_folder, '..', 'models', 'deepbooru')) if not os.path.exists(os.path.join(model_path, 'project.json')): # there is no point importing these every time import zipfile from basicsr.utils.download_util import load_file_from_url - load_file_from_url(r"https://github.com/KichangKim/DeepDanbooru/releases/download/v3-20211112-sgd-e28/deepdanbooru-v3-20211112-sgd-e28.zip", - model_path) + load_file_from_url( + r"https://github.com/KichangKim/DeepDanbooru/releases/download/v3-20211112-sgd-e28/deepdanbooru-v3-20211112-sgd-e28.zip", + model_path) with zipfile.ZipFile(os.path.join(model_path, "deepdanbooru-v3-20211112-sgd-e28.zip"), "r") as zip_ref: zip_ref.extractall(model_path) os.remove(os.path.join(model_path, "deepdanbooru-v3-20211112-sgd-e28.zip")) @@ -24,7 +77,13 @@ def _load_tf_and_return_tags(pil_image, threshold): model = dd.project.load_model_from_project( model_path, compile_model=True ) + return model, tags + +def get_deepbooru_tags_from_model(model, tags, pil_image, threshold=0.5): + import deepdanbooru as dd + import tensorflow as tf + import numpy as np width = model.input_shape[2] height = model.input_shape[1] image = np.array(pil_image) @@ -57,17 +116,4 @@ def _load_tf_and_return_tags(pil_image, threshold): print('\n'.join(sorted(result_tags_print, reverse=True))) - return ', '.join(result_tags_out).replace('_', ' ').replace(':', ' ') - - -def subprocess_init_no_cuda(): - import os - os.environ["CUDA_VISIBLE_DEVICES"] = "-1" - - -def get_deepbooru_tags(pil_image, threshold=0.5): - context = get_context('spawn') - with ProcessPoolExecutor(initializer=subprocess_init_no_cuda, mp_context=context) as executor: - f = executor.submit(_load_tf_and_return_tags, pil_image, threshold, ) - ret = f.result() # will rethrow any exceptions - return ret \ No newline at end of file + return ', '.join(result_tags_out).replace('_', ' ').replace(':', ' ') \ No newline at end of file diff --git a/modules/textual_inversion/preprocess.py b/modules/textual_inversion/preprocess.py index f1c002a2b..9f63c9a4f 100644 --- a/modules/textual_inversion/preprocess.py +++ b/modules/textual_inversion/preprocess.py @@ -3,11 +3,14 @@ from PIL import Image, ImageOps import platform import sys import tqdm +import time from modules import shared, images +from modules.shared import opts, cmd_opts +if cmd_opts.deepdanbooru: + import modules.deepbooru as deepbooru - -def preprocess(process_src, process_dst, process_flip, process_split, process_caption): +def preprocess(process_src, process_dst, process_flip, process_split, process_caption, process_caption_deepbooru=False): size = 512 src = os.path.abspath(process_src) dst = os.path.abspath(process_dst) @@ -24,10 +27,21 @@ def preprocess(process_src, process_dst, process_flip, process_split, process_ca if process_caption: shared.interrogator.load() + if process_caption_deepbooru: + deepbooru.create_deepbooru_process() + def save_pic_with_caption(image, index): if process_caption: caption = "-" + shared.interrogator.generate_caption(image) caption = sanitize_caption(os.path.join(dst, f"{index:05}-{subindex[0]}"), caption, ".png") + elif process_caption_deepbooru: + shared.deepbooru_process_return["value"] = -1 + shared.deepbooru_process_queue.put(image) + while shared.deepbooru_process_return["value"] == -1: + time.sleep(0.2) + caption = "-" + shared.deepbooru_process_return["value"] + caption = sanitize_caption(os.path.join(dst, f"{index:05}-{subindex[0]}"), caption, ".png") + shared.deepbooru_process_return["value"] = -1 else: caption = filename caption = os.path.splitext(caption)[0] @@ -79,6 +93,10 @@ def preprocess(process_src, process_dst, process_flip, process_split, process_ca if process_caption: shared.interrogator.send_blip_to_ram() + if process_caption_deepbooru: + deepbooru.release_process() + + def sanitize_caption(base_path, original_caption, suffix): operating_system = platform.system().lower() if (operating_system == "windows"): diff --git a/modules/ui.py b/modules/ui.py index 2231a8ed8..179e3a83e 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -1034,6 +1034,9 @@ def create_ui(wrap_gradio_gpu_call): process_flip = gr.Checkbox(label='Create flipped copies') process_split = gr.Checkbox(label='Split oversized images into two') process_caption = gr.Checkbox(label='Use BLIP caption as filename') + if cmd_opts.deepdanbooru: + process_caption_deepbooru = gr.Checkbox(label='Use deepbooru caption as filename') + with gr.Row(): with gr.Column(scale=3): @@ -1086,21 +1089,40 @@ def create_ui(wrap_gradio_gpu_call): ] ) - run_preprocess.click( - fn=wrap_gradio_gpu_call(modules.textual_inversion.ui.preprocess, extra_outputs=[gr.update()]), - _js="start_training_textual_inversion", - inputs=[ - process_src, - process_dst, - process_flip, - process_split, - process_caption, - ], - outputs=[ - ti_output, - ti_outcome, - ], - ) + if cmd_opts.deepdanbooru: + # if process_caption_deepbooru is None, it will cause an error, as a result only include it if it is enabled + run_preprocess.click( + fn=wrap_gradio_gpu_call(modules.textual_inversion.ui.preprocess, extra_outputs=[gr.update()]), + _js="start_training_textual_inversion", + inputs=[ + process_src, + process_dst, + process_flip, + process_split, + process_caption, + process_caption_deepbooru, + ], + outputs=[ + ti_output, + ti_outcome, + ], + ) + else: + run_preprocess.click( + fn=wrap_gradio_gpu_call(modules.textual_inversion.ui.preprocess, extra_outputs=[gr.update()]), + _js="start_training_textual_inversion", + inputs=[ + process_src, + process_dst, + process_flip, + process_split, + process_caption, + ], + outputs=[ + ti_output, + ti_outcome, + ], + ) train_embedding.click( fn=wrap_gradio_gpu_call(modules.textual_inversion.ui.train_embedding, extra_outputs=[gr.update()]), From 8ec069e64df48f8f202f8b93a08e91b69448eb39 Mon Sep 17 00:00:00 2001 From: JC_Array Date: Mon, 10 Oct 2022 03:23:24 -0500 Subject: [PATCH 16/61] removed duplicate run_preprocess.click by creating run_preprocess_inputs list and appending deepbooru variable to input list if in scope --- modules/ui.py | 49 +++++++++++++++++-------------------------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/modules/ui.py b/modules/ui.py index 179e3a83e..22ca74c2c 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -1089,40 +1089,25 @@ def create_ui(wrap_gradio_gpu_call): ] ) + run_preprocess_inputs = [ + process_src, + process_dst, + process_flip, + process_split, + process_caption, + ] if cmd_opts.deepdanbooru: # if process_caption_deepbooru is None, it will cause an error, as a result only include it if it is enabled - run_preprocess.click( - fn=wrap_gradio_gpu_call(modules.textual_inversion.ui.preprocess, extra_outputs=[gr.update()]), - _js="start_training_textual_inversion", - inputs=[ - process_src, - process_dst, - process_flip, - process_split, - process_caption, - process_caption_deepbooru, - ], - outputs=[ - ti_output, - ti_outcome, - ], - ) - else: - run_preprocess.click( - fn=wrap_gradio_gpu_call(modules.textual_inversion.ui.preprocess, extra_outputs=[gr.update()]), - _js="start_training_textual_inversion", - inputs=[ - process_src, - process_dst, - process_flip, - process_split, - process_caption, - ], - outputs=[ - ti_output, - ti_outcome, - ], - ) + run_preprocess_inputs.append(process_caption_deepbooru) + run_preprocess.click( + fn=wrap_gradio_gpu_call(modules.textual_inversion.ui.preprocess, extra_outputs=[gr.update()]), + _js="start_training_textual_inversion", + inputs=run_preprocess_inputs, + outputs=[ + ti_output, + ti_outcome, + ], + ) train_embedding.click( fn=wrap_gradio_gpu_call(modules.textual_inversion.ui.train_embedding, extra_outputs=[gr.update()]), From 2f94331df2cb1181439adecc28cfd758049f6501 Mon Sep 17 00:00:00 2001 From: JC_Array Date: Mon, 10 Oct 2022 03:34:00 -0500 Subject: [PATCH 17/61] removed change in last commit, simplified to adding the visible argument to process_caption_deepbooru and it set to False if deepdanbooru argument is not set --- modules/ui.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/modules/ui.py b/modules/ui.py index 22ca74c2c..f8adafb38 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -1036,7 +1036,8 @@ def create_ui(wrap_gradio_gpu_call): process_caption = gr.Checkbox(label='Use BLIP caption as filename') if cmd_opts.deepdanbooru: process_caption_deepbooru = gr.Checkbox(label='Use deepbooru caption as filename') - + else: + process_caption_deepbooru = gr.Checkbox(label='Use deepbooru caption as filename', visible=False) with gr.Row(): with gr.Column(scale=3): @@ -1089,20 +1090,17 @@ def create_ui(wrap_gradio_gpu_call): ] ) - run_preprocess_inputs = [ - process_src, - process_dst, - process_flip, - process_split, - process_caption, - ] - if cmd_opts.deepdanbooru: - # if process_caption_deepbooru is None, it will cause an error, as a result only include it if it is enabled - run_preprocess_inputs.append(process_caption_deepbooru) run_preprocess.click( fn=wrap_gradio_gpu_call(modules.textual_inversion.ui.preprocess, extra_outputs=[gr.update()]), _js="start_training_textual_inversion", - inputs=run_preprocess_inputs, + inputs=[ + process_src, + process_dst, + process_flip, + process_split, + process_caption, + process_caption_deepbooru + ], outputs=[ ti_output, ti_outcome, From 707a431100362645e914042bb344d08439f48ac8 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Mon, 10 Oct 2022 15:34:49 +0100 Subject: [PATCH 18/61] add pixel data footer --- .../textual_inversion/textual_inversion.py | 48 ++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 7a24192e4..6fb64691c 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -12,6 +12,7 @@ from ..images import captionImageOverlay import numpy as np import base64 import json +import zlib from modules import shared, devices, sd_hijack, processing, sd_models import modules.textual_inversion.dataset @@ -20,7 +21,7 @@ class EmbeddingEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, torch.Tensor): return {'TORCHTENSOR':obj.cpu().detach().numpy().tolist()} - return json.JSONEncoder.default(self, o) + return json.JSONEncoder.default(self, obj) class EmbeddingDecoder(json.JSONDecoder): def __init__(self, *args, **kwargs): @@ -38,6 +39,45 @@ def embeddingFromB64(data): d = base64.b64decode(data) return json.loads(d,cls=EmbeddingDecoder) +def appendImageDataFooter(image,data): + d = 3 + data_compressed = zlib.compress( json.dumps(data,cls=EmbeddingEncoder).encode(),level=9) + dnp = np.frombuffer(data_compressed,np.uint8).copy() + w = image.size[0] + next_size = dnp.shape[0] + (w-(dnp.shape[0]%w)) + next_size = next_size + ((w*d)-(next_size%(w*d))) + dnp.resize(next_size) + dnp = dnp.reshape((-1,w,d)) + print(dnp.shape) + im = Image.fromarray(dnp,mode='RGB') + background = Image.new('RGB',(image.size[0],image.size[1]+im.size[1]+1),(0,0,0)) + background.paste(image,(0,0)) + background.paste(im,(0,image.size[1]+1)) + return background + +def crop_black(img,tol=0): + mask = (img>tol).all(2) + mask0,mask1 = mask.any(0),mask.any(1) + col_start,col_end = mask0.argmax(),mask.shape[1]-mask0[::-1].argmax() + row_start,row_end = mask1.argmax(),mask.shape[0]-mask1[::-1].argmax() + return img[row_start:row_end,col_start:col_end] + +def extractImageDataFooter(image): + d=3 + outarr = crop_black(np.array(image.getdata()).reshape(image.size[1],image.size[0],d ).astype(np.uint8) ) + lastRow = np.where( np.sum(outarr, axis=(1,2))==0) + if lastRow[0].shape[0] == 0: + print('Image data block not found.') + return None + lastRow = lastRow[0] + + lastRow = lastRow.max() + + dataBlock = outarr[lastRow+1::].astype(np.uint8).flatten().tobytes() + print(lastRow) + data = zlib.decompress(dataBlock) + return json.loads(data,cls=EmbeddingDecoder) + class Embedding: def __init__(self, vec, name, step=None): self.vec = vec @@ -113,6 +153,9 @@ class EmbeddingDatabase: if 'sd-ti-embedding' in embed_image.text: data = embeddingFromB64(embed_image.text['sd-ti-embedding']) name = data.get('name',name) + else: + data = extractImageDataFooter(embed_image) + name = data.get('name',name) else: data = torch.load(path, map_location="cpu") @@ -190,7 +233,7 @@ def create_embedding(name, num_vectors_per_token, init_text='*'): return fn -def train_embedding(embedding_name, learn_rate, data_root, log_directory, training_width, training_height, steps, num_repeats, create_image_every, save_embedding_every, template_file): +def train_embedding(embedding_name, learn_rate, data_root, log_directory, training_width, training_height, steps, num_repeats, create_image_every, save_embedding_every, template_file, save_image_with_stored_embedding): assert embedding_name, 'embedding not selected' shared.state.textinfo = "Initializing textual inversion training..." @@ -308,6 +351,7 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, traini footer_right = '{}'.format(embedding.step) captioned_image = captionImageOverlay(image,title,footer_left,footer_mid,footer_right) + captioned_image = appendImageDataFooter(captioned_image,data) captioned_image.save(last_saved_image_chunks, "PNG", pnginfo=info) From df6d0d9286279c41c4c67460c3158fa268697524 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Mon, 10 Oct 2022 15:43:09 +0100 Subject: [PATCH 19/61] convert back to rgb as some hosts add alpha --- modules/textual_inversion/textual_inversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 6fb64691c..667a7cf2b 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -64,7 +64,7 @@ def crop_black(img,tol=0): def extractImageDataFooter(image): d=3 - outarr = crop_black(np.array(image.getdata()).reshape(image.size[1],image.size[0],d ).astype(np.uint8) ) + outarr = crop_black(np.array(image.convert('RGB').getdata()).reshape(image.size[1],image.size[0],d ).astype(np.uint8) ) lastRow = np.where( np.sum(outarr, axis=(1,2))==0) if lastRow[0].shape[0] == 0: print('Image data block not found.') From 1d64976dbc5a0f3124567b91fadd5014a9d93c5f Mon Sep 17 00:00:00 2001 From: Justin Maier Date: Mon, 10 Oct 2022 12:04:21 -0600 Subject: [PATCH 20/61] Simplify crop logic --- modules/extras.py | 14 +++----------- modules/ui.py | 4 ++-- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/modules/extras.py b/modules/extras.py index 83ca70492..b24d7de3f 100644 --- a/modules/extras.py +++ b/modules/extras.py @@ -73,16 +73,6 @@ def run_extras(extras_mode, resize_mode, image, image_folder, gfpgan_visibility, crop_info = " (crop)" if upscaling_crop else "" info += f"Resize to: {upscaling_resize_w:g}x{upscaling_resize_h:g}{crop_info}\n" - def crop_upscaled_center(image, resize_w, resize_h): - left = int(math.ceil((image.width - resize_w) / 2)) - right = image.width - int(math.floor((image.width - resize_w) / 2)) - top = int(math.ceil((image.height - resize_h) / 2)) - bottom = image.height - int(math.floor((image.height - resize_h) / 2)) - - image = image.crop((left, top, right, bottom)) - return image - - if upscaling_resize != 1.0: def upscale(image, scaler_index, resize, mode, resize_w, resize_h, crop): small = image.crop((image.width // 2, image.height // 2, image.width // 2 + 10, image.height // 2 + 10)) @@ -94,7 +84,9 @@ def run_extras(extras_mode, resize_mode, image, image_folder, gfpgan_visibility, upscaler = shared.sd_upscalers[scaler_index] c = upscaler.scaler.upscale(image, resize, upscaler.data_path) if mode == 1 and crop: - c = crop_upscaled_center(c, resize_w, resize_h) + cropped = Image.new("RGB", (resize_w, resize_h)) + cropped.paste(c, box=(resize_w // 2 - c.width // 2, resize_h // 2 - c.height // 2)) + c = cropped cached_images[key] = c return c diff --git a/modules/ui.py b/modules/ui.py index 4bb2892b7..1aabe18db 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -909,8 +909,8 @@ def create_ui(wrap_gradio_gpu_call): with gr.TabItem('Scale to'): with gr.Group(): with gr.Row(): - upscaling_resize_w = gr.Number(label="Width", value=512) - upscaling_resize_h = gr.Number(label="Height", value=512) + upscaling_resize_w = gr.Number(label="Width", value=512, precision=0) + upscaling_resize_h = gr.Number(label="Height", value=512, precision=0) upscaling_crop = gr.Checkbox(label='Crop to fit', value=True) with gr.Group(): From a1a05ad2d13d0b995dbf8ecead6315f17837ef81 Mon Sep 17 00:00:00 2001 From: JC_Array Date: Mon, 10 Oct 2022 16:47:58 -0500 Subject: [PATCH 21/61] import time missing, added to deepbooru fixxing error on get_deepbooru_tags --- modules/deepbooru.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/deepbooru.py b/modules/deepbooru.py index cee4a3b4a..12555b2e8 100644 --- a/modules/deepbooru.py +++ b/modules/deepbooru.py @@ -1,6 +1,7 @@ import os.path from concurrent.futures import ProcessPoolExecutor import multiprocessing +import time def get_deepbooru_tags(pil_image, threshold=0.5): From b980e7188c671fc55b26557f097076fb5c976ba0 Mon Sep 17 00:00:00 2001 From: JC_Array Date: Mon, 10 Oct 2022 16:52:54 -0500 Subject: [PATCH 22/61] corrected tag return in get_deepbooru_tags --- modules/deepbooru.py | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/deepbooru.py b/modules/deepbooru.py index 12555b2e8..ebdba5e08 100644 --- a/modules/deepbooru.py +++ b/modules/deepbooru.py @@ -15,7 +15,6 @@ def get_deepbooru_tags(pil_image, threshold=0.5): while shared.deepbooru_process_return["value"] == -1: time.sleep(0.2) release_process() - return ret def deepbooru_process(queue, deepbooru_process_return, threshold): From 315d5a8ed975c88f670bc484f40a23fbf3a77b63 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Mon, 10 Oct 2022 23:14:44 +0100 Subject: [PATCH 23/61] update data dis[play style --- .../textual_inversion/textual_inversion.py | 88 ++++++++++++++----- 1 file changed, 65 insertions(+), 23 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 667a7cf2b..95eebea7c 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -39,20 +39,59 @@ def embeddingFromB64(data): d = base64.b64decode(data) return json.loads(d,cls=EmbeddingDecoder) -def appendImageDataFooter(image,data): +def xorBlock(block): + return np.bitwise_xor(block.astype(np.uint8), + ((np.random.RandomState(0xDEADBEEF).random(block.shape)*255).astype(np.uint8)) & 0x0F ) + +def styleBlock(block,sequence): + im = Image.new('RGB',(block.shape[1],block.shape[0])) + draw = ImageDraw.Draw(im) + i=0 + for x in range(-6,im.size[0],8): + for yi,y in enumerate(range(-6,im.size[1],8)): + offset=0 + if yi%2==0: + offset=4 + shade = sequence[i%len(sequence)] + i+=1 + draw.ellipse((x+offset, y, x+6+offset, y+6), fill =(shade,shade,shade) ) + + fg = np.array(im).astype(np.uint8) & 0xF0 + return block ^ fg + +def insertImageDataEmbed(image,data): d = 3 data_compressed = zlib.compress( json.dumps(data,cls=EmbeddingEncoder).encode(),level=9) dnp = np.frombuffer(data_compressed,np.uint8).copy() - w = image.size[0] - next_size = dnp.shape[0] + (w-(dnp.shape[0]%w)) - next_size = next_size + ((w*d)-(next_size%(w*d))) - dnp.resize(next_size) - dnp = dnp.reshape((-1,w,d)) - print(dnp.shape) - im = Image.fromarray(dnp,mode='RGB') - background = Image.new('RGB',(image.size[0],image.size[1]+im.size[1]+1),(0,0,0)) - background.paste(image,(0,0)) - background.paste(im,(0,image.size[1]+1)) + dnphigh = dnp >> 4 + dnplow = dnp & 0x0F + + h = image.size[1] + next_size = dnplow.shape[0] + (h-(dnplow.shape[0]%h)) + next_size = next_size + ((h*d)-(next_size%(h*d))) + + dnplow.resize(next_size) + dnplow = dnplow.reshape((h,-1,d)) + + dnphigh.resize(next_size) + dnphigh = dnphigh.reshape((h,-1,d)) + + edgeStyleWeights = list(data['string_to_param'].values())[0].cpu().detach().numpy().tolist()[0][:1024] + edgeStyleWeights = (np.abs(edgeStyleWeights)/np.max(np.abs(edgeStyleWeights))*255).astype(np.uint8) + + dnplow = styleBlock(dnplow,sequence=edgeStyleWeights) + dnplow = xorBlock(dnplow) + dnphigh = styleBlock(dnphigh,sequence=edgeStyleWeights[::-1]) + dnphigh = xorBlock(dnphigh) + + imlow = Image.fromarray(dnplow,mode='RGB') + imhigh = Image.fromarray(dnphigh,mode='RGB') + + background = Image.new('RGB',(image.size[0]+imlow.size[0]+imhigh.size[0]+2,image.size[1]),(0,0,0)) + background.paste(imlow,(0,0)) + background.paste(image,(imlow.size[0]+1,0)) + background.paste(imhigh,(imlow.size[0]+1+image.size[0]+1,0)) + return background def crop_black(img,tol=0): @@ -62,19 +101,22 @@ def crop_black(img,tol=0): row_start,row_end = mask1.argmax(),mask.shape[0]-mask1[::-1].argmax() return img[row_start:row_end,col_start:col_end] -def extractImageDataFooter(image): +def extractImageDataEmbed(image): d=3 - outarr = crop_black(np.array(image.convert('RGB').getdata()).reshape(image.size[1],image.size[0],d ).astype(np.uint8) ) - lastRow = np.where( np.sum(outarr, axis=(1,2))==0) - if lastRow[0].shape[0] == 0: - print('Image data block not found.') + outarr = crop_black(np.array(image.getdata()).reshape(image.size[1],image.size[0],d ).astype(np.uint8) ) & 0x0F + blackCols = np.where( np.sum(outarr, axis=(0,2))==0) + if blackCols[0].shape[0] < 2: + print('No Image data blocks found.') return None - lastRow = lastRow[0] - - lastRow = lastRow.max() - dataBlock = outarr[lastRow+1::].astype(np.uint8).flatten().tobytes() - print(lastRow) + dataBlocklower = outarr[:,:blackCols[0].min(),:].astype(np.uint8) + dataBlockupper = outarr[:,blackCols[0].max()+1:,:].astype(np.uint8) + + dataBlocklower = xorBlock(dataBlocklower) + dataBlockupper = xorBlock(dataBlockupper) + + dataBlock = (dataBlockupper << 4) | (dataBlocklower) + dataBlock = dataBlock.flatten().tobytes() data = zlib.decompress(dataBlock) return json.loads(data,cls=EmbeddingDecoder) @@ -154,7 +196,7 @@ class EmbeddingDatabase: data = embeddingFromB64(embed_image.text['sd-ti-embedding']) name = data.get('name',name) else: - data = extractImageDataFooter(embed_image) + data = extractImageDataEmbed(embed_image) name = data.get('name',name) else: data = torch.load(path, map_location="cpu") @@ -351,7 +393,7 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, traini footer_right = '{}'.format(embedding.step) captioned_image = captionImageOverlay(image,title,footer_left,footer_mid,footer_right) - captioned_image = appendImageDataFooter(captioned_image,data) + captioned_image = insertImageDataEmbed(captioned_image,data) captioned_image.save(last_saved_image_chunks, "PNG", pnginfo=info) From 767202a4c324f9b49f63ab4dabbb5736fe9df6e5 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Mon, 10 Oct 2022 23:20:52 +0100 Subject: [PATCH 24/61] add dependency --- modules/textual_inversion/textual_inversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 95eebea7c..f3cacaa05 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -7,7 +7,7 @@ import tqdm import html import datetime -from PIL import Image,PngImagePlugin +from PIL import Image,PngImagePlugin,ImageDraw from ..images import captionImageOverlay import numpy as np import base64 From e0fbe6d27e7b4505766c8cb5a4264e1114cf3721 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Mon, 10 Oct 2022 23:26:24 +0100 Subject: [PATCH 25/61] colour depth conversion fix --- modules/textual_inversion/textual_inversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index f3cacaa05..ae8072684 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -103,7 +103,7 @@ def crop_black(img,tol=0): def extractImageDataEmbed(image): d=3 - outarr = crop_black(np.array(image.getdata()).reshape(image.size[1],image.size[0],d ).astype(np.uint8) ) & 0x0F + outarr = crop_black(np.array(image.convert('RGB').getdata()).reshape(image.size[1],image.size[0],d ).astype(np.uint8) ) & 0x0F blackCols = np.where( np.sum(outarr, axis=(0,2))==0) if blackCols[0].shape[0] < 2: print('No Image data blocks found.') From 76ef3d75f61253516c024553335d9083d9660a8a Mon Sep 17 00:00:00 2001 From: JC_Array Date: Mon, 10 Oct 2022 18:01:49 -0500 Subject: [PATCH 26/61] added deepbooru settings (threshold and sort by alpha or likelyhood) --- modules/deepbooru.py | 36 +++++++++++++++++++++++++----------- modules/shared.py | 6 ++++++ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/modules/deepbooru.py b/modules/deepbooru.py index ebdba5e08..e31e92c09 100644 --- a/modules/deepbooru.py +++ b/modules/deepbooru.py @@ -3,31 +3,32 @@ from concurrent.futures import ProcessPoolExecutor import multiprocessing import time - -def get_deepbooru_tags(pil_image, threshold=0.5): +def get_deepbooru_tags(pil_image): """ This method is for running only one image at a time for simple use. Used to the img2img interrogate. """ from modules import shared # prevents circular reference - create_deepbooru_process(threshold) + create_deepbooru_process(shared.opts.deepbooru_threshold, shared.opts.deepbooru_sort_alpha) shared.deepbooru_process_return["value"] = -1 shared.deepbooru_process_queue.put(pil_image) while shared.deepbooru_process_return["value"] == -1: time.sleep(0.2) + tags = shared.deepbooru_process_return["value"] release_process() + return tags -def deepbooru_process(queue, deepbooru_process_return, threshold): +def deepbooru_process(queue, deepbooru_process_return, threshold, alpha_sort): model, tags = get_deepbooru_tags_model() while True: # while process is running, keep monitoring queue for new image pil_image = queue.get() if pil_image == "QUIT": break else: - deepbooru_process_return["value"] = get_deepbooru_tags_from_model(model, tags, pil_image, threshold) + deepbooru_process_return["value"] = get_deepbooru_tags_from_model(model, tags, pil_image, threshold, alpha_sort) -def create_deepbooru_process(threshold=0.5): +def create_deepbooru_process(threshold, alpha_sort): """ Creates deepbooru process. A queue is created to send images into the process. This enables multiple images to be processed in a row without reloading the model or creating a new process. To return the data, a shared @@ -40,7 +41,7 @@ def create_deepbooru_process(threshold=0.5): shared.deepbooru_process_queue = shared.deepbooru_process_manager.Queue() shared.deepbooru_process_return = shared.deepbooru_process_manager.dict() shared.deepbooru_process_return["value"] = -1 - shared.deepbooru_process = multiprocessing.Process(target=deepbooru_process, args=(shared.deepbooru_process_queue, shared.deepbooru_process_return, threshold)) + shared.deepbooru_process = multiprocessing.Process(target=deepbooru_process, args=(shared.deepbooru_process_queue, shared.deepbooru_process_return, threshold, alpha_sort)) shared.deepbooru_process.start() @@ -80,7 +81,7 @@ def get_deepbooru_tags_model(): return model, tags -def get_deepbooru_tags_from_model(model, tags, pil_image, threshold=0.5): +def get_deepbooru_tags_from_model(model, tags, pil_image, threshold, alpha_sort): import deepdanbooru as dd import tensorflow as tf import numpy as np @@ -105,15 +106,28 @@ def get_deepbooru_tags_from_model(model, tags, pil_image, threshold=0.5): for i, tag in enumerate(tags): result_dict[tag] = y[i] - result_tags_out = [] + + unsorted_tags_in_theshold = [] result_tags_print = [] for tag in tags: if result_dict[tag] >= threshold: if tag.startswith("rating:"): continue - result_tags_out.append(tag) + unsorted_tags_in_theshold.append((result_dict[tag], tag)) result_tags_print.append(f'{result_dict[tag]} {tag}') + # sort tags + result_tags_out = [] + sort_ndx = 0 + print(alpha_sort) + if alpha_sort: + sort_ndx = 1 + + # sort by reverse by likelihood and normal for alpha + unsorted_tags_in_theshold.sort(key=lambda y: y[sort_ndx], reverse=(not alpha_sort)) + for weight, tag in unsorted_tags_in_theshold: + result_tags_out.append(tag) + print('\n'.join(sorted(result_tags_print, reverse=True))) - return ', '.join(result_tags_out).replace('_', ' ').replace(':', ' ') \ No newline at end of file + return ', '.join(result_tags_out).replace('_', ' ').replace(':', ' ') diff --git a/modules/shared.py b/modules/shared.py index 1995a99a7..2e307809b 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -261,6 +261,12 @@ options_templates.update(options_section(('sampler-params', "Sampler parameters" 's_noise': OptionInfo(1.0, "sigma noise", gr.Slider, {"minimum": 0.0, "maximum": 1.0, "step": 0.01}), })) +if cmd_opts.deepdanbooru: + options_templates.update(options_section(('deepbooru-params', "DeepBooru parameters"), { + "deepbooru_sort_alpha": OptionInfo(True, "Sort Alphabetical", gr.Checkbox), + 'deepbooru_threshold': OptionInfo(0.5, "Threshold", gr.Slider, {"minimum": 0.0, "maximum": 1.0, "step": 0.01}), + })) + class Options: data = None From bb932dbf9faf43ba918daa4791873078797b2a48 Mon Sep 17 00:00:00 2001 From: JC_Array Date: Mon, 10 Oct 2022 18:37:52 -0500 Subject: [PATCH 27/61] added alpha sort and threshold variables to create process method in preprocessing --- modules/textual_inversion/preprocess.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/textual_inversion/preprocess.py b/modules/textual_inversion/preprocess.py index 4a2194da1..c0af729b0 100644 --- a/modules/textual_inversion/preprocess.py +++ b/modules/textual_inversion/preprocess.py @@ -29,7 +29,7 @@ def preprocess(process_src, process_dst, process_width, process_height, process_ shared.interrogator.load() if process_caption_deepbooru: - deepbooru.create_deepbooru_process() + deepbooru.create_deepbooru_process(opts.deepbooru_threshold, opts.deepbooru_sort_alpha) def save_pic_with_caption(image, index): if process_caption: From 7aa8fcac1e45c3ad9c6a40df0e44a346afcd5032 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Tue, 11 Oct 2022 04:17:36 +0100 Subject: [PATCH 28/61] use simple lcg in xor --- modules/textual_inversion/textual_inversion.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index ae8072684..13416a085 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -39,9 +39,15 @@ def embeddingFromB64(data): d = base64.b64decode(data) return json.loads(d,cls=EmbeddingDecoder) +def lcg(m=2**32, a=1664525, c=1013904223, seed=0): + while True: + seed = (a * seed + c) % m + yield seed + def xorBlock(block): - return np.bitwise_xor(block.astype(np.uint8), - ((np.random.RandomState(0xDEADBEEF).random(block.shape)*255).astype(np.uint8)) & 0x0F ) + g = lcg() + randblock = np.array([next(g) for _ in range(np.product(block.shape))]).astype(np.uint8).reshape(block.shape) + return np.bitwise_xor(block.astype(np.uint8),randblock & 0x0F) def styleBlock(block,sequence): im = Image.new('RGB',(block.shape[1],block.shape[0])) From ff4ef13dd591ec52f196f344f47537695df95364 Mon Sep 17 00:00:00 2001 From: JC_Array Date: Tue, 11 Oct 2022 10:24:27 -0500 Subject: [PATCH 29/61] removed unneeded print --- modules/deepbooru.py | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/deepbooru.py b/modules/deepbooru.py index e31e92c09..89dcac3cf 100644 --- a/modules/deepbooru.py +++ b/modules/deepbooru.py @@ -119,7 +119,6 @@ def get_deepbooru_tags_from_model(model, tags, pil_image, threshold, alpha_sort) # sort tags result_tags_out = [] sort_ndx = 0 - print(alpha_sort) if alpha_sort: sort_ndx = 1 From c080f52ceae73b893155eff7de577aaf1a982a2f Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:37:58 +0100 Subject: [PATCH 30/61] move embedding logic to separate file --- modules/textual_inversion/image_embedding.py | 234 +++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 modules/textual_inversion/image_embedding.py diff --git a/modules/textual_inversion/image_embedding.py b/modules/textual_inversion/image_embedding.py new file mode 100644 index 000000000..6ad396021 --- /dev/null +++ b/modules/textual_inversion/image_embedding.py @@ -0,0 +1,234 @@ +import base64 +import json +import numpy as np +import zlib +from PIL import Image,PngImagePlugin,ImageDraw,ImageFont +from fonts.ttf import Roboto +import torch + +class EmbeddingEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, torch.Tensor): + return {'TORCHTENSOR':obj.cpu().detach().numpy().tolist()} + return json.JSONEncoder.default(self, obj) + +class EmbeddingDecoder(json.JSONDecoder): + def __init__(self, *args, **kwargs): + json.JSONDecoder.__init__(self, object_hook=self.object_hook, *args, **kwargs) + def object_hook(self, d): + if 'TORCHTENSOR' in d: + return torch.from_numpy(np.array(d['TORCHTENSOR'])) + return d + +def embedding_to_b64(data): + d = json.dumps(data,cls=EmbeddingEncoder) + return base64.b64encode(d.encode()) + +def embedding_from_b64(data): + d = base64.b64decode(data) + return json.loads(d,cls=EmbeddingDecoder) + +def lcg(m=2**32, a=1664525, c=1013904223, seed=0): + while True: + seed = (a * seed + c) % m + yield seed%255 + +def xor_block(block): + g = lcg() + randblock = np.array([next(g) for _ in range(np.product(block.shape))]).astype(np.uint8).reshape(block.shape) + return np.bitwise_xor(block.astype(np.uint8),randblock & 0x0F) + +def style_block(block,sequence): + im = Image.new('RGB',(block.shape[1],block.shape[0])) + draw = ImageDraw.Draw(im) + i=0 + for x in range(-6,im.size[0],8): + for yi,y in enumerate(range(-6,im.size[1],8)): + offset=0 + if yi%2==0: + offset=4 + shade = sequence[i%len(sequence)] + i+=1 + draw.ellipse((x+offset, y, x+6+offset, y+6), fill =(shade,shade,shade) ) + + fg = np.array(im).astype(np.uint8) & 0xF0 + + return block ^ fg + +def insert_image_data_embed(image,data): + d = 3 + data_compressed = zlib.compress( json.dumps(data,cls=EmbeddingEncoder).encode(),level=9) + data_np_ = np.frombuffer(data_compressed,np.uint8).copy() + data_np_high = data_np_ >> 4 + data_np_low = data_np_ & 0x0F + + h = image.size[1] + next_size = data_np_low.shape[0] + (h-(data_np_low.shape[0]%h)) + next_size = next_size + ((h*d)-(next_size%(h*d))) + + data_np_low.resize(next_size) + data_np_low = data_np_low.reshape((h,-1,d)) + + data_np_high.resize(next_size) + data_np_high = data_np_high.reshape((h,-1,d)) + + edge_style = list(data['string_to_param'].values())[0].cpu().detach().numpy().tolist()[0][:1024] + edge_style = (np.abs(edge_style)/np.max(np.abs(edge_style))*255).astype(np.uint8) + + data_np_low = style_block(data_np_low,sequence=edge_style) + data_np_low = xor_block(data_np_low) + data_np_high = style_block(data_np_high,sequence=edge_style[::-1]) + data_np_high = xor_block(data_np_high) + + im_low = Image.fromarray(data_np_low,mode='RGB') + im_high = Image.fromarray(data_np_high,mode='RGB') + + background = Image.new('RGB',(image.size[0]+im_low.size[0]+im_high.size[0]+2,image.size[1]),(0,0,0)) + background.paste(im_low,(0,0)) + background.paste(image,(im_low.size[0]+1,0)) + background.paste(im_high,(im_low.size[0]+1+image.size[0]+1,0)) + + return background + +def crop_black(img,tol=0): + mask = (img>tol).all(2) + mask0,mask1 = mask.any(0),mask.any(1) + col_start,col_end = mask0.argmax(),mask.shape[1]-mask0[::-1].argmax() + row_start,row_end = mask1.argmax(),mask.shape[0]-mask1[::-1].argmax() + return img[row_start:row_end,col_start:col_end] + +def extract_image_data_embed(image): + d=3 + outarr = crop_black(np.array(image.convert('RGB').getdata()).reshape(image.size[1],image.size[0],d ).astype(np.uint8) ) & 0x0F + black_cols = np.where( np.sum(outarr, axis=(0,2))==0) + if black_cols[0].shape[0] < 2: + print('No Image data blocks found.') + return None + + data_block_lower = outarr[:,:black_cols[0].min(),:].astype(np.uint8) + data_block_upper = outarr[:,black_cols[0].max()+1:,:].astype(np.uint8) + + data_block_lower = xor_block(data_block_lower) + data_block_upper = xor_block(data_block_upper) + + data_block = (data_block_upper << 4) | (data_block_lower) + data_block = data_block.flatten().tobytes() + + data = zlib.decompress(data_block) + return json.loads(data,cls=EmbeddingDecoder) + +def addCaptionLines(lines,image,initialx,textfont): + draw = ImageDraw.Draw(image) + hstart =initialx + for fill,line in lines: + fontsize = 32 + font = ImageFont.truetype(textfont, fontsize) + _,_,w, h = draw.textbbox((0,0),line,font=font) + fontsize = min( int(fontsize * ((image.size[0]-35)/w) ), 28) + font = ImageFont.truetype(textfont, fontsize) + _,_,w,h = draw.textbbox((0,0),line,font=font) + draw.text(((image.size[0]-w)/2,hstart), line, font=font, fill=fill) + hstart += h + return hstart + +def caption_image(image,prelines,postlines,background=(51, 51, 51),font=None): + if font is None: + try: + font = ImageFont.truetype(opts.font or Roboto, fontsize) + font = opts.font or Roboto + except Exception: + font = Roboto + + sample_image = image + background = Image.new("RGBA", (sample_image.size[0],sample_image.size[1]+1024), background) + hoffset = addCaptionLines(prelines,background,5,font)+16 + background.paste(sample_image,(0,hoffset)) + hoffset = hoffset+sample_image.size[1]+8 + hoffset = addCaptionLines(postlines,background,hoffset,font) + background = background.crop((0,0,sample_image.size[0],hoffset+8)) + return background + +def caption_image_overlay(srcimage,title,footerLeft,footerMid,footerRight,textfont=None): + from math import cos + + image = srcimage.copy() + + if textfont is None: + try: + textfont = ImageFont.truetype(opts.font or Roboto, fontsize) + textfont = opts.font or Roboto + except Exception: + textfont = Roboto + + factor = 1.5 + gradient = Image.new('RGBA', (1,image.size[1]), color=(0,0,0,0)) + for y in range(image.size[1]): + mag = 1-cos(y/image.size[1]*factor) + mag = max(mag,1-cos((image.size[1]-y)/image.size[1]*factor*1.1)) + gradient.putpixel((0, y), (0,0,0,int(mag*255))) + image = Image.alpha_composite(image.convert('RGBA'), gradient.resize(image.size)) + + draw = ImageDraw.Draw(image) + fontsize = 32 + font = ImageFont.truetype(textfont, fontsize) + padding = 10 + + _,_,w, h = draw.textbbox((0,0),title,font=font) + fontsize = min( int(fontsize * (((image.size[0]*0.75)-(padding*4))/w) ), 72) + font = ImageFont.truetype(textfont, fontsize) + _,_,w,h = draw.textbbox((0,0),title,font=font) + draw.text((padding,padding), title, anchor='lt', font=font, fill=(255,255,255,230)) + + _,_,w, h = draw.textbbox((0,0),footerLeft,font=font) + fontsize_left = min( int(fontsize * (((image.size[0]/3)-(padding))/w) ), 72) + _,_,w, h = draw.textbbox((0,0),footerMid,font=font) + fontsize_mid = min( int(fontsize * (((image.size[0]/3)-(padding))/w) ), 72) + _,_,w, h = draw.textbbox((0,0),footerRight,font=font) + fontsize_right = min( int(fontsize * (((image.size[0]/3)-(padding))/w) ), 72) + + font = ImageFont.truetype(textfont, min(fontsize_left,fontsize_mid,fontsize_right)) + + draw.text((padding,image.size[1]-padding), footerLeft, anchor='ls', font=font, fill=(255,255,255,230)) + draw.text((image.size[0]/2,image.size[1]-padding), footerMid, anchor='ms', font=font, fill=(255,255,255,230)) + draw.text((image.size[0]-padding,image.size[1]-padding), footerRight, anchor='rs', font=font, fill=(255,255,255,230)) + + return image + +if __name__ == '__main__': + + image = Image.new('RGBA',(512,512),(255,255,200,255)) + caption_image(image,[((255,255,255),'line a'),((255,255,255),'line b')], + [((255,255,255),'line c'),((255,255,255),'line d')]) + + image = Image.new('RGBA',(512,512),(255,255,200,255)) + cap_image = caption_image_overlay(image, 'title', 'footerLeft', 'footerMid', 'footerRight') + + test_embed = {'string_to_param':{'*':torch.from_numpy(np.random.random((2, 4096)))}} + + embedded_image = insert_image_data_embed(cap_image, test_embed) + + retrived_embed = extract_image_data_embed(embedded_image) + + assert str(retrived_embed) == str(test_embed) + + embedded_image2 = insert_image_data_embed(cap_image, retrived_embed) + + assert embedded_image == embedded_image2 + + g = lcg() + shared_random = np.array([next(g) for _ in range(100)]).astype(np.uint8).tolist() + + reference_random = [253, 242, 127, 44, 157, 27, 239, 133, 38, 79, 167, 4, 177, + 95, 130, 79, 78, 14, 52, 215, 220, 194, 126, 28, 240, 179, + 160, 153, 149, 50, 105, 14, 21, 218, 199, 18, 54, 198, 193, + 38, 128, 19, 53, 195, 124, 75, 205, 12, 6, 145, 0, 28, + 30, 148, 8, 45, 218, 171, 55, 249, 97, 166, 12, 35, 0, + 41, 221, 122, 215, 170, 31, 113, 186, 97, 119, 31, 23, 185, + 66, 140, 30, 41, 37, 63, 137, 109, 216, 55, 159, 145, 82, + 204, 86, 73, 222, 44, 198, 118, 240, 97] + + assert shared_random == reference_random + + hunna_kay_random_sum = sum(np.array([next(g) for _ in range(100000)]).astype(np.uint8).tolist()) + + assert 12731374 == hunna_kay_random_sum \ No newline at end of file From e5fbf5c755b7c306696546405385d5d2314e555b Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:46:33 +0100 Subject: [PATCH 31/61] remove embedding related image functions from images --- modules/images.py | 77 ----------------------------------------------- 1 file changed, 77 deletions(-) diff --git a/modules/images.py b/modules/images.py index e62eec8ef..c0a906762 100644 --- a/modules/images.py +++ b/modules/images.py @@ -463,80 +463,3 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i txt_fullfn = None return fullfn, txt_fullfn - -def addCaptionLines(lines,image,initialx,textfont): - draw = ImageDraw.Draw(image) - hstart =initialx - for fill,line in lines: - fontSize = 32 - font = ImageFont.truetype(textfont, fontSize) - _,_,w, h = draw.textbbox((0,0),line,font=font) - fontSize = min( int(fontSize * ((image.size[0]-35)/w) ), 28) - font = ImageFont.truetype(textfont, fontSize) - _,_,w,h = draw.textbbox((0,0),line,font=font) - draw.text(((image.size[0]-w)/2,hstart), line, font=font, fill=fill) - hstart += h - return hstart - -def captionImge(image,prelines,postlines,background=(51, 51, 51),font=None): - if font is None: - try: - font = ImageFont.truetype(opts.font or Roboto, fontsize) - font = opts.font or Roboto - except Exception: - font = Roboto - - sampleImage = image - background = Image.new("RGBA", (sampleImage.size[0],sampleImage.size[1]+1024), background) - hoffset = addCaptionLines(prelines,background,5,font)+16 - background.paste(sampleImage,(0,hoffset)) - hoffset = hoffset+sampleImage.size[1]+8 - hoffset = addCaptionLines(postlines,background,hoffset,font) - background = background.crop((0,0,sampleImage.size[0],hoffset+8)) - return background - -def captionImageOverlay(srcimage,title,footerLeft,footerMid,footerRight,textfont=None): - from math import cos - - image = srcimage.copy() - - if textfont is None: - try: - textfont = ImageFont.truetype(opts.font or Roboto, fontsize) - textfont = opts.font or Roboto - except Exception: - textfont = Roboto - - factor = 1.5 - gradient = Image.new('RGBA', (1,image.size[1]), color=(0,0,0,0)) - for y in range(image.size[1]): - mag = 1-cos(y/image.size[1]*factor) - mag = max(mag,1-cos((image.size[1]-y)/image.size[1]*factor*1.1)) - gradient.putpixel((0, y), (0,0,0,int(mag*255))) - image = Image.alpha_composite(image.convert('RGBA'), gradient.resize(image.size)) - - draw = ImageDraw.Draw(image) - fontSize = 32 - font = ImageFont.truetype(textfont, fontSize) - padding = 10 - - _,_,w, h = draw.textbbox((0,0),title,font=font) - fontSize = min( int(fontSize * (((image.size[0]*0.75)-(padding*4))/w) ), 72) - font = ImageFont.truetype(textfont, fontSize) - _,_,w,h = draw.textbbox((0,0),title,font=font) - draw.text((padding,padding), title, anchor='lt', font=font, fill=(255,255,255,230)) - - _,_,w, h = draw.textbbox((0,0),footerLeft,font=font) - fontSizeleft = min( int(fontSize * (((image.size[0]/3)-(padding))/w) ), 72) - _,_,w, h = draw.textbbox((0,0),footerMid,font=font) - fontSizemid = min( int(fontSize * (((image.size[0]/3)-(padding))/w) ), 72) - _,_,w, h = draw.textbbox((0,0),footerRight,font=font) - fontSizeright = min( int(fontSize * (((image.size[0]/3)-(padding))/w) ), 72) - - font = ImageFont.truetype(textfont, min(fontSizeleft,fontSizemid,fontSizeright)) - - draw.text((padding,image.size[1]-padding), footerLeft, anchor='ls', font=font, fill=(255,255,255,230)) - draw.text((image.size[0]/2,image.size[1]-padding), footerMid, anchor='ms', font=font, fill=(255,255,255,230)) - draw.text((image.size[0]-padding,image.size[1]-padding), footerRight, anchor='rs', font=font, fill=(255,255,255,230)) - - return image From 61788c0538415fa9ca1dd1b306519c116b18bd2c Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:50:50 +0100 Subject: [PATCH 32/61] shift embedding logic out of textual_inversion --- .../textual_inversion/textual_inversion.py | 125 +----------------- 1 file changed, 6 insertions(+), 119 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 8c66aeb5b..22b4ae7f2 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -7,124 +7,11 @@ import tqdm import html import datetime -from PIL import Image,PngImagePlugin,ImageDraw -from ..images import captionImageOverlay -import numpy as np -import base64 -import json -import zlib +from PIL import Image,PngImagePlugin from modules import shared, devices, sd_hijack, processing, sd_models import modules.textual_inversion.dataset -class EmbeddingEncoder(json.JSONEncoder): - def default(self, obj): - if isinstance(obj, torch.Tensor): - return {'TORCHTENSOR':obj.cpu().detach().numpy().tolist()} - return json.JSONEncoder.default(self, obj) - -class EmbeddingDecoder(json.JSONDecoder): - def __init__(self, *args, **kwargs): - json.JSONDecoder.__init__(self, object_hook=self.object_hook, *args, **kwargs) - def object_hook(self, d): - if 'TORCHTENSOR' in d: - return torch.from_numpy(np.array(d['TORCHTENSOR'])) - return d - -def embeddingToB64(data): - d = json.dumps(data,cls=EmbeddingEncoder) - return base64.b64encode(d.encode()) - -def embeddingFromB64(data): - d = base64.b64decode(data) - return json.loads(d,cls=EmbeddingDecoder) - -def lcg(m=2**32, a=1664525, c=1013904223, seed=0): - while True: - seed = (a * seed + c) % m - yield seed - -def xorBlock(block): - g = lcg() - randblock = np.array([next(g) for _ in range(np.product(block.shape))]).astype(np.uint8).reshape(block.shape) - return np.bitwise_xor(block.astype(np.uint8),randblock & 0x0F) - -def styleBlock(block,sequence): - im = Image.new('RGB',(block.shape[1],block.shape[0])) - draw = ImageDraw.Draw(im) - i=0 - for x in range(-6,im.size[0],8): - for yi,y in enumerate(range(-6,im.size[1],8)): - offset=0 - if yi%2==0: - offset=4 - shade = sequence[i%len(sequence)] - i+=1 - draw.ellipse((x+offset, y, x+6+offset, y+6), fill =(shade,shade,shade) ) - - fg = np.array(im).astype(np.uint8) & 0xF0 - return block ^ fg - -def insertImageDataEmbed(image,data): - d = 3 - data_compressed = zlib.compress( json.dumps(data,cls=EmbeddingEncoder).encode(),level=9) - dnp = np.frombuffer(data_compressed,np.uint8).copy() - dnphigh = dnp >> 4 - dnplow = dnp & 0x0F - - h = image.size[1] - next_size = dnplow.shape[0] + (h-(dnplow.shape[0]%h)) - next_size = next_size + ((h*d)-(next_size%(h*d))) - - dnplow.resize(next_size) - dnplow = dnplow.reshape((h,-1,d)) - - dnphigh.resize(next_size) - dnphigh = dnphigh.reshape((h,-1,d)) - - edgeStyleWeights = list(data['string_to_param'].values())[0].cpu().detach().numpy().tolist()[0][:1024] - edgeStyleWeights = (np.abs(edgeStyleWeights)/np.max(np.abs(edgeStyleWeights))*255).astype(np.uint8) - - dnplow = styleBlock(dnplow,sequence=edgeStyleWeights) - dnplow = xorBlock(dnplow) - dnphigh = styleBlock(dnphigh,sequence=edgeStyleWeights[::-1]) - dnphigh = xorBlock(dnphigh) - - imlow = Image.fromarray(dnplow,mode='RGB') - imhigh = Image.fromarray(dnphigh,mode='RGB') - - background = Image.new('RGB',(image.size[0]+imlow.size[0]+imhigh.size[0]+2,image.size[1]),(0,0,0)) - background.paste(imlow,(0,0)) - background.paste(image,(imlow.size[0]+1,0)) - background.paste(imhigh,(imlow.size[0]+1+image.size[0]+1,0)) - - return background - -def crop_black(img,tol=0): - mask = (img>tol).all(2) - mask0,mask1 = mask.any(0),mask.any(1) - col_start,col_end = mask0.argmax(),mask.shape[1]-mask0[::-1].argmax() - row_start,row_end = mask1.argmax(),mask.shape[0]-mask1[::-1].argmax() - return img[row_start:row_end,col_start:col_end] - -def extractImageDataEmbed(image): - d=3 - outarr = crop_black(np.array(image.convert('RGB').getdata()).reshape(image.size[1],image.size[0],d ).astype(np.uint8) ) & 0x0F - blackCols = np.where( np.sum(outarr, axis=(0,2))==0) - if blackCols[0].shape[0] < 2: - print('No Image data blocks found.') - return None - - dataBlocklower = outarr[:,:blackCols[0].min(),:].astype(np.uint8) - dataBlockupper = outarr[:,blackCols[0].max()+1:,:].astype(np.uint8) - - dataBlocklower = xorBlock(dataBlocklower) - dataBlockupper = xorBlock(dataBlockupper) - - dataBlock = (dataBlockupper << 4) | (dataBlocklower) - dataBlock = dataBlock.flatten().tobytes() - data = zlib.decompress(dataBlock) - return json.loads(data,cls=EmbeddingDecoder) class Embedding: def __init__(self, vec, name, step=None): @@ -199,10 +86,10 @@ class EmbeddingDatabase: if filename.upper().endswith('.PNG'): embed_image = Image.open(path) if 'sd-ti-embedding' in embed_image.text: - data = embeddingFromB64(embed_image.text['sd-ti-embedding']) + data = embedding_from_b64(embed_image.text['sd-ti-embedding']) name = data.get('name',name) else: - data = extractImageDataEmbed(embed_image) + data = extract_image_data_embed(embed_image) name = data.get('name',name) else: data = torch.load(path, map_location="cpu") @@ -393,7 +280,7 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, traini info = PngImagePlugin.PngInfo() data = torch.load(last_saved_file) - info.add_text("sd-ti-embedding", embeddingToB64(data)) + info.add_text("sd-ti-embedding", embedding_to_b64(data)) title = "<{}>".format(data.get('name','???')) checkpoint = sd_models.select_checkpoint() @@ -401,8 +288,8 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, traini footer_mid = '[{}]'.format(checkpoint.hash) footer_right = '{}'.format(embedding.step) - captioned_image = captionImageOverlay(image,title,footer_left,footer_mid,footer_right) - captioned_image = insertImageDataEmbed(captioned_image,data) + captioned_image = caption_image_overlay(image,title,footer_left,footer_mid,footer_right) + captioned_image = insert_image_data_embed(captioned_image,data) captioned_image.save(last_saved_image_chunks, "PNG", pnginfo=info) From db71290d2659d3b58ff9b57a82e4721a9eab9229 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:55:54 +0100 Subject: [PATCH 33/61] remove old caption method --- modules/textual_inversion/image_embedding.py | 39 +------------------- 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/modules/textual_inversion/image_embedding.py b/modules/textual_inversion/image_embedding.py index 6ad396021..c67028a50 100644 --- a/modules/textual_inversion/image_embedding.py +++ b/modules/textual_inversion/image_embedding.py @@ -117,37 +117,6 @@ def extract_image_data_embed(image): data = zlib.decompress(data_block) return json.loads(data,cls=EmbeddingDecoder) -def addCaptionLines(lines,image,initialx,textfont): - draw = ImageDraw.Draw(image) - hstart =initialx - for fill,line in lines: - fontsize = 32 - font = ImageFont.truetype(textfont, fontsize) - _,_,w, h = draw.textbbox((0,0),line,font=font) - fontsize = min( int(fontsize * ((image.size[0]-35)/w) ), 28) - font = ImageFont.truetype(textfont, fontsize) - _,_,w,h = draw.textbbox((0,0),line,font=font) - draw.text(((image.size[0]-w)/2,hstart), line, font=font, fill=fill) - hstart += h - return hstart - -def caption_image(image,prelines,postlines,background=(51, 51, 51),font=None): - if font is None: - try: - font = ImageFont.truetype(opts.font or Roboto, fontsize) - font = opts.font or Roboto - except Exception: - font = Roboto - - sample_image = image - background = Image.new("RGBA", (sample_image.size[0],sample_image.size[1]+1024), background) - hoffset = addCaptionLines(prelines,background,5,font)+16 - background.paste(sample_image,(0,hoffset)) - hoffset = hoffset+sample_image.size[1]+8 - hoffset = addCaptionLines(postlines,background,hoffset,font) - background = background.crop((0,0,sample_image.size[0],hoffset+8)) - return background - def caption_image_overlay(srcimage,title,footerLeft,footerMid,footerRight,textfont=None): from math import cos @@ -195,11 +164,7 @@ def caption_image_overlay(srcimage,title,footerLeft,footerMid,footerRight,textfo return image if __name__ == '__main__': - - image = Image.new('RGBA',(512,512),(255,255,200,255)) - caption_image(image,[((255,255,255),'line a'),((255,255,255),'line b')], - [((255,255,255),'line c'),((255,255,255),'line d')]) - + image = Image.new('RGBA',(512,512),(255,255,200,255)) cap_image = caption_image_overlay(image, 'title', 'footerLeft', 'footerMid', 'footerRight') @@ -231,4 +196,4 @@ if __name__ == '__main__': hunna_kay_random_sum = sum(np.array([next(g) for _ in range(100000)]).astype(np.uint8).tolist()) - assert 12731374 == hunna_kay_random_sum \ No newline at end of file + assert 12731374 == hunna_kay_random_sum From aa75d5cfe8c84768b0f5d16f977ddba298677379 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Tue, 11 Oct 2022 20:06:13 +0100 Subject: [PATCH 34/61] correct conflict resolution typo --- modules/textual_inversion/textual_inversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 22b4ae7f2..789383ce7 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -169,7 +169,7 @@ def create_embedding(name, num_vectors_per_token, init_text='*'): -def train_embedding(embedding_name, learn_rate, data_root, log_directory, training_width, training_height, steps, num_repeats, create_image_every, save_embedding_every, template_file, save_image_with_stored_embedding, preview_image_prompt) +def train_embedding(embedding_name, learn_rate, data_root, log_directory, training_width, training_height, steps, num_repeats, create_image_every, save_embedding_every, template_file, save_image_with_stored_embedding, preview_image_prompt): assert embedding_name, 'embedding not selected' shared.state.textinfo = "Initializing textual inversion training..." From 91d7ee0d097a7ea203d261b570cd2b834837d9e2 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Tue, 11 Oct 2022 20:09:10 +0100 Subject: [PATCH 35/61] update imports --- modules/textual_inversion/textual_inversion.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 789383ce7..ff0a62b33 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -12,6 +12,9 @@ from PIL import Image,PngImagePlugin from modules import shared, devices, sd_hijack, processing, sd_models import modules.textual_inversion.dataset +from modules.textual_inversion.image_embedding import( embedding_to_b64,embedding_from_b64, + insert_image_data_embed,extract_image_data_embed, + caption_image_overlay ) class Embedding: def __init__(self, vec, name, step=None): From 5f3317376bb7952bc5145f05f16c1bbd466efc85 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Tue, 11 Oct 2022 20:09:49 +0100 Subject: [PATCH 36/61] spacing --- modules/textual_inversion/textual_inversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index ff0a62b33..485ef46cf 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -12,7 +12,7 @@ from PIL import Image,PngImagePlugin from modules import shared, devices, sd_hijack, processing, sd_models import modules.textual_inversion.dataset -from modules.textual_inversion.image_embedding import( embedding_to_b64,embedding_from_b64, +from modules.textual_inversion.image_embedding import (embedding_to_b64,embedding_from_b64, insert_image_data_embed,extract_image_data_embed, caption_image_overlay ) From 7e6a6e00ad6f3b7ef43c8120db9ecac6e8d6bea5 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Tue, 11 Oct 2022 20:20:46 +0100 Subject: [PATCH 37/61] Add files via upload --- modules/textual_inversion/test_embedding.png | Bin 0 -> 489220 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 modules/textual_inversion/test_embedding.png diff --git a/modules/textual_inversion/test_embedding.png b/modules/textual_inversion/test_embedding.png new file mode 100644 index 0000000000000000000000000000000000000000..07e2d9afaeaff3751b68a7c0f49d8b3466474282 GIT binary patch literal 489220 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

_gXT+oL1!p{=j_4x0aQkU_NRi{$KZQx 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 z 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 N;OXk;vd$@?2>{a42J!#^ literal 0 HcmV?d00001 From 66ec505975aaa305a217fc27281ce368cbaef281 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Tue, 11 Oct 2022 20:21:30 +0100 Subject: [PATCH 38/61] add file based test --- modules/textual_inversion/image_embedding.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/textual_inversion/image_embedding.py b/modules/textual_inversion/image_embedding.py index c67028a50..1224fb422 100644 --- a/modules/textual_inversion/image_embedding.py +++ b/modules/textual_inversion/image_embedding.py @@ -164,6 +164,14 @@ def caption_image_overlay(srcimage,title,footerLeft,footerMid,footerRight,textfo return image if __name__ == '__main__': + + testEmbed = Image.open('test_embedding.png') + + data = extract_image_data_embed(testEmbed) + assert data is not None + + data = embedding_from_b64(testEmbed.text['sd-ti-embedding']) + assert data is not None image = Image.new('RGBA',(512,512),(255,255,200,255)) cap_image = caption_image_overlay(image, 'title', 'footerLeft', 'footerMid', 'footerRight') From f53f703aebc801c4204182d52bb1e0bef9808e1f Mon Sep 17 00:00:00 2001 From: JC_Array Date: Tue, 11 Oct 2022 18:12:12 -0500 Subject: [PATCH 39/61] resolved conflicts, moved settings under interrogate section, settings only show if deepbooru flag is enabled --- modules/deepbooru.py | 2 +- modules/shared.py | 19 +++++++++---------- modules/textual_inversion/preprocess.py | 2 +- modules/ui.py | 2 +- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/modules/deepbooru.py b/modules/deepbooru.py index 89dcac3cf..295299490 100644 --- a/modules/deepbooru.py +++ b/modules/deepbooru.py @@ -8,7 +8,7 @@ def get_deepbooru_tags(pil_image): This method is for running only one image at a time for simple use. Used to the img2img interrogate. """ from modules import shared # prevents circular reference - create_deepbooru_process(shared.opts.deepbooru_threshold, shared.opts.deepbooru_sort_alpha) + create_deepbooru_process(shared.opts.interrogate_deepbooru_score_threshold, shared.opts.deepbooru_sort_alpha) shared.deepbooru_process_return["value"] = -1 shared.deepbooru_process_queue.put(pil_image) while shared.deepbooru_process_return["value"] == -1: diff --git a/modules/shared.py b/modules/shared.py index 817203f80..5456c4778 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -248,15 +248,20 @@ options_templates.update(options_section(('sd', "Stable Diffusion"), { "random_artist_categories": OptionInfo([], "Allowed categories for random artists selection when using the Roll button", gr.CheckboxGroup, {"choices": artist_db.categories()}), })) -options_templates.update(options_section(('interrogate', "Interrogate Options"), { +interrogate_option_dictionary = { "interrogate_keep_models_in_memory": OptionInfo(False, "Interrogate: keep models in VRAM"), "interrogate_use_builtin_artists": OptionInfo(True, "Interrogate: use artists from artists.csv"), "interrogate_clip_num_beams": OptionInfo(1, "Interrogate: num_beams for BLIP", gr.Slider, {"minimum": 1, "maximum": 16, "step": 1}), "interrogate_clip_min_length": OptionInfo(24, "Interrogate: minimum description length (excluding artists, etc..)", gr.Slider, {"minimum": 1, "maximum": 128, "step": 1}), "interrogate_clip_max_length": OptionInfo(48, "Interrogate: maximum description length", gr.Slider, {"minimum": 1, "maximum": 256, "step": 1}), - "interrogate_clip_dict_limit": OptionInfo(1500, "Interrogate: maximum number of lines in text file (0 = No limit)"), - "interrogate_deepbooru_score_threshold": OptionInfo(0.5, "Interrogate: deepbooru score threshold", gr.Slider, {"minimum": 0, "maximum": 1, "step": 0.01}), -})) + "interrogate_clip_dict_limit": OptionInfo(1500, "Interrogate: maximum number of lines in text file (0 = No limit)") +} + +if cmd_opts.deepdanbooru: + interrogate_option_dictionary["interrogate_deepbooru_score_threshold"] = OptionInfo(0.5, "Interrogate: deepbooru score threshold", gr.Slider, {"minimum": 0, "maximum": 1, "step": 0.01}) + interrogate_option_dictionary["deepbooru_sort_alpha"] = OptionInfo(True, "Interrogate: deepbooru sort alphabetically", gr.Checkbox) + +options_templates.update(options_section(('interrogate', "Interrogate Options"), interrogate_option_dictionary)) options_templates.update(options_section(('ui', "User interface"), { "show_progressbar": OptionInfo(True, "Show progressbar"), @@ -282,12 +287,6 @@ options_templates.update(options_section(('sampler-params', "Sampler parameters" 'eta_noise_seed_delta': OptionInfo(0, "Eta noise seed delta", gr.Number, {"precision": 0}), })) -if cmd_opts.deepdanbooru: - options_templates.update(options_section(('deepbooru-params', "DeepBooru parameters"), { - "deepbooru_sort_alpha": OptionInfo(True, "Sort Alphabetical", gr.Checkbox), - 'deepbooru_threshold': OptionInfo(0.5, "Threshold", gr.Slider, {"minimum": 0.0, "maximum": 1.0, "step": 0.01}), - })) - class Options: data = None diff --git a/modules/textual_inversion/preprocess.py b/modules/textual_inversion/preprocess.py index a96388d6d..113cecf1d 100644 --- a/modules/textual_inversion/preprocess.py +++ b/modules/textual_inversion/preprocess.py @@ -29,7 +29,7 @@ def preprocess(process_src, process_dst, process_width, process_height, process_ shared.interrogator.load() if process_caption_deepbooru: - deepbooru.create_deepbooru_process(opts.deepbooru_threshold, opts.deepbooru_sort_alpha) + deepbooru.create_deepbooru_process(opts.interrogate_deepbooru_score_threshold, opts.deepbooru_sort_alpha) def save_pic_with_caption(image, index): if process_caption: diff --git a/modules/ui.py b/modules/ui.py index 2891fc8c7..fa45edca7 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -317,7 +317,7 @@ def interrogate(image): def interrogate_deepbooru(image): - prompt = get_deepbooru_tags(image, opts.interrogate_deepbooru_score_threshold) + prompt = get_deepbooru_tags(image) return gr_show(True) if prompt is None else prompt From 6d408c06c634cc96480f055941754dcc43f781d9 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Wed, 12 Oct 2022 00:19:28 +0100 Subject: [PATCH 40/61] Prevent nans from failed float parsing from overwriting weights --- javascript/edit-attention.js | 1 + 1 file changed, 1 insertion(+) diff --git a/javascript/edit-attention.js b/javascript/edit-attention.js index 79566a2e2..3f1d2fbbd 100644 --- a/javascript/edit-attention.js +++ b/javascript/edit-attention.js @@ -25,6 +25,7 @@ addEventListener('keydown', (event) => { } else { end = target.value.slice(selectionEnd + 1).indexOf(")") + 1; weight = parseFloat(target.value.slice(selectionEnd + 1, selectionEnd + 1 + end)); + if (isNaN(weight)) return; if (event.key == minus) weight -= 0.1; if (event.key == plus) weight += 0.1; From 65b973ac4e547a325f30a05f852b161421af2041 Mon Sep 17 00:00:00 2001 From: supersteve3d <39339941+supersteve3d@users.noreply.github.com> Date: Wed, 12 Oct 2022 08:21:52 +0800 Subject: [PATCH 41/61] Update shared.py Correct typo to "Unload VAE and CLIP from VRAM when training" in settings tab. --- modules/shared.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/shared.py b/modules/shared.py index c1092ff79..46bc740c5 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -229,7 +229,7 @@ options_templates.update(options_section(('system', "System"), { })) options_templates.update(options_section(('training', "Training"), { - "unload_models_when_training": OptionInfo(False, "Unload VAE and CLIP form VRAM when training"), + "unload_models_when_training": OptionInfo(False, "Unload VAE and CLIP from VRAM when training"), })) options_templates.update(options_section(('sd', "Stable Diffusion"), { From 6ac2ec2b78bc5fabd09cb866dd9a71061d669269 Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Wed, 12 Oct 2022 07:01:20 +0300 Subject: [PATCH 42/61] create dir for hypernetworks --- modules/shared.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/shared.py b/modules/shared.py index c1092ff79..e65e77f81 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -86,6 +86,7 @@ parallel_processing_allowed = not cmd_opts.lowvram and not cmd_opts.medvram xformers_available = False config_filename = cmd_opts.ui_settings_file +os.makedirs(cmd_opts.hypernetwork_dir, exist_ok=True) hypernetworks = hypernetwork.list_hypernetworks(cmd_opts.hypernetwork_dir) loaded_hypernetwork = None From fec2221eeaafb50afd26ba3e109bf6f928011e69 Mon Sep 17 00:00:00 2001 From: Greg Fuller Date: Tue, 11 Oct 2022 19:29:38 -0700 Subject: [PATCH 43/61] Truncate error text to fix service lockup / stall What: * Update wrap_gradio_call to add a limit to the maximum amount of text output Why: * wrap_gradio_call currently prints out a list of the arguments provided to the failing function. * if that function is save_image, this causes the entire image to be printed to stderr * If the image is large, this can cause the service to lock up while attempting to print all the text * It is easy to generate large images using the x/y plot script * it is easy to encounter image save exceptions, including if the output directory does not exist / cannot be written to, or if the file is too big * The huge amount of log spam is confusing and not particularly helpful --- modules/ui.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/ui.py b/modules/ui.py index 1204eef7b..33a49d3bf 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -181,8 +181,15 @@ def wrap_gradio_call(func, extra_outputs=None): try: res = list(func(*args, **kwargs)) except Exception as e: + # When printing out our debug argument list, do not print out more than a MB of text + max_debug_str_len = 131072 # (1024*1024)/8 + print("Error completing request", file=sys.stderr) - print("Arguments:", args, kwargs, file=sys.stderr) + argStr = f"Arguments: {str(args)} {str(kwargs)}" + print(argStr[:max_debug_str_len], file=sys.stderr) + if len(argStr) > max_debug_str_len: + print(f"(Argument list truncated at {max_debug_str_len}/{len(argStr)} characters)", file=sys.stderr) + print(traceback.format_exc(), file=sys.stderr) shared.state.job = "" From 336bd8703c7b4d71f2f096f303599925a30b8167 Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Wed, 12 Oct 2022 09:00:07 +0300 Subject: [PATCH 44/61] just add the deepdanbooru settings unconditionally --- modules/shared.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/modules/shared.py b/modules/shared.py index f150e0243..42e997416 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -249,20 +249,15 @@ options_templates.update(options_section(('sd', "Stable Diffusion"), { "random_artist_categories": OptionInfo([], "Allowed categories for random artists selection when using the Roll button", gr.CheckboxGroup, {"choices": artist_db.categories()}), })) -interrogate_option_dictionary = { +options_templates.update(options_section(('interrogate', "Interrogate Options"), { "interrogate_keep_models_in_memory": OptionInfo(False, "Interrogate: keep models in VRAM"), "interrogate_use_builtin_artists": OptionInfo(True, "Interrogate: use artists from artists.csv"), "interrogate_clip_num_beams": OptionInfo(1, "Interrogate: num_beams for BLIP", gr.Slider, {"minimum": 1, "maximum": 16, "step": 1}), "interrogate_clip_min_length": OptionInfo(24, "Interrogate: minimum description length (excluding artists, etc..)", gr.Slider, {"minimum": 1, "maximum": 128, "step": 1}), "interrogate_clip_max_length": OptionInfo(48, "Interrogate: maximum description length", gr.Slider, {"minimum": 1, "maximum": 256, "step": 1}), - "interrogate_clip_dict_limit": OptionInfo(1500, "Interrogate: maximum number of lines in text file (0 = No limit)") -} - -if cmd_opts.deepdanbooru: - interrogate_option_dictionary["interrogate_deepbooru_score_threshold"] = OptionInfo(0.5, "Interrogate: deepbooru score threshold", gr.Slider, {"minimum": 0, "maximum": 1, "step": 0.01}) - interrogate_option_dictionary["deepbooru_sort_alpha"] = OptionInfo(True, "Interrogate: deepbooru sort alphabetically", gr.Checkbox) - -options_templates.update(options_section(('interrogate', "Interrogate Options"), interrogate_option_dictionary)) + "interrogate_deepbooru_score_threshold": OptionInfo(0.5, "Interrogate: deepbooru score threshold", gr.Slider, {"minimum": 0, "maximum": 1, "step": 0.01}), + "deepbooru_sort_alpha": OptionInfo(True, "Interrogate: deepbooru sort alphabetically"), +})) options_templates.update(options_section(('ui', "User interface"), { "show_progressbar": OptionInfo(True, "Show progressbar"), From fd07b103aeb70a80e3641068e483475e32c9750c Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Wed, 12 Oct 2022 09:00:39 +0300 Subject: [PATCH 45/61] prevent SD model from loading when running in deepdanbooru process --- webui.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/webui.py b/webui.py index ca278e940..32bcdb065 100644 --- a/webui.py +++ b/webui.py @@ -31,12 +31,7 @@ from modules.paths import script_path from modules.shared import cmd_opts import modules.hypernetworks.hypernetwork -modelloader.cleanup_models() -modules.sd_models.setup_model() -codeformer.setup_model(cmd_opts.codeformer_models_path) -gfpgan.setup_model(cmd_opts.gfpgan_models_path) -shared.face_restorers.append(modules.face_restoration.FaceRestoration()) -modelloader.load_upscalers() + queue_lock = threading.Lock() @@ -78,12 +73,19 @@ def wrap_gradio_gpu_call(func, extra_outputs=None): return modules.ui.wrap_gradio_call(f, extra_outputs=extra_outputs) -modules.scripts.load_scripts(os.path.join(script_path, "scripts")) +def initialize(): + modelloader.cleanup_models() + modules.sd_models.setup_model() + codeformer.setup_model(cmd_opts.codeformer_models_path) + gfpgan.setup_model(cmd_opts.gfpgan_models_path) + shared.face_restorers.append(modules.face_restoration.FaceRestoration()) + modelloader.load_upscalers() -shared.sd_model = modules.sd_models.load_model() -shared.opts.onchange("sd_model_checkpoint", wrap_queued_call(lambda: modules.sd_models.reload_model_weights(shared.sd_model))) + modules.scripts.load_scripts(os.path.join(script_path, "scripts")) -shared.opts.onchange("sd_hypernetwork", wrap_queued_call(lambda: modules.hypernetworks.hypernetwork.load_hypernetwork(shared.opts.sd_hypernetwork))) + shared.sd_model = modules.sd_models.load_model() + shared.opts.onchange("sd_model_checkpoint", wrap_queued_call(lambda: modules.sd_models.reload_model_weights(shared.sd_model))) + shared.opts.onchange("sd_hypernetwork", wrap_queued_call(lambda: modules.hypernetworks.hypernetwork.load_hypernetwork(shared.opts.sd_hypernetwork))) def webui(): @@ -98,7 +100,7 @@ def webui(): demo = modules.ui.create_ui(wrap_gradio_gpu_call=wrap_gradio_gpu_call) - app,local_url,share_url = demo.launch( + app, local_url, share_url = demo.launch( share=cmd_opts.share, server_name="0.0.0.0" if cmd_opts.listen else None, server_port=cmd_opts.port, @@ -129,6 +131,6 @@ def webui(): print('Restarting Gradio') - if __name__ == "__main__": + initialize() webui() From 7edd58d90dd08f68fab5ff84d26dedd0eb85cae3 Mon Sep 17 00:00:00 2001 From: James Noeckel Date: Tue, 11 Oct 2022 17:48:24 -0700 Subject: [PATCH 46/61] update environment-wsl2.yaml --- environment-wsl2.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/environment-wsl2.yaml b/environment-wsl2.yaml index c9ce11df3..f88727507 100644 --- a/environment-wsl2.yaml +++ b/environment-wsl2.yaml @@ -3,9 +3,9 @@ channels: - pytorch - defaults dependencies: - - python=3.8.5 - - pip=20.3 + - python=3.10 + - pip=22.2.2 - cudatoolkit=11.3 - - pytorch=1.11.0 - - torchvision=0.12.0 - - numpy=1.19.2 + - pytorch=1.12.1 + - torchvision=0.13.1 + - numpy=1.23.1 \ No newline at end of file From 8aead63f1ac9fec0e5198bd626ec2c5bcbeff4d8 Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Wed, 12 Oct 2022 09:32:14 +0300 Subject: [PATCH 47/61] emergency fix --- webui.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webui.py b/webui.py index 32bcdb065..33ba79054 100644 --- a/webui.py +++ b/webui.py @@ -89,6 +89,8 @@ def initialize(): def webui(): + initialize() + # make the program just exit at ctrl+c without waiting for anything def sigint_handler(sig, frame): print(f'Interrupted with signal {sig} in {frame}') @@ -132,5 +134,4 @@ def webui(): if __name__ == "__main__": - initialize() webui() From 57e03cdd244eee4e33ccab7554b3594563a3d0cd Mon Sep 17 00:00:00 2001 From: brkirch Date: Wed, 12 Oct 2022 00:54:24 -0400 Subject: [PATCH 48/61] Ensure the directory exists before saving to it The directory for the images saved with the Save button may still not exist, so it needs to be created prior to opening the log.csv file. --- modules/ui.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/ui.py b/modules/ui.py index 00bf09ae3..cd67b84b3 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -131,6 +131,8 @@ def save_files(js_data, images, do_make_zip, index): images = [images[index]] start_index = index + os.makedirs(opts.outdir_save, exist_ok=True) + with open(os.path.join(opts.outdir_save, "log.csv"), "a", encoding="utf8", newline='') as file: at_start = file.tell() == 0 writer = csv.writer(file) From f421f2af2df41a86af1aea1e82b4c32a2d143385 Mon Sep 17 00:00:00 2001 From: aoirusann Date: Wed, 12 Oct 2022 13:02:28 +0800 Subject: [PATCH 49/61] [img2imgalt] Fix seed & Allow batch. --- scripts/img2imgalt.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/img2imgalt.py b/scripts/img2imgalt.py index f9894cb01..313a55d21 100644 --- a/scripts/img2imgalt.py +++ b/scripts/img2imgalt.py @@ -129,8 +129,6 @@ class Script(scripts.Script): return [original_prompt, original_negative_prompt, cfg, st, randomness, sigma_adjustment] def run(self, p, original_prompt, original_negative_prompt, cfg, st, randomness, sigma_adjustment): - p.batch_size = 1 - p.batch_count = 1 def sample_extra(conditioning, unconditional_conditioning, seeds, subseeds, subseed_strength): @@ -154,7 +152,7 @@ class Script(scripts.Script): rec_noise = find_noise_for_image(p, cond, uncond, cfg, st) self.cache = Cached(rec_noise, cfg, st, lat, original_prompt, original_negative_prompt, sigma_adjustment) - rand_noise = processing.create_random_tensors(p.init_latent.shape[1:], [p.seed + x + 1 for x in range(p.init_latent.shape[0])]) + rand_noise = processing.create_random_tensors(p.init_latent.shape[1:], seeds=seeds, subseeds=subseeds, subseed_strength=p.subseed_strength, seed_resize_from_h=p.seed_resize_from_h, seed_resize_from_w=p.seed_resize_from_w, p=p) combined_noise = ((1 - randomness) * rec_noise + randomness * rand_noise) / ((randomness**2 + (1-randomness)**2) ** 0.5) From ca5efc316b9431746ff886d259275310f63f95fb Mon Sep 17 00:00:00 2001 From: LunixWasTaken Date: Tue, 11 Oct 2022 22:04:56 +0200 Subject: [PATCH 50/61] Typo fix in watermark hint. --- javascript/hints.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/hints.js b/javascript/hints.js index 045f2d3c1..b81c181b9 100644 --- a/javascript/hints.js +++ b/javascript/hints.js @@ -80,7 +80,7 @@ titles = { "Scale latent": "Uscale the image in latent space. Alternative is to produce the full image from latent representation, upscale that, and then move it back to latent space.", "Eta noise seed delta": "If this values is non-zero, it will be added to seed and used to initialize RNG for noises when using samplers with Eta. You can use this to produce even more variation of images, or you can use this to match images of other software if you know what you are doing.", - "Do not add watermark to images": "If this option is enabled, watermark will not be added to created images. Warning: if you do not add watermark, you may be bevaing in an unethical manner.", + "Do not add watermark to images": "If this option is enabled, watermark will not be added to created images. Warning: if you do not add watermark, you may be behaving in an unethical manner.", } From 2d006ce16cd95d587533656c3ac4991495e96f23 Mon Sep 17 00:00:00 2001 From: Milly Date: Mon, 10 Oct 2022 00:56:36 +0900 Subject: [PATCH 51/61] xy_grid: Find hypernetwork by closest name --- modules/hypernetworks/hypernetwork.py | 11 +++++++++++ scripts/xy_grid.py | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/hypernetworks/hypernetwork.py b/modules/hypernetworks/hypernetwork.py index 470659dfe..8f2192e2f 100644 --- a/modules/hypernetworks/hypernetwork.py +++ b/modules/hypernetworks/hypernetwork.py @@ -120,6 +120,17 @@ def load_hypernetwork(filename): shared.loaded_hypernetwork = None +def find_closest_hypernetwork_name(search: str): + if not search: + return None + search = search.lower() + applicable = [name for name in shared.hypernetworks if search in name.lower()] + if not applicable: + return None + applicable = sorted(applicable, key=lambda name: len(name)) + return applicable[0] + + def apply_hypernetwork(hypernetwork, context, layer=None): hypernetwork_layers = (hypernetwork.layers if hypernetwork is not None else {}).get(context.shape[2], None) diff --git a/scripts/xy_grid.py b/scripts/xy_grid.py index ef4311054..6f4217ec6 100644 --- a/scripts/xy_grid.py +++ b/scripts/xy_grid.py @@ -84,7 +84,11 @@ def apply_checkpoint(p, x, xs): def apply_hypernetwork(p, x, xs): - hypernetwork.load_hypernetwork(x) + if x.lower() in ["", "none"]: + name = None + else: + name = hypernetwork.find_closest_hypernetwork_name(x) + hypernetwork.load_hypernetwork(name) def apply_clip_skip(p, x, xs): From 7dba1c07cb337114507d9c256f9b843162c187d6 Mon Sep 17 00:00:00 2001 From: Milly Date: Mon, 10 Oct 2022 01:37:09 +0900 Subject: [PATCH 52/61] xy_grid: Confirm that hypernetwork options are valid before starting --- scripts/xy_grid.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scripts/xy_grid.py b/scripts/xy_grid.py index 6f4217ec6..b2239d0a3 100644 --- a/scripts/xy_grid.py +++ b/scripts/xy_grid.py @@ -88,9 +88,19 @@ def apply_hypernetwork(p, x, xs): name = None else: name = hypernetwork.find_closest_hypernetwork_name(x) + if not name: + raise RuntimeError(f"Unknown hypernetwork: {x}") hypernetwork.load_hypernetwork(name) +def confirm_hypernetworks(xs): + for x in xs: + if x.lower() in ["", "none"]: + continue + if not hypernetwork.find_closest_hypernetwork_name(x): + raise RuntimeError(f"Unknown hypernetwork: {x}") + + def apply_clip_skip(p, x, xs): opts.data["CLIP_stop_at_last_layers"] = x @@ -284,6 +294,8 @@ class Script(scripts.Script): for ckpt_val in valslist: if modules.sd_models.get_closet_checkpoint_match(ckpt_val) is None: raise RuntimeError(f"Checkpoint for {ckpt_val} not found") + elif opt.label == "Hypernetwork": + confirm_hypernetworks(valslist) return valslist From 2fffd4bddce12b2c98a5bae5a2cc6d64450d65a0 Mon Sep 17 00:00:00 2001 From: Milly Date: Mon, 10 Oct 2022 02:20:35 +0900 Subject: [PATCH 53/61] xy_grid: Refactor confirm functions --- scripts/xy_grid.py | 73 +++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/scripts/xy_grid.py b/scripts/xy_grid.py index b2239d0a3..3bb080bf3 100644 --- a/scripts/xy_grid.py +++ b/scripts/xy_grid.py @@ -77,12 +77,26 @@ def apply_sampler(p, x, xs): p.sampler_index = sampler_index +def confirm_samplers(p, xs): + samplers_dict = build_samplers_dict(p) + for x in xs: + if x.lower() not in samplers_dict.keys(): + raise RuntimeError(f"Unknown sampler: {x}") + + def apply_checkpoint(p, x, xs): info = modules.sd_models.get_closet_checkpoint_match(x) - assert info is not None, f'Checkpoint for {x} not found' + if info is None: + raise RuntimeError(f"Unknown checkpoint: {x}") modules.sd_models.reload_model_weights(shared.sd_model, info) +def confirm_checkpoints(p, xs): + for x in xs: + if modules.sd_models.get_closet_checkpoint_match(x) is None: + raise RuntimeError(f"Unknown checkpoint: {x}") + + def apply_hypernetwork(p, x, xs): if x.lower() in ["", "none"]: name = None @@ -93,7 +107,7 @@ def apply_hypernetwork(p, x, xs): hypernetwork.load_hypernetwork(name) -def confirm_hypernetworks(xs): +def confirm_hypernetworks(p, xs): for x in xs: if x.lower() in ["", "none"]: continue @@ -135,29 +149,29 @@ def str_permutations(x): return x -AxisOption = namedtuple("AxisOption", ["label", "type", "apply", "format_value"]) -AxisOptionImg2Img = namedtuple("AxisOptionImg2Img", ["label", "type", "apply", "format_value"]) +AxisOption = namedtuple("AxisOption", ["label", "type", "apply", "format_value", "confirm"]) +AxisOptionImg2Img = namedtuple("AxisOptionImg2Img", ["label", "type", "apply", "format_value", "confirm"]) axis_options = [ - AxisOption("Nothing", str, do_nothing, format_nothing), - AxisOption("Seed", int, apply_field("seed"), format_value_add_label), - AxisOption("Var. seed", int, apply_field("subseed"), format_value_add_label), - AxisOption("Var. strength", float, apply_field("subseed_strength"), format_value_add_label), - AxisOption("Steps", int, apply_field("steps"), format_value_add_label), - AxisOption("CFG Scale", float, apply_field("cfg_scale"), format_value_add_label), - AxisOption("Prompt S/R", str, apply_prompt, format_value), - AxisOption("Prompt order", str_permutations, apply_order, format_value_join_list), - AxisOption("Sampler", str, apply_sampler, format_value), - AxisOption("Checkpoint name", str, apply_checkpoint, format_value), - AxisOption("Hypernetwork", str, apply_hypernetwork, format_value), - AxisOption("Sigma Churn", float, apply_field("s_churn"), format_value_add_label), - AxisOption("Sigma min", float, apply_field("s_tmin"), format_value_add_label), - AxisOption("Sigma max", float, apply_field("s_tmax"), format_value_add_label), - AxisOption("Sigma noise", float, apply_field("s_noise"), format_value_add_label), - AxisOption("Eta", float, apply_field("eta"), format_value_add_label), - AxisOption("Clip skip", int, apply_clip_skip, format_value_add_label), - AxisOptionImg2Img("Denoising", float, apply_field("denoising_strength"), format_value_add_label), # as it is now all AxisOptionImg2Img items must go after AxisOption ones + AxisOption("Nothing", str, do_nothing, format_nothing, None), + AxisOption("Seed", int, apply_field("seed"), format_value_add_label, None), + AxisOption("Var. seed", int, apply_field("subseed"), format_value_add_label, None), + AxisOption("Var. strength", float, apply_field("subseed_strength"), format_value_add_label, None), + AxisOption("Steps", int, apply_field("steps"), format_value_add_label, None), + AxisOption("CFG Scale", float, apply_field("cfg_scale"), format_value_add_label, None), + AxisOption("Prompt S/R", str, apply_prompt, format_value, None), + AxisOption("Prompt order", str_permutations, apply_order, format_value_join_list, None), + AxisOption("Sampler", str, apply_sampler, format_value, confirm_samplers), + AxisOption("Checkpoint name", str, apply_checkpoint, format_value, confirm_checkpoints), + AxisOption("Hypernetwork", str, apply_hypernetwork, format_value, confirm_hypernetworks), + AxisOption("Sigma Churn", float, apply_field("s_churn"), format_value_add_label, None), + AxisOption("Sigma min", float, apply_field("s_tmin"), format_value_add_label, None), + AxisOption("Sigma max", float, apply_field("s_tmax"), format_value_add_label, None), + AxisOption("Sigma noise", float, apply_field("s_noise"), format_value_add_label, None), + AxisOption("Eta", float, apply_field("eta"), format_value_add_label, None), + AxisOption("Clip skip", int, apply_clip_skip, format_value_add_label, None), + AxisOptionImg2Img("Denoising", float, apply_field("denoising_strength"), format_value_add_label, None), # as it is now all AxisOptionImg2Img items must go after AxisOption ones ] @@ -283,19 +297,10 @@ class Script(scripts.Script): valslist = list(permutations(valslist)) valslist = [opt.type(x) for x in valslist] - + # Confirm options are valid before starting - if opt.label == "Sampler": - samplers_dict = build_samplers_dict(p) - for sampler_val in valslist: - if sampler_val.lower() not in samplers_dict.keys(): - raise RuntimeError(f"Unknown sampler: {sampler_val}") - elif opt.label == "Checkpoint name": - for ckpt_val in valslist: - if modules.sd_models.get_closet_checkpoint_match(ckpt_val) is None: - raise RuntimeError(f"Checkpoint for {ckpt_val} not found") - elif opt.label == "Hypernetwork": - confirm_hypernetworks(valslist) + if opt.confirm: + opt.confirm(p, valslist) return valslist From ee015a1af66a94a75c914659fa0d321e702a0a87 Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Wed, 12 Oct 2022 11:05:57 +0300 Subject: [PATCH 54/61] change textual inversion tab to train remake train interface to use tabs --- modules/hypernetworks/hypernetwork.py | 2 +- modules/ui.py | 22 +++++++++------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/modules/hypernetworks/hypernetwork.py b/modules/hypernetworks/hypernetwork.py index 8f2192e2f..8314450ae 100644 --- a/modules/hypernetworks/hypernetwork.py +++ b/modules/hypernetworks/hypernetwork.py @@ -175,7 +175,7 @@ def attention_CrossAttention_forward(self, x, context=None, mask=None): def train_hypernetwork(hypernetwork_name, learn_rate, data_root, log_directory, steps, create_image_every, save_hypernetwork_every, template_file, preview_image_prompt): - assert hypernetwork_name, 'embedding not selected' + assert hypernetwork_name, 'hypernetwork not selected' path = shared.hypernetworks.get(hypernetwork_name, None) shared.loaded_hypernetwork = Hypernetwork() diff --git a/modules/ui.py b/modules/ui.py index 4bfdd2752..86a2da6c3 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -1035,14 +1035,14 @@ def create_ui(wrap_gradio_gpu_call): sd_hijack.model_hijack.embedding_db.load_textual_inversion_embeddings() - with gr.Blocks() as textual_inversion_interface: + with gr.Blocks() as train_interface: with gr.Row().style(equal_height=False): - with gr.Column(): - with gr.Group(): - gr.HTML(value="

See wiki for detailed explanation.

") + gr.HTML(value="

See wiki for detailed explanation.

") - gr.HTML(value="

Create a new embedding

") + with gr.Row().style(equal_height=False): + with gr.Tabs(elem_id="train_tabs"): + with gr.Tab(label="Create embedding"): new_embedding_name = gr.Textbox(label="Name") initialization_text = gr.Textbox(label="Initialization text", value="*") nvpt = gr.Slider(label="Number of vectors per token", minimum=1, maximum=75, step=1, value=1) @@ -1054,9 +1054,7 @@ def create_ui(wrap_gradio_gpu_call): with gr.Column(): create_embedding = gr.Button(value="Create embedding", variant='primary') - with gr.Group(): - gr.HTML(value="

Create a new hypernetwork

") - + with gr.Tab(label="Create hypernetwork"): new_hypernetwork_name = gr.Textbox(label="Name") new_hypernetwork_sizes = gr.CheckboxGroup(label="Modules", value=["768", "320", "640", "1280"], choices=["768", "320", "640", "1280"]) @@ -1067,9 +1065,7 @@ def create_ui(wrap_gradio_gpu_call): with gr.Column(): create_hypernetwork = gr.Button(value="Create hypernetwork", variant='primary') - with gr.Group(): - gr.HTML(value="

Preprocess images

") - + with gr.Tab(label="Preprocess images"): process_src = gr.Textbox(label='Source directory') process_dst = gr.Textbox(label='Destination directory') process_width = gr.Slider(minimum=64, maximum=2048, step=64, label="Width", value=512) @@ -1091,7 +1087,7 @@ def create_ui(wrap_gradio_gpu_call): with gr.Column(): run_preprocess = gr.Button(value="Preprocess", variant='primary') - with gr.Group(): + with gr.Tab(label="Train"): gr.HTML(value="

Train an embedding; must specify a directory with a set of 1:1 ratio images

") train_embedding_name = gr.Dropdown(label='Embedding', choices=sorted(sd_hijack.model_hijack.embedding_db.word_embeddings.keys())) train_hypernetwork_name = gr.Dropdown(label='Hypernetwork', choices=[x for x in shared.hypernetworks.keys()]) @@ -1388,7 +1384,7 @@ Requested path was: {f} (extras_interface, "Extras", "extras"), (pnginfo_interface, "PNG Info", "pnginfo"), (modelmerger_interface, "Checkpoint Merger", "modelmerger"), - (textual_inversion_interface, "Textual inversion", "ti"), + (train_interface, "Train", "ti"), (settings_interface, "Settings", "settings"), ] From 80f3cf2bb2ce3f00d801cae2c3a8c20a8d4167d8 Mon Sep 17 00:00:00 2001 From: hentailord85ez <112723046+hentailord85ez@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:48:53 +0100 Subject: [PATCH 55/61] Account when lines are mismatched --- modules/sd_hijack.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/modules/sd_hijack.py b/modules/sd_hijack.py index ac70f8767..2753d4fa8 100644 --- a/modules/sd_hijack.py +++ b/modules/sd_hijack.py @@ -321,7 +321,17 @@ class FrozenCLIPEmbedderWithCustomWords(torch.nn.Module): fixes.append(fix[1]) self.hijack.fixes.append(fixes) - z1 = self.process_tokens([x[:75] for x in remade_batch_tokens], [x[:75] for x in batch_multipliers]) + tokens = [] + multipliers = [] + for i in range(len(remade_batch_tokens)): + if len(remade_batch_tokens[i]) > 0: + tokens.append(remade_batch_tokens[i][:75]) + multipliers.append(batch_multipliers[i][:75]) + else: + tokens.append([self.wrapped.tokenizer.eos_token_id] * 75) + multipliers.append([1.0] * 75) + + z1 = self.process_tokens(tokens, multipliers) z = z1 if z is None else torch.cat((z, z1), axis=-2) remade_batch_tokens = rem_tokens From 8561d5762b98bf7cfb764128ebf11633d8bb4405 Mon Sep 17 00:00:00 2001 From: Kalle Date: Wed, 12 Oct 2022 12:43:11 +0300 Subject: [PATCH 56/61] Remove duplicate artist from file --- artists.csv | 1 - 1 file changed, 1 deletion(-) diff --git a/artists.csv b/artists.csv index 14ba2022a..99cdbdc60 100644 --- a/artists.csv +++ b/artists.csv @@ -1045,7 +1045,6 @@ Bakemono Zukushi,0.67051035,anime Lucy Madox Brown,0.67032814,fineart Paul Wonner,0.6700563,scribbles Guido Borelli Da Caluso,0.66966087,digipa-high-impact -Guido Borelli da Caluso,0.66966087,digipa-high-impact Emil Alzamora,0.5844039,nudity Heinrich Brocksieper,0.64469147,fineart Dan Smith,0.669563,digipa-high-impact From 429442f4a6aab7301efb89d27bef524fe827e81a Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Wed, 12 Oct 2022 13:38:03 +0300 Subject: [PATCH 57/61] fix iterator bug for #2295 --- modules/sd_hijack.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/sd_hijack.py b/modules/sd_hijack.py index 2753d4fa8..c81722a0a 100644 --- a/modules/sd_hijack.py +++ b/modules/sd_hijack.py @@ -323,10 +323,10 @@ class FrozenCLIPEmbedderWithCustomWords(torch.nn.Module): tokens = [] multipliers = [] - for i in range(len(remade_batch_tokens)): - if len(remade_batch_tokens[i]) > 0: - tokens.append(remade_batch_tokens[i][:75]) - multipliers.append(batch_multipliers[i][:75]) + for j in range(len(remade_batch_tokens)): + if len(remade_batch_tokens[j]) > 0: + tokens.append(remade_batch_tokens[j][:75]) + multipliers.append(batch_multipliers[j][:75]) else: tokens.append([self.wrapped.tokenizer.eos_token_id] * 75) multipliers.append([1.0] * 75) From 50be33e953be93c40814262c6dbce36e66004528 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Wed, 12 Oct 2022 13:13:25 +0100 Subject: [PATCH 58/61] formatting --- modules/textual_inversion/image_embedding.py | 170 ++++++++++--------- 1 file changed, 91 insertions(+), 79 deletions(-) diff --git a/modules/textual_inversion/image_embedding.py b/modules/textual_inversion/image_embedding.py index 1224fb422..898ce3b3b 100644 --- a/modules/textual_inversion/image_embedding.py +++ b/modules/textual_inversion/image_embedding.py @@ -2,122 +2,134 @@ import base64 import json import numpy as np import zlib -from PIL import Image,PngImagePlugin,ImageDraw,ImageFont +from PIL import Image, PngImagePlugin, ImageDraw, ImageFont from fonts.ttf import Roboto import torch + class EmbeddingEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, torch.Tensor): - return {'TORCHTENSOR':obj.cpu().detach().numpy().tolist()} + return {'TORCHTENSOR': obj.cpu().detach().numpy().tolist()} return json.JSONEncoder.default(self, obj) + class EmbeddingDecoder(json.JSONDecoder): def __init__(self, *args, **kwargs): json.JSONDecoder.__init__(self, object_hook=self.object_hook, *args, **kwargs) + def object_hook(self, d): if 'TORCHTENSOR' in d: return torch.from_numpy(np.array(d['TORCHTENSOR'])) return d + def embedding_to_b64(data): - d = json.dumps(data,cls=EmbeddingEncoder) + d = json.dumps(data, cls=EmbeddingEncoder) return base64.b64encode(d.encode()) + def embedding_from_b64(data): d = base64.b64decode(data) - return json.loads(d,cls=EmbeddingDecoder) + return json.loads(d, cls=EmbeddingDecoder) + def lcg(m=2**32, a=1664525, c=1013904223, seed=0): while True: seed = (a * seed + c) % m - yield seed%255 + yield seed % 255 + def xor_block(block): g = lcg() randblock = np.array([next(g) for _ in range(np.product(block.shape))]).astype(np.uint8).reshape(block.shape) - return np.bitwise_xor(block.astype(np.uint8),randblock & 0x0F) + return np.bitwise_xor(block.astype(np.uint8), randblock & 0x0F) -def style_block(block,sequence): - im = Image.new('RGB',(block.shape[1],block.shape[0])) + +def style_block(block, sequence): + im = Image.new('RGB', (block.shape[1], block.shape[0])) draw = ImageDraw.Draw(im) - i=0 - for x in range(-6,im.size[0],8): - for yi,y in enumerate(range(-6,im.size[1],8)): - offset=0 - if yi%2==0: - offset=4 - shade = sequence[i%len(sequence)] - i+=1 - draw.ellipse((x+offset, y, x+6+offset, y+6), fill =(shade,shade,shade) ) + i = 0 + for x in range(-6, im.size[0], 8): + for yi, y in enumerate(range(-6, im.size[1], 8)): + offset = 0 + if yi % 2 == 0: + offset = 4 + shade = sequence[i % len(sequence)] + i += 1 + draw.ellipse((x+offset, y, x+6+offset, y+6), fill=(shade, shade, shade)) fg = np.array(im).astype(np.uint8) & 0xF0 return block ^ fg -def insert_image_data_embed(image,data): + +def insert_image_data_embed(image, data): d = 3 - data_compressed = zlib.compress( json.dumps(data,cls=EmbeddingEncoder).encode(),level=9) - data_np_ = np.frombuffer(data_compressed,np.uint8).copy() + data_compressed = zlib.compress(json.dumps(data, cls=EmbeddingEncoder).encode(), level=9) + data_np_ = np.frombuffer(data_compressed, np.uint8).copy() data_np_high = data_np_ >> 4 - data_np_low = data_np_ & 0x0F - + data_np_low = data_np_ & 0x0F + h = image.size[1] - next_size = data_np_low.shape[0] + (h-(data_np_low.shape[0]%h)) - next_size = next_size + ((h*d)-(next_size%(h*d))) + next_size = data_np_low.shape[0] + (h-(data_np_low.shape[0] % h)) + next_size = next_size + ((h*d)-(next_size % (h*d))) data_np_low.resize(next_size) - data_np_low = data_np_low.reshape((h,-1,d)) + data_np_low = data_np_low.reshape((h, -1, d)) data_np_high.resize(next_size) - data_np_high = data_np_high.reshape((h,-1,d)) + data_np_high = data_np_high.reshape((h, -1, d)) edge_style = list(data['string_to_param'].values())[0].cpu().detach().numpy().tolist()[0][:1024] edge_style = (np.abs(edge_style)/np.max(np.abs(edge_style))*255).astype(np.uint8) - data_np_low = style_block(data_np_low,sequence=edge_style) - data_np_low = xor_block(data_np_low) - data_np_high = style_block(data_np_high,sequence=edge_style[::-1]) - data_np_high = xor_block(data_np_high) + data_np_low = style_block(data_np_low, sequence=edge_style) + data_np_low = xor_block(data_np_low) + data_np_high = style_block(data_np_high, sequence=edge_style[::-1]) + data_np_high = xor_block(data_np_high) - im_low = Image.fromarray(data_np_low,mode='RGB') - im_high = Image.fromarray(data_np_high,mode='RGB') + im_low = Image.fromarray(data_np_low, mode='RGB') + im_high = Image.fromarray(data_np_high, mode='RGB') - background = Image.new('RGB',(image.size[0]+im_low.size[0]+im_high.size[0]+2,image.size[1]),(0,0,0)) - background.paste(im_low,(0,0)) - background.paste(image,(im_low.size[0]+1,0)) - background.paste(im_high,(im_low.size[0]+1+image.size[0]+1,0)) + background = Image.new('RGB', (image.size[0]+im_low.size[0]+im_high.size[0]+2, image.size[1]), (0, 0, 0)) + background.paste(im_low, (0, 0)) + background.paste(image, (im_low.size[0]+1, 0)) + background.paste(im_high, (im_low.size[0]+1+image.size[0]+1, 0)) return background -def crop_black(img,tol=0): - mask = (img>tol).all(2) - mask0,mask1 = mask.any(0),mask.any(1) - col_start,col_end = mask0.argmax(),mask.shape[1]-mask0[::-1].argmax() - row_start,row_end = mask1.argmax(),mask.shape[0]-mask1[::-1].argmax() - return img[row_start:row_end,col_start:col_end] + +def crop_black(img, tol=0): + mask = (img > tol).all(2) + mask0, mask1 = mask.any(0), mask.any(1) + col_start, col_end = mask0.argmax(), mask.shape[1]-mask0[::-1].argmax() + row_start, row_end = mask1.argmax(), mask.shape[0]-mask1[::-1].argmax() + return img[row_start:row_end, col_start:col_end] + def extract_image_data_embed(image): - d=3 - outarr = crop_black(np.array(image.convert('RGB').getdata()).reshape(image.size[1],image.size[0],d ).astype(np.uint8) ) & 0x0F - black_cols = np.where( np.sum(outarr, axis=(0,2))==0) + d = 3 + outarr = crop_black(np.array(image.convert('RGB').getdata()).reshape(image.size[1], image.size[0], d).astype(np.uint8)) & 0x0F + black_cols = np.where(np.sum(outarr, axis=(0, 2)) == 0) if black_cols[0].shape[0] < 2: print('No Image data blocks found.') return None - data_block_lower = outarr[:,:black_cols[0].min(),:].astype(np.uint8) - data_block_upper = outarr[:,black_cols[0].max()+1:,:].astype(np.uint8) + data_block_lower = outarr[:, :black_cols[0].min(), :].astype(np.uint8) + data_block_upper = outarr[:, black_cols[0].max()+1:, :].astype(np.uint8) data_block_lower = xor_block(data_block_lower) data_block_upper = xor_block(data_block_upper) - + data_block = (data_block_upper << 4) | (data_block_lower) data_block = data_block.flatten().tobytes() data = zlib.decompress(data_block) - return json.loads(data,cls=EmbeddingDecoder) + return json.loads(data, cls=EmbeddingDecoder) -def caption_image_overlay(srcimage,title,footerLeft,footerMid,footerRight,textfont=None): + +def caption_image_overlay(srcimage, title, footerLeft, footerMid, footerRight, textfont=None): from math import cos image = srcimage.copy() @@ -130,11 +142,11 @@ def caption_image_overlay(srcimage,title,footerLeft,footerMid,footerRight,textfo textfont = Roboto factor = 1.5 - gradient = Image.new('RGBA', (1,image.size[1]), color=(0,0,0,0)) + gradient = Image.new('RGBA', (1, image.size[1]), color=(0, 0, 0, 0)) for y in range(image.size[1]): mag = 1-cos(y/image.size[1]*factor) - mag = max(mag,1-cos((image.size[1]-y)/image.size[1]*factor*1.1)) - gradient.putpixel((0, y), (0,0,0,int(mag*255))) + mag = max(mag, 1-cos((image.size[1]-y)/image.size[1]*factor*1.1)) + gradient.putpixel((0, y), (0, 0, 0, int(mag*255))) image = Image.alpha_composite(image.convert('RGBA'), gradient.resize(image.size)) draw = ImageDraw.Draw(image) @@ -142,41 +154,41 @@ def caption_image_overlay(srcimage,title,footerLeft,footerMid,footerRight,textfo font = ImageFont.truetype(textfont, fontsize) padding = 10 - _,_,w, h = draw.textbbox((0,0),title,font=font) - fontsize = min( int(fontsize * (((image.size[0]*0.75)-(padding*4))/w) ), 72) + _, _, w, h = draw.textbbox((0, 0), title, font=font) + fontsize = min(int(fontsize * (((image.size[0]*0.75)-(padding*4))/w)), 72) font = ImageFont.truetype(textfont, fontsize) - _,_,w,h = draw.textbbox((0,0),title,font=font) - draw.text((padding,padding), title, anchor='lt', font=font, fill=(255,255,255,230)) + _, _, w, h = draw.textbbox((0, 0), title, font=font) + draw.text((padding, padding), title, anchor='lt', font=font, fill=(255, 255, 255, 230)) - _,_,w, h = draw.textbbox((0,0),footerLeft,font=font) - fontsize_left = min( int(fontsize * (((image.size[0]/3)-(padding))/w) ), 72) - _,_,w, h = draw.textbbox((0,0),footerMid,font=font) - fontsize_mid = min( int(fontsize * (((image.size[0]/3)-(padding))/w) ), 72) - _,_,w, h = draw.textbbox((0,0),footerRight,font=font) - fontsize_right = min( int(fontsize * (((image.size[0]/3)-(padding))/w) ), 72) + _, _, w, h = draw.textbbox((0, 0), footerLeft, font=font) + fontsize_left = min(int(fontsize * (((image.size[0]/3)-(padding))/w)), 72) + _, _, w, h = draw.textbbox((0, 0), footerMid, font=font) + fontsize_mid = min(int(fontsize * (((image.size[0]/3)-(padding))/w)), 72) + _, _, w, h = draw.textbbox((0, 0), footerRight, font=font) + fontsize_right = min(int(fontsize * (((image.size[0]/3)-(padding))/w)), 72) - font = ImageFont.truetype(textfont, min(fontsize_left,fontsize_mid,fontsize_right)) + font = ImageFont.truetype(textfont, min(fontsize_left, fontsize_mid, fontsize_right)) - draw.text((padding,image.size[1]-padding), footerLeft, anchor='ls', font=font, fill=(255,255,255,230)) - draw.text((image.size[0]/2,image.size[1]-padding), footerMid, anchor='ms', font=font, fill=(255,255,255,230)) - draw.text((image.size[0]-padding,image.size[1]-padding), footerRight, anchor='rs', font=font, fill=(255,255,255,230)) + draw.text((padding, image.size[1]-padding), footerLeft, anchor='ls', font=font, fill=(255, 255, 255, 230)) + draw.text((image.size[0]/2, image.size[1]-padding), footerMid, anchor='ms', font=font, fill=(255, 255, 255, 230)) + draw.text((image.size[0]-padding, image.size[1]-padding), footerRight, anchor='rs', font=font, fill=(255, 255, 255, 230)) return image + if __name__ == '__main__': testEmbed = Image.open('test_embedding.png') - data = extract_image_data_embed(testEmbed) assert data is not None data = embedding_from_b64(testEmbed.text['sd-ti-embedding']) assert data is not None - - image = Image.new('RGBA',(512,512),(255,255,200,255)) + + image = Image.new('RGBA', (512, 512), (255, 255, 200, 255)) cap_image = caption_image_overlay(image, 'title', 'footerLeft', 'footerMid', 'footerRight') - test_embed = {'string_to_param':{'*':torch.from_numpy(np.random.random((2, 4096)))}} + test_embed = {'string_to_param': {'*': torch.from_numpy(np.random.random((2, 4096)))}} embedded_image = insert_image_data_embed(cap_image, test_embed) @@ -191,16 +203,16 @@ if __name__ == '__main__': g = lcg() shared_random = np.array([next(g) for _ in range(100)]).astype(np.uint8).tolist() - reference_random = [253, 242, 127, 44, 157, 27, 239, 133, 38, 79, 167, 4, 177, - 95, 130, 79, 78, 14, 52, 215, 220, 194, 126, 28, 240, 179, - 160, 153, 149, 50, 105, 14, 21, 218, 199, 18, 54, 198, 193, - 38, 128, 19, 53, 195, 124, 75, 205, 12, 6, 145, 0, 28, - 30, 148, 8, 45, 218, 171, 55, 249, 97, 166, 12, 35, 0, - 41, 221, 122, 215, 170, 31, 113, 186, 97, 119, 31, 23, 185, - 66, 140, 30, 41, 37, 63, 137, 109, 216, 55, 159, 145, 82, + reference_random = [253, 242, 127, 44, 157, 27, 239, 133, 38, 79, 167, 4, 177, + 95, 130, 79, 78, 14, 52, 215, 220, 194, 126, 28, 240, 179, + 160, 153, 149, 50, 105, 14, 21, 218, 199, 18, 54, 198, 193, + 38, 128, 19, 53, 195, 124, 75, 205, 12, 6, 145, 0, 28, + 30, 148, 8, 45, 218, 171, 55, 249, 97, 166, 12, 35, 0, + 41, 221, 122, 215, 170, 31, 113, 186, 97, 119, 31, 23, 185, + 66, 140, 30, 41, 37, 63, 137, 109, 216, 55, 159, 145, 82, 204, 86, 73, 222, 44, 198, 118, 240, 97] - assert shared_random == reference_random + assert shared_random == reference_random hunna_kay_random_sum = sum(np.array([next(g) for _ in range(100000)]).astype(np.uint8).tolist()) From 10a2de644f8ea4cfade88e85d768da3480f4c9f0 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Wed, 12 Oct 2022 13:15:35 +0100 Subject: [PATCH 59/61] formatting --- .../textual_inversion/textual_inversion.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 485ef46cf..b072d7455 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -7,14 +7,14 @@ import tqdm import html import datetime -from PIL import Image,PngImagePlugin +from PIL import Image, PngImagePlugin from modules import shared, devices, sd_hijack, processing, sd_models import modules.textual_inversion.dataset -from modules.textual_inversion.image_embedding import (embedding_to_b64,embedding_from_b64, - insert_image_data_embed,extract_image_data_embed, - caption_image_overlay ) +from modules.textual_inversion.image_embedding import (embedding_to_b64, embedding_from_b64, + insert_image_data_embed, extract_image_data_embed, + caption_image_overlay) class Embedding: def __init__(self, vec, name, step=None): @@ -90,10 +90,10 @@ class EmbeddingDatabase: embed_image = Image.open(path) if 'sd-ti-embedding' in embed_image.text: data = embedding_from_b64(embed_image.text['sd-ti-embedding']) - name = data.get('name',name) + name = data.get('name', name) else: data = extract_image_data_embed(embed_image) - name = data.get('name',name) + name = data.get('name', name) else: data = torch.load(path, map_location="cpu") @@ -278,24 +278,24 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, traini shared.state.current_image = image if save_image_with_stored_embedding and os.path.exists(last_saved_file): - + last_saved_image_chunks = os.path.join(images_embeds_dir, f'{embedding_name}-{embedding.step}.png') info = PngImagePlugin.PngInfo() data = torch.load(last_saved_file) info.add_text("sd-ti-embedding", embedding_to_b64(data)) - title = "<{}>".format(data.get('name','???')) + title = "<{}>".format(data.get('name', '???')) checkpoint = sd_models.select_checkpoint() footer_left = checkpoint.model_name footer_mid = '[{}]'.format(checkpoint.hash) footer_right = '{}'.format(embedding.step) - captioned_image = caption_image_overlay(image,title,footer_left,footer_mid,footer_right) - captioned_image = insert_image_data_embed(captioned_image,data) + captioned_image = caption_image_overlay(image, title, footer_left, footer_mid, footer_right) + captioned_image = insert_image_data_embed(captioned_image, data) captioned_image.save(last_saved_image_chunks, "PNG", pnginfo=info) - + image.save(last_saved_image) last_saved_image += f", prompt: {preview_text}" From c3c8eef9fd5a0c8b26319e32ca4a19b56204e6df Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Wed, 12 Oct 2022 20:49:47 +0300 Subject: [PATCH 60/61] train: change filename processing to be more simple and configurable train: make it possible to make text files with prompts train: rework scheduler so that there's less repeating code in textual inversion and hypernets train: move epochs setting to options --- javascript/hints.js | 3 ++ modules/hypernetworks/hypernetwork.py | 40 ++++++--------- modules/shared.py | 3 ++ modules/textual_inversion/dataset.py | 49 +++++++++++++------ modules/textual_inversion/learn_schedule.py | 37 +++++++++++++- .../textual_inversion/textual_inversion.py | 35 +++++-------- modules/ui.py | 2 - 7 files changed, 106 insertions(+), 63 deletions(-) diff --git a/javascript/hints.js b/javascript/hints.js index b81c181b9..d51ee14c1 100644 --- a/javascript/hints.js +++ b/javascript/hints.js @@ -81,6 +81,9 @@ titles = { "Eta noise seed delta": "If this values is non-zero, it will be added to seed and used to initialize RNG for noises when using samplers with Eta. You can use this to produce even more variation of images, or you can use this to match images of other software if you know what you are doing.", "Do not add watermark to images": "If this option is enabled, watermark will not be added to created images. Warning: if you do not add watermark, you may be behaving in an unethical manner.", + + "Filename word regex": "This regular expression will be used extract words from filename, and they will be joined using the option below into label text used for training. Leave empty to keep filename text as it is.", + "Filename join string": "This string will be used to hoin split words into a single line if the option above is enabled.", } diff --git a/modules/hypernetworks/hypernetwork.py b/modules/hypernetworks/hypernetwork.py index 8314450ae..b6c06d49e 100644 --- a/modules/hypernetworks/hypernetwork.py +++ b/modules/hypernetworks/hypernetwork.py @@ -14,7 +14,7 @@ import torch from torch import einsum from einops import rearrange, repeat import modules.textual_inversion.dataset -from modules.textual_inversion.learn_schedule import LearnSchedule +from modules.textual_inversion.learn_schedule import LearnRateScheduler class HypernetworkModule(torch.nn.Module): @@ -223,31 +223,23 @@ def train_hypernetwork(hypernetwork_name, learn_rate, data_root, log_directory, if ititial_step > steps: return hypernetwork, filename - schedules = iter(LearnSchedule(learn_rate, steps, ititial_step)) - (learn_rate, end_step) = next(schedules) - print(f'Training at rate of {learn_rate} until step {end_step}') - - optimizer = torch.optim.AdamW(weights, lr=learn_rate) + scheduler = LearnRateScheduler(learn_rate, steps, ititial_step) + optimizer = torch.optim.AdamW(weights, lr=scheduler.learn_rate) pbar = tqdm.tqdm(enumerate(ds), total=steps - ititial_step) - for i, (x, text, cond) in pbar: + for i, entry in pbar: hypernetwork.step = i + ititial_step - if hypernetwork.step > end_step: - try: - (learn_rate, end_step) = next(schedules) - except Exception: - break - tqdm.tqdm.write(f'Training at rate of {learn_rate} until step {end_step}') - for pg in optimizer.param_groups: - pg['lr'] = learn_rate + scheduler.apply(optimizer, hypernetwork.step) + if scheduler.finished: + break if shared.state.interrupted: break with torch.autocast("cuda"): - cond = cond.to(devices.device) - x = x.to(devices.device) + cond = entry.cond.to(devices.device) + x = entry.latent.to(devices.device) loss = shared.sd_model(x.unsqueeze(0), cond)[0] del x del cond @@ -267,7 +259,7 @@ def train_hypernetwork(hypernetwork_name, learn_rate, data_root, log_directory, if hypernetwork.step > 0 and images_dir is not None and hypernetwork.step % create_image_every == 0: last_saved_image = os.path.join(images_dir, f'{hypernetwork_name}-{hypernetwork.step}.png') - preview_text = text if preview_image_prompt == "" else preview_image_prompt + preview_text = entry.cond_text if preview_image_prompt == "" else preview_image_prompt optimizer.zero_grad() shared.sd_model.cond_stage_model.to(devices.device) @@ -282,16 +274,16 @@ def train_hypernetwork(hypernetwork_name, learn_rate, data_root, log_directory, ) processed = processing.process_images(p) - image = processed.images[0] + image = processed.images[0] if len(processed.images)>0 else None if unload: shared.sd_model.cond_stage_model.to(devices.cpu) shared.sd_model.first_stage_model.to(devices.cpu) - shared.state.current_image = image - image.save(last_saved_image) - - last_saved_image += f", prompt: {preview_text}" + if image is not None: + shared.state.current_image = image + image.save(last_saved_image) + last_saved_image += f", prompt: {preview_text}" shared.state.job_no = hypernetwork.step @@ -299,7 +291,7 @@ def train_hypernetwork(hypernetwork_name, learn_rate, data_root, log_directory,

Loss: {losses.mean():.7f}
Step: {hypernetwork.step}
-Last prompt: {html.escape(text)}
+Last prompt: {html.escape(entry.cond_text)}
Last saved embedding: {html.escape(last_saved_file)}
Last saved image: {html.escape(last_saved_image)}

diff --git a/modules/shared.py b/modules/shared.py index 42e997416..e64e69fcb 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -231,6 +231,9 @@ options_templates.update(options_section(('system', "System"), { options_templates.update(options_section(('training', "Training"), { "unload_models_when_training": OptionInfo(False, "Unload VAE and CLIP from VRAM when training"), + "dataset_filename_word_regex": OptionInfo("", "Filename word regex"), + "dataset_filename_join_string": OptionInfo(" ", "Filename join string"), + "training_image_repeats_per_epoch": OptionInfo(100, "Number of repeats for a single input image per epoch; used only for displaying epoch number", gr.Number, {"precision": 0}), })) options_templates.update(options_section(('sd', "Stable Diffusion"), { diff --git a/modules/textual_inversion/dataset.py b/modules/textual_inversion/dataset.py index f61f40d30..67e90afeb 100644 --- a/modules/textual_inversion/dataset.py +++ b/modules/textual_inversion/dataset.py @@ -11,11 +11,21 @@ import tqdm from modules import devices, shared import re -re_tag = re.compile(r"[a-zA-Z][_\w\d()]+") +re_numbers_at_start = re.compile(r"^[-\d]+\s*") + + +class DatasetEntry: + def __init__(self, filename=None, latent=None, filename_text=None): + self.filename = filename + self.latent = latent + self.filename_text = filename_text + self.cond = None + self.cond_text = None class PersonalizedBase(Dataset): def __init__(self, data_root, width, height, repeats, flip_p=0.5, placeholder_token="*", model=None, device=None, template_file=None, include_cond=False): + re_word = re.compile(shared.opts.dataset_filename_word_regex) if len(shared.opts.dataset_filename_word_regex)>0 else None self.placeholder_token = placeholder_token @@ -42,9 +52,18 @@ class PersonalizedBase(Dataset): except Exception: continue + text_filename = os.path.splitext(path)[0] + ".txt" filename = os.path.basename(path) - filename_tokens = os.path.splitext(filename)[0] - filename_tokens = re_tag.findall(filename_tokens) + + if os.path.exists(text_filename): + with open(text_filename, "r", encoding="utf8") as file: + filename_text = file.read() + else: + filename_text = os.path.splitext(filename)[0] + filename_text = re.sub(re_numbers_at_start, '', filename_text) + if re_word: + tokens = re_word.findall(filename_text) + filename_text = (shared.opts.dataset_filename_join_string or "").join(tokens) npimage = np.array(image).astype(np.uint8) npimage = (npimage / 127.5 - 1.0).astype(np.float32) @@ -55,13 +74,13 @@ class PersonalizedBase(Dataset): init_latent = model.get_first_stage_encoding(model.encode_first_stage(torchdata.unsqueeze(dim=0))).squeeze() init_latent = init_latent.to(devices.cpu) - if include_cond: - text = self.create_text(filename_tokens) - cond = cond_model([text]).to(devices.cpu) - else: - cond = None + entry = DatasetEntry(filename=path, filename_text=filename_text, latent=init_latent) - self.dataset.append((init_latent, filename_tokens, cond)) + if include_cond: + entry.cond_text = self.create_text(filename_text) + entry.cond = cond_model([entry.cond_text]).to(devices.cpu) + + self.dataset.append(entry) self.length = len(self.dataset) * repeats @@ -72,10 +91,10 @@ class PersonalizedBase(Dataset): def shuffle(self): self.indexes = self.initial_indexes[torch.randperm(self.initial_indexes.shape[0])] - def create_text(self, filename_tokens): + def create_text(self, filename_text): text = random.choice(self.lines) text = text.replace("[name]", self.placeholder_token) - text = text.replace("[filewords]", ' '.join(filename_tokens)) + text = text.replace("[filewords]", filename_text) return text def __len__(self): @@ -86,7 +105,9 @@ class PersonalizedBase(Dataset): self.shuffle() index = self.indexes[i % len(self.indexes)] - x, filename_tokens, cond = self.dataset[index] + entry = self.dataset[index] - text = self.create_text(filename_tokens) - return x, text, cond + if entry.cond is None: + entry.cond_text = self.create_text(entry.filename_text) + + return entry diff --git a/modules/textual_inversion/learn_schedule.py b/modules/textual_inversion/learn_schedule.py index db7202712..2062726ad 100644 --- a/modules/textual_inversion/learn_schedule.py +++ b/modules/textual_inversion/learn_schedule.py @@ -1,6 +1,12 @@ +import tqdm -class LearnSchedule: + +class LearnScheduleIterator: def __init__(self, learn_rate, max_steps, cur_step=0): + """ + specify learn_rate as "0.001:100, 0.00001:1000, 1e-5:10000" to have lr of 0.001 until step 100, 0.00001 until 1000, 1e-5:10000 until 10000 + """ + pairs = learn_rate.split(',') self.rates = [] self.it = 0 @@ -32,3 +38,32 @@ class LearnSchedule: return self.rates[self.it - 1] else: raise StopIteration + + +class LearnRateScheduler: + def __init__(self, learn_rate, max_steps, cur_step=0, verbose=True): + self.schedules = LearnScheduleIterator(learn_rate, max_steps, cur_step) + (self.learn_rate, self.end_step) = next(self.schedules) + self.verbose = verbose + + if self.verbose: + print(f'Training at rate of {self.learn_rate} until step {self.end_step}') + + self.finished = False + + def apply(self, optimizer, step_number): + if step_number <= self.end_step: + return + + try: + (self.learn_rate, self.end_step) = next(self.schedules) + except Exception: + self.finished = True + return + + if self.verbose: + tqdm.tqdm.write(f'Training at rate of {self.learn_rate} until step {self.end_step}') + + for pg in optimizer.param_groups: + pg['lr'] = self.learn_rate + diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index c5153e4aa..fa0e33a2a 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -11,7 +11,7 @@ from PIL import Image, PngImagePlugin from modules import shared, devices, sd_hijack, processing, sd_models import modules.textual_inversion.dataset -from modules.textual_inversion.learn_schedule import LearnSchedule +from modules.textual_inversion.learn_schedule import LearnRateScheduler from modules.textual_inversion.image_embedding import (embedding_to_b64, embedding_from_b64, insert_image_data_embed, extract_image_data_embed, @@ -172,8 +172,7 @@ def create_embedding(name, num_vectors_per_token, init_text='*'): return fn - -def train_embedding(embedding_name, learn_rate, data_root, log_directory, training_width, training_height, steps, num_repeats, create_image_every, save_embedding_every, template_file, save_image_with_stored_embedding, preview_image_prompt): +def train_embedding(embedding_name, learn_rate, data_root, log_directory, training_width, training_height, steps, create_image_every, save_embedding_every, template_file, save_image_with_stored_embedding, preview_image_prompt): assert embedding_name, 'embedding not selected' shared.state.textinfo = "Initializing textual inversion training..." @@ -205,7 +204,7 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, traini shared.state.textinfo = f"Preparing dataset from {html.escape(data_root)}..." with torch.autocast("cuda"): - ds = modules.textual_inversion.dataset.PersonalizedBase(data_root=data_root, width=training_width, height=training_height, repeats=num_repeats, placeholder_token=embedding_name, model=shared.sd_model, device=devices.device, template_file=template_file) + ds = modules.textual_inversion.dataset.PersonalizedBase(data_root=data_root, width=training_width, height=training_height, repeats=shared.opts.training_image_repeats_per_epoch, placeholder_token=embedding_name, model=shared.sd_model, device=devices.device, template_file=template_file) hijack = sd_hijack.model_hijack @@ -221,32 +220,24 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, traini if ititial_step > steps: return embedding, filename - schedules = iter(LearnSchedule(learn_rate, steps, ititial_step)) - (learn_rate, end_step) = next(schedules) - print(f'Training at rate of {learn_rate} until step {end_step}') - - optimizer = torch.optim.AdamW([embedding.vec], lr=learn_rate) + scheduler = LearnRateScheduler(learn_rate, steps, ititial_step) + optimizer = torch.optim.AdamW([embedding.vec], lr=scheduler.learn_rate) pbar = tqdm.tqdm(enumerate(ds), total=steps-ititial_step) - for i, (x, text, _) in pbar: + for i, entry in pbar: embedding.step = i + ititial_step - if embedding.step > end_step: - try: - (learn_rate, end_step) = next(schedules) - except: - break - tqdm.tqdm.write(f'Training at rate of {learn_rate} until step {end_step}') - for pg in optimizer.param_groups: - pg['lr'] = learn_rate + scheduler.apply(optimizer, embedding.step) + if scheduler.finished: + break if shared.state.interrupted: break with torch.autocast("cuda"): - c = cond_model([text]) + c = cond_model([entry.cond_text]) - x = x.to(devices.device) + x = entry.latent.to(devices.device) loss = shared.sd_model(x.unsqueeze(0), c)[0] del x @@ -268,7 +259,7 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, traini if embedding.step > 0 and images_dir is not None and embedding.step % create_image_every == 0: last_saved_image = os.path.join(images_dir, f'{embedding_name}-{embedding.step}.png') - preview_text = text if preview_image_prompt == "" else preview_image_prompt + preview_text = entry.cond_text if preview_image_prompt == "" else preview_image_prompt p = processing.StableDiffusionProcessingTxt2Img( sd_model=shared.sd_model, @@ -314,7 +305,7 @@ def train_embedding(embedding_name, learn_rate, data_root, log_directory, traini

Loss: {losses.mean():.7f}
Step: {embedding.step}
-Last prompt: {html.escape(text)}
+Last prompt: {html.escape(entry.cond_text)}
Last saved embedding: {html.escape(last_saved_file)}
Last saved image: {html.escape(last_saved_image)}

diff --git a/modules/ui.py b/modules/ui.py index 2b332267f..c42535c84 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -1098,7 +1098,6 @@ def create_ui(wrap_gradio_gpu_call): training_width = gr.Slider(minimum=64, maximum=2048, step=64, label="Width", value=512) training_height = gr.Slider(minimum=64, maximum=2048, step=64, label="Height", value=512) steps = gr.Number(label='Max steps', value=100000, precision=0) - num_repeats = gr.Number(label='Number of repeats for a single input image per epoch', value=100, precision=0) create_image_every = gr.Number(label='Save an image to log directory every N steps, 0 to disable', value=500, precision=0) save_embedding_every = gr.Number(label='Save a copy of embedding to log directory every N steps, 0 to disable', value=500, precision=0) save_image_with_stored_embedding = gr.Checkbox(label='Save images with embedding in PNG chunks', value=True) @@ -1176,7 +1175,6 @@ def create_ui(wrap_gradio_gpu_call): training_width, training_height, steps, - num_repeats, create_image_every, save_embedding_every, template_file, From 698d303b04e293635bfb49c525409f3bcf671dce Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Wed, 12 Oct 2022 21:55:43 +0300 Subject: [PATCH 61/61] deepbooru: added option to use spaces or underscores deepbooru: added option to quote (\) in tags deepbooru/BLIP: write caption to file instead of image filename deepbooru/BLIP: now possible to use both for captions deepbooru: process is stopped even if an exception occurs --- modules/deepbooru.py | 65 +++++++++++++---- modules/shared.py | 2 + modules/textual_inversion/preprocess.py | 94 +++++++++++-------------- modules/ui.py | 7 +- 4 files changed, 96 insertions(+), 72 deletions(-) diff --git a/modules/deepbooru.py b/modules/deepbooru.py index 295299490..419e6a9cd 100644 --- a/modules/deepbooru.py +++ b/modules/deepbooru.py @@ -2,33 +2,44 @@ import os.path from concurrent.futures import ProcessPoolExecutor import multiprocessing import time +import re + +re_special = re.compile(r'([\\()])') def get_deepbooru_tags(pil_image): """ This method is for running only one image at a time for simple use. Used to the img2img interrogate. """ from modules import shared # prevents circular reference - create_deepbooru_process(shared.opts.interrogate_deepbooru_score_threshold, shared.opts.deepbooru_sort_alpha) - shared.deepbooru_process_return["value"] = -1 - shared.deepbooru_process_queue.put(pil_image) - while shared.deepbooru_process_return["value"] == -1: - time.sleep(0.2) - tags = shared.deepbooru_process_return["value"] - release_process() - return tags + + try: + create_deepbooru_process(shared.opts.interrogate_deepbooru_score_threshold, create_deepbooru_opts()) + return get_tags_from_process(pil_image) + finally: + release_process() -def deepbooru_process(queue, deepbooru_process_return, threshold, alpha_sort): +def create_deepbooru_opts(): + from modules import shared + + return { + "use_spaces": shared.opts.deepbooru_use_spaces, + "use_escape": shared.opts.deepbooru_escape, + "alpha_sort": shared.opts.deepbooru_sort_alpha, + } + + +def deepbooru_process(queue, deepbooru_process_return, threshold, deepbooru_opts): model, tags = get_deepbooru_tags_model() while True: # while process is running, keep monitoring queue for new image pil_image = queue.get() if pil_image == "QUIT": break else: - deepbooru_process_return["value"] = get_deepbooru_tags_from_model(model, tags, pil_image, threshold, alpha_sort) + deepbooru_process_return["value"] = get_deepbooru_tags_from_model(model, tags, pil_image, threshold, deepbooru_opts) -def create_deepbooru_process(threshold, alpha_sort): +def create_deepbooru_process(threshold, deepbooru_opts): """ Creates deepbooru process. A queue is created to send images into the process. This enables multiple images to be processed in a row without reloading the model or creating a new process. To return the data, a shared @@ -41,10 +52,23 @@ def create_deepbooru_process(threshold, alpha_sort): shared.deepbooru_process_queue = shared.deepbooru_process_manager.Queue() shared.deepbooru_process_return = shared.deepbooru_process_manager.dict() shared.deepbooru_process_return["value"] = -1 - shared.deepbooru_process = multiprocessing.Process(target=deepbooru_process, args=(shared.deepbooru_process_queue, shared.deepbooru_process_return, threshold, alpha_sort)) + shared.deepbooru_process = multiprocessing.Process(target=deepbooru_process, args=(shared.deepbooru_process_queue, shared.deepbooru_process_return, threshold, deepbooru_opts)) shared.deepbooru_process.start() +def get_tags_from_process(image): + from modules import shared + + shared.deepbooru_process_return["value"] = -1 + shared.deepbooru_process_queue.put(image) + while shared.deepbooru_process_return["value"] == -1: + time.sleep(0.2) + caption = shared.deepbooru_process_return["value"] + shared.deepbooru_process_return["value"] = -1 + + return caption + + def release_process(): """ Stops the deepbooru process to return used memory @@ -81,10 +105,15 @@ def get_deepbooru_tags_model(): return model, tags -def get_deepbooru_tags_from_model(model, tags, pil_image, threshold, alpha_sort): +def get_deepbooru_tags_from_model(model, tags, pil_image, threshold, deepbooru_opts): import deepdanbooru as dd import tensorflow as tf import numpy as np + + alpha_sort = deepbooru_opts['alpha_sort'] + use_spaces = deepbooru_opts['use_spaces'] + use_escape = deepbooru_opts['use_escape'] + width = model.input_shape[2] height = model.input_shape[1] image = np.array(pil_image) @@ -129,4 +158,12 @@ def get_deepbooru_tags_from_model(model, tags, pil_image, threshold, alpha_sort) print('\n'.join(sorted(result_tags_print, reverse=True))) - return ', '.join(result_tags_out).replace('_', ' ').replace(':', ' ') + tags_text = ', '.join(result_tags_out) + + if use_spaces: + tags_text = tags_text.replace('_', ' ') + + if use_escape: + tags_text = re.sub(re_special, r'\\\1', tags_text) + + return tags_text.replace(':', ' ') diff --git a/modules/shared.py b/modules/shared.py index e64e69fcb..78b73aae5 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -260,6 +260,8 @@ options_templates.update(options_section(('interrogate', "Interrogate Options"), "interrogate_clip_max_length": OptionInfo(48, "Interrogate: maximum description length", gr.Slider, {"minimum": 1, "maximum": 256, "step": 1}), "interrogate_deepbooru_score_threshold": OptionInfo(0.5, "Interrogate: deepbooru score threshold", gr.Slider, {"minimum": 0, "maximum": 1, "step": 0.01}), "deepbooru_sort_alpha": OptionInfo(True, "Interrogate: deepbooru sort alphabetically"), + "deepbooru_use_spaces": OptionInfo(False, "use spaces for tags in deepbooru"), + "deepbooru_escape": OptionInfo(True, "escape (\\) brackets in deepbooru (so they are used as literal brackets and not for emphasis)"), })) options_templates.update(options_section(('ui', "User interface"), { diff --git a/modules/textual_inversion/preprocess.py b/modules/textual_inversion/preprocess.py index 113cecf1d..3047bedea 100644 --- a/modules/textual_inversion/preprocess.py +++ b/modules/textual_inversion/preprocess.py @@ -10,7 +10,28 @@ from modules.shared import opts, cmd_opts if cmd_opts.deepdanbooru: import modules.deepbooru as deepbooru + def preprocess(process_src, process_dst, process_width, process_height, process_flip, process_split, process_caption, process_caption_deepbooru=False): + try: + if process_caption: + shared.interrogator.load() + + if process_caption_deepbooru: + deepbooru.create_deepbooru_process(opts.interrogate_deepbooru_score_threshold, deepbooru.create_deepbooru_opts()) + + preprocess_work(process_src, process_dst, process_width, process_height, process_flip, process_split, process_caption, process_caption_deepbooru) + + finally: + + if process_caption: + shared.interrogator.send_blip_to_ram() + + if process_caption_deepbooru: + deepbooru.release_process() + + + +def preprocess_work(process_src, process_dst, process_width, process_height, process_flip, process_split, process_caption, process_caption_deepbooru=False): width = process_width height = process_height src = os.path.abspath(process_src) @@ -25,30 +46,28 @@ def preprocess(process_src, process_dst, process_width, process_height, process_ shared.state.textinfo = "Preprocessing..." shared.state.job_count = len(files) - if process_caption: - shared.interrogator.load() - - if process_caption_deepbooru: - deepbooru.create_deepbooru_process(opts.interrogate_deepbooru_score_threshold, opts.deepbooru_sort_alpha) - def save_pic_with_caption(image, index): - if process_caption: - caption = "-" + shared.interrogator.generate_caption(image) - caption = sanitize_caption(os.path.join(dst, f"{index:05}-{subindex[0]}"), caption, ".png") - elif process_caption_deepbooru: - shared.deepbooru_process_return["value"] = -1 - shared.deepbooru_process_queue.put(image) - while shared.deepbooru_process_return["value"] == -1: - time.sleep(0.2) - caption = "-" + shared.deepbooru_process_return["value"] - caption = sanitize_caption(os.path.join(dst, f"{index:05}-{subindex[0]}"), caption, ".png") - shared.deepbooru_process_return["value"] = -1 - else: - caption = filename - caption = os.path.splitext(caption)[0] - caption = os.path.basename(caption) + caption = "" + + if process_caption: + caption += shared.interrogator.generate_caption(image) + + if process_caption_deepbooru: + if len(caption) > 0: + caption += ", " + caption += deepbooru.get_tags_from_process(image) + + filename_part = filename + filename_part = os.path.splitext(filename_part)[0] + filename_part = os.path.basename(filename_part) + + basename = f"{index:05}-{subindex[0]}-{filename_part}" + image.save(os.path.join(dst, f"{basename}.png")) + + if len(caption) > 0: + with open(os.path.join(dst, f"{basename}.txt"), "w", encoding="utf8") as file: + file.write(caption) - image.save(os.path.join(dst, f"{index:05}-{subindex[0]}{caption}.png")) subindex[0] += 1 def save_pic(image, index): @@ -93,34 +112,3 @@ def preprocess(process_src, process_dst, process_width, process_height, process_ save_pic(img, index) shared.state.nextjob() - - if process_caption: - shared.interrogator.send_blip_to_ram() - - if process_caption_deepbooru: - deepbooru.release_process() - - -def sanitize_caption(base_path, original_caption, suffix): - operating_system = platform.system().lower() - if (operating_system == "windows"): - invalid_path_characters = "\\/:*?\"<>|" - max_path_length = 259 - else: - invalid_path_characters = "/" #linux/macos - max_path_length = 1023 - caption = original_caption - for invalid_character in invalid_path_characters: - caption = caption.replace(invalid_character, "") - fixed_path_length = len(base_path) + len(suffix) - if fixed_path_length + len(caption) <= max_path_length: - return caption - caption_tokens = caption.split() - new_caption = "" - for token in caption_tokens: - last_caption = new_caption - new_caption = new_caption + token + " " - if (len(new_caption) + fixed_path_length - 1 > max_path_length): - break - print(f"\nPath will be too long. Truncated caption: {original_caption}\nto: {last_caption}", file=sys.stderr) - return last_caption.strip() diff --git a/modules/ui.py b/modules/ui.py index c42535c84..e07ee0e1d 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -1074,11 +1074,8 @@ def create_ui(wrap_gradio_gpu_call): with gr.Row(): process_flip = gr.Checkbox(label='Create flipped copies') process_split = gr.Checkbox(label='Split oversized images into two') - process_caption = gr.Checkbox(label='Use BLIP caption as filename') - if cmd_opts.deepdanbooru: - process_caption_deepbooru = gr.Checkbox(label='Use deepbooru caption as filename') - else: - process_caption_deepbooru = gr.Checkbox(label='Use deepbooru caption as filename', visible=False) + process_caption = gr.Checkbox(label='Use BLIP for caption') + process_caption_deepbooru = gr.Checkbox(label='Use deepbooru for caption', visible=True if cmd_opts.deepdanbooru else False) with gr.Row(): with gr.Column(scale=3):