add user lora tags

This commit is contained in:
Vladimir Mandic
2023-11-04 13:14:35 -04:00
parent 6e05fa865a
commit 9f5cabe95f
4 changed files with 21 additions and 10 deletions
+1
View File
@@ -61,6 +61,7 @@ Some highlights: [OpenVINO](https://github.com/vladmandic/automatic/wiki/OpenVIN
- **Extra networks**
- sort by name, size, date, etc.
- switch between *gallery* and *list* views
- add tags from user metadata (in addition to tags in model metadata) for **lora**
- faster enumeration of all networks on server startup
- **Packages**
- updated `diffusers` to 0.22.0, `transformers` to 4.34.1
@@ -16,7 +16,8 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage):
l = networks.available_networks.get(name)
try:
path, _ext = os.path.splitext(l.filename)
possible_tags = l.metadata.get('ss_tag_frequency', {}) if l.metadata is not None else {}
name = os.path.splitext(os.path.relpath(l.filename, shared.cmd_opts.lora_dir))[0]
if shared.backend == shared.Backend.ORIGINAL:
if l.sd_version == network.SdVersion.SDXL:
return None
@@ -29,6 +30,9 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage):
elif shared.sd_model_type == 'sd':
if l.sd_version == network.SdVersion.SDXL:
return None
# tags from model metedata
possible_tags = l.metadata.get('ss_tag_frequency', {}) if l.metadata is not None else {}
if isinstance(possible_tags, str):
possible_tags = {}
tags = {}
@@ -38,10 +42,7 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage):
if words[0] == '{}':
words[0] = 0
tags[' '.join(words[1:])] = words[0]
possible_tags = l.metadata.get('tags', []) if l.metadata is not None else []
for tag in possible_tags:
tags[tag] = 1
name = os.path.splitext(os.path.relpath(l.filename, shared.cmd_opts.lora_dir))[0]
item = {
"type": 'Lora',
"name": name,
@@ -52,12 +53,21 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage):
"prompt": json.dumps(f" <lora:{l.get_alias()}:{shared.opts.extra_networks_default_multiplier}>"),
"local_preview": f"{path}.{shared.opts.samples_format}",
"metadata": json.dumps(l.metadata, indent=4) if l.metadata else None,
"tags": tags,
"mtime": os.path.getmtime(l.filename),
"size": os.path.getsize(l.filename),
}
item["info"] = self.find_info(l.filename)
item["description"] = self.find_description(l.filename, item["info"]) # use existing info instead of double-read
info = self.find_info(l.filename)
item["info"] = info
item["description"] = self.find_description(l.filename, info) # use existing info instead of double-read
# tags from user metadata
possible_tags = info.get('tags', [])
if not isinstance(possible_tags, list):
possible_tags = [v for v in possible_tags.values()]
for v in possible_tags:
tags[v] = 0
item["tags"] = tags
return item
except Exception as e:
shared.log.debug(f"Extra networks error: type=lora file={name} {e}")
+1 -1
View File
@@ -199,7 +199,7 @@ table.settings-value-table td { padding: 0.4em; border: 1px solid #ccc; max-widt
.extra-network-cards .card:hover .preview { box-shadow: none; filter: grayscale(100%); }
.extra-network-cards .card:hover .overlay { background: rgba(0, 0, 0, 0.40); }
.extra-network-cards .card .overlay .tags { display: none; overflow-wrap: break-word; }
.extra-network-cards .card .overlay .tag { padding: 3px; background: rgba(70, 70, 70, 0.60); font-size: var(--text-lg); cursor: pointer; display: inline-block; margin-bottom: 4px; }
.extra-network-cards .card .overlay .tag { padding: 2px; margin: 2px; background: rgba(70, 70, 70, 0.60); font-size: var(--text-md); cursor: pointer; display: inline-block; }
.extra-network-cards .card .actions > span { padding: 4px; }
.extra-network-cards .card .actions > span:hover { color: var(--highlight-color); }
.extra-network-cards .card:hover .actions { display: block; }
@@ -51,7 +51,7 @@ class ExtraNetworksPageTextualInversion(ui_extra_networks.ExtraNetworksPage):
"filename": embedding.filename,
"preview": self.find_preview(path),
"search_term": self.search_terms_from_path(name),
"prompt": json.dumps(os.path.splitext(embedding.name)[0]),
"prompt": json.dumps(f" {os.path.splitext(embedding.name)[0]}"),
"local_preview": f"{path}.{shared.opts.samples_format}",
"tags": tags,
"mtime": os.path.getmtime(embedding.filename),