diff --git a/html/reference.json b/html/reference.json index 1dbf2665c..172d0ee96 100644 --- a/html/reference.json +++ b/html/reference.json @@ -1,12 +1,14 @@ { "RunwayML SD 1.5": { - "path": "runwayml/stable-diffusion-v1-5" + "path": "runwayml/stable-diffusion-v1-5", + "preview": "runwayml--stable-diffusion-v1-5.jpg" }, "StabilityAI SD 2.1": { "path": "stabilityai/stable-diffusion-2-1-base" }, "StabilityAI SD-XL 1.0 Base": { - "path": "stabilityai/stable-diffusion-xl-base-1.0" + "path": "stabilityai/stable-diffusion-xl-base-1.0", + "preview": "stabilityai--stable-diffusion-xl-base-1.0.jpg" }, "Segmind SSD-1B": { "path": "segmind/SSD-1B" @@ -38,6 +40,6 @@ "Tsinghua UniDiffuser": { "path": "thu-ml/unidiffuser-v1", "desc": "UniDiffuser is a unified diffusion framework to fit all distributions relevant to a set of multi-modal data in one transformer. UniDiffuser is able to perform image, text, text-to-image, image-to-text, and image-text pair generation by setting proper timesteps without additional overhead.\nSpecifically, UniDiffuser employs a variation of transformer, called U-ViT, which parameterizes the joint noise prediction network. Other components perform as encoders and decoders of different modalities, including a pretrained image autoencoder from Stable Diffusion, a pretrained image ViT-B/32 CLIP encoder, a pretrained text ViT-L CLIP encoder, and a GPT-2 text decoder finetuned by ourselves.", - "preview": "unidiffuser-v1.jpg" + "preview": "thu-ml--unidiffuser-v1.jpg" } } diff --git a/models/Reference/runwayml--stable-diffusion-v1-5.jpg b/models/Reference/runwayml--stable-diffusion-v1-5.jpg new file mode 100644 index 000000000..2ebb5f9b1 Binary files /dev/null and b/models/Reference/runwayml--stable-diffusion-v1-5.jpg differ diff --git a/models/Reference/stabilityai--stable-diffusion-xl-base-1.0.jpg b/models/Reference/stabilityai--stable-diffusion-xl-base-1.0.jpg new file mode 100644 index 000000000..3a5ca4d55 Binary files /dev/null and b/models/Reference/stabilityai--stable-diffusion-xl-base-1.0.jpg differ diff --git a/models/Reference/unidiffuser-v1.jpg b/models/Reference/thu-ml--unidiffuser-v1.jpg similarity index 100% rename from models/Reference/unidiffuser-v1.jpg rename to models/Reference/thu-ml--unidiffuser-v1.jpg diff --git a/modules/sd_hijack_hypertile.py b/modules/sd_hijack_hypertile.py index 0bd73d911..6c6213a48 100644 --- a/modules/sd_hijack_hypertile.py +++ b/modules/sd_hijack_hypertile.py @@ -152,7 +152,7 @@ def context_hypertile_vae(p): log.warning(f'Hypertile VAE disabled: width={width} height={height} are not divisible by 8') return nullcontext() if vae is None: - shared.log.warning('Hypertile VAE is enabled but no VAE model was found') + # shared.log.warning('Hypertile VAE is enabled but no VAE model was found') return nullcontext() else: shared.log.info(f'Applying hypertile: vae={shared.opts.hypertile_vae_tile}') @@ -178,7 +178,7 @@ def context_hypertile_unet(p): log.warning(f'Hypertile UNet disabled: width={width} height={height} are not divisible by 8') return nullcontext() if unet is None: - shared.log.warning('Hypertile UNet is enabled but no Unet model was found') + # shared.log.warning('Hypertile UNet is enabled but no Unet model was found') return nullcontext() else: shared.log.info(f'Applying hypertile: unet={shared.opts.hypertile_unet_tile}') diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index b0fb095fe..ff48c82ac 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -252,7 +252,7 @@ class ExtraNetworksPage: if not self.is_empty(tgt): subdirs[subdir] = 1 subdirs = OrderedDict(sorted(subdirs.items())) - if shared.backend == shared.Backend.DIFFUSERS: + if shared.backend == shared.Backend.DIFFUSERS and self.name == 'model': subdirs['Reference'] = 1 subdirs[os.path.basename(shared.opts.diffusers_dir)] = 1 subdirs.move_to_end(os.path.basename(shared.opts.diffusers_dir)) @@ -314,26 +314,27 @@ class ExtraNetworksPage: return "" def find_preview_file(self, path): - fn = os.path.splitext(path)[0] - preview_extensions = ["jpg", "jpeg", "png", "webp", "tiff", "jp2"] - files = listdir(os.path.dirname(path)) - for file in [f'{fn}{mid}{ext}' for ext in preview_extensions for mid in ['.thumb.', '.preview.', '.']]: - if file in files: - return file - return 'html/card-no-preview.png' - - def find_preview(self, path): if path is None: - return self.link_preview('html/card-no-preview.png') - fn = os.path.splitext(path)[0] + return 'html/card-no-preview.png' + if shared.opts.diffusers_dir in path: + path = os.path.relpath(path, shared.opts.diffusers_dir) + ref = os.path.join(paths.models_path, 'Reference') + fn = os.path.join(ref, path.replace('models--', '').replace('\\', '/').split('/')[0]) + files = listdir(ref) + else: + files = listdir(os.path.dirname(path)) + fn = os.path.splitext(path)[0] preview_extensions = ["jpg", "jpeg", "png", "webp", "tiff", "jp2"] - files = listdir(os.path.dirname(path)) for file in [f'{fn}{mid}{ext}' for ext in preview_extensions for mid in ['.thumb.', '.', '.preview.']]: if file in files: if '.thumb.' not in file: self.missing_thumbs.append(file) - return self.link_preview(file) - return self.link_preview('html/card-no-preview.png') + return file + return 'html/card-no-preview.png' + + def find_preview(self, path): + preview_file = self.find_preview_file(path) + return self.link_preview(preview_file) def find_description(self, path, info=None): t0 = time.time() @@ -650,6 +651,8 @@ def create_ui(container, button_parent, tabname, skip_indexing = False): if ui.last_item.preview.startswith('data:'): b64str = ui.last_item.preview.split(',',1)[1] img = Image.open(io.BytesIO(base64.b64decode(b64str))) + elif hasattr(item, 'local_preview') and os.path.exists(item.local_preview): + img = item.local_preview else: img = page.find_preview_file(item.filename) lora = '' @@ -657,7 +660,7 @@ def create_ui(container, button_parent, tabname, skip_indexing = False): style = '' note = '' if not os.path.exists(item.filename): - note = f'

File is not yet saved

Target filename: {item.filename}' + note = f'
Target filename: {item.filename}' if page.title == 'Model': merge = len(list(meta.get('sd_merge_models', {}))) if merge > 0: diff --git a/modules/ui_extra_networks_checkpoints.py b/modules/ui_extra_networks_checkpoints.py index 30849c088..f31604079 100644 --- a/modules/ui_extra_networks_checkpoints.py +++ b/modules/ui_extra_networks_checkpoints.py @@ -18,14 +18,15 @@ class ExtraNetworksPageCheckpoints(ui_extra_networks.ExtraNetworksPage): reference_models = shared.readfile(os.path.join('html', 'reference.json')) for k, v in reference_models.items(): name = os.path.join(reference_dir, k) + preview = v.get('preview', v['path']) yield { "type": 'Model', "name": name, "title": name, "filename": v['path'], "search_term": self.search_terms_from_path(name), - "preview": self.find_preview(os.path.join(reference_dir, os.path.basename(v['path']))), - "local_preview": f"{os.path.splitext(name)[0]}.{shared.opts.samples_format}", + "preview": self.find_preview(os.path.join(reference_dir, preview)), + "local_preview": self.find_preview_file(os.path.join(reference_dir, preview)), "onclick": '"' + html.escape(f"""return selectReference({json.dumps(v['path'])})""") + '"', "hash": None, "mtime": 0,