artificialguybr commited on
Commit
b63bce5
·
1 Parent(s): d464e4a

Support multi-model LoRA generation and auto-build catalog with trigger words

Browse files
Files changed (5) hide show
  1. README.md +25 -1
  2. app.py +486 -124
  3. loras.json +1395 -204
  4. requirements.txt +8 -3
  5. scripts/update_loras_catalog.py +290 -0
README.md CHANGED
@@ -9,4 +9,28 @@ app_file: app.py
9
  pinned: false
10
  ---
11
 
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  pinned: false
10
  ---
11
 
12
+ ## artificialguybr Multi-LoRA Playground
13
+
14
+ This Space supports LoRAs across:
15
+ - SD 1.5
16
+ - SDXL
17
+ - FLUX
18
+ - Qwen-Image
19
+ - Z-Image
20
+
21
+ The app dynamically switches base pipelines based on each LoRA's `base_model`.
22
+
23
+ ## Refresh catalog automatically
24
+
25
+ Run:
26
+
27
+ ```bash
28
+ python scripts/update_loras_catalog.py --author artificialguybr --output loras.json
29
+ ```
30
+
31
+ This rebuilds `loras.json` from your Hugging Face account with:
32
+ - LoRA repo ID
33
+ - model family
34
+ - detected base model
35
+ - cover image URL (auto from repo files)
36
+ - LoRA weight filename
app.py CHANGED
@@ -1,121 +1,439 @@
1
- import gradio as gr
 
2
  import json
3
- import logging
 
 
 
 
4
  import torch
5
- from PIL import Image
6
  from diffusers import (
7
- DiffusionPipeline,
8
- EulerDiscreteScheduler,
9
  DPMSolverMultistepScheduler,
10
  DPMSolverSinglestepScheduler,
11
- KDPM2DiscreteScheduler,
12
- KDPM2AncestralDiscreteScheduler,
13
  EulerAncestralDiscreteScheduler,
 
14
  HeunDiscreteScheduler,
 
 
15
  LMSDiscreteScheduler,
16
- DEISMultistepScheduler,
17
- UniPCMultistepScheduler
18
  )
19
- import spaces
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
- # Load LoRAs from JSON file
22
- with open('loras.json', 'r') as f:
23
- loras = json.load(f)
24
 
25
- # Initialize the base model
26
- base_model = "stabilityai/stable-diffusion-xl-base-1.0"
27
- pipe = DiffusionPipeline.from_pretrained(base_model, torch_dtype=torch.float16)
28
- pipe.to("cuda")
29
 
30
- def update_selection(evt: gr.SelectData):
31
- selected_lora = loras[evt.index]
32
- new_placeholder = f"Type a prompt for {selected_lora['title']}"
33
- lora_repo = selected_lora["repo"]
34
- updated_text = f"### Selected: [{lora_repo}](https://huggingface.co/{lora_repo}) ✨"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  return (
36
- gr.update(placeholder=new_placeholder),
37
- updated_text,
38
- evt.index
 
 
 
39
  )
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  @spaces.GPU
42
- def run_lora(prompt, negative_prompt, cfg_scale, steps, selected_index, scheduler, seed, width, height, lora_scale):
43
- if selected_index is None:
44
- raise gr.Error("You must select a LoRA before proceeding.")
45
-
46
- selected_lora = loras[selected_index]
47
- lora_path = selected_lora["repo"]
48
- trigger_word = selected_lora["trigger_word"]
49
-
50
- # Load LoRA weights
51
- pipe.load_lora_weights(lora_path)
52
-
53
- # Set scheduler
54
- scheduler_config = pipe.scheduler.config
55
- if scheduler == "DPM++ 2M":
56
- pipe.scheduler = DPMSolverMultistepScheduler.from_config(scheduler_config)
57
- elif scheduler == "DPM++ 2M Karras":
58
- pipe.scheduler = DPMSolverMultistepScheduler.from_config(scheduler_config, use_karras_sigmas=True)
59
- elif scheduler == "DPM++ 2M SDE":
60
- pipe.scheduler = DPMSolverMultistepScheduler.from_config(scheduler_config, algorithm_type="sde-dpmsolver++")
61
- elif scheduler == "DPM++ 2M SDE Karras":
62
- pipe.scheduler = DPMSolverMultistepScheduler.from_config(scheduler_config, use_karras_sigmas=True, algorithm_type="sde-dpmsolver++")
63
- elif scheduler == "DPM++ SDE":
64
- pipe.scheduler = DPMSolverSinglestepScheduler.from_config(scheduler_config)
65
- elif scheduler == "DPM++ SDE Karras":
66
- pipe.scheduler = DPMSolverSinglestepScheduler.from_config(scheduler_config, use_karras_sigmas=True)
67
- elif scheduler == "DPM2":
68
- pipe.scheduler = KDPM2DiscreteScheduler.from_config(scheduler_config)
69
- elif scheduler == "DPM2 Karras":
70
- pipe.scheduler = KDPM2DiscreteScheduler.from_config(scheduler_config, use_karras_sigmas=True)
71
- elif scheduler == "DPM2 a":
72
- pipe.scheduler = KDPM2AncestralDiscreteScheduler.from_config(scheduler_config)
73
- elif scheduler == "DPM2 a Karras":
74
- pipe.scheduler = KDPM2AncestralDiscreteScheduler.from_config(scheduler_config, use_karras_sigmas=True)
75
- elif scheduler == "Euler":
76
- pipe.scheduler = EulerDiscreteScheduler.from_config(scheduler_config)
77
- elif scheduler == "Euler a":
78
- pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(scheduler_config)
79
- elif scheduler == "Heun":
80
- pipe.scheduler = HeunDiscreteScheduler.from_config(scheduler_config)
81
- elif scheduler == "LMS":
82
- pipe.scheduler = LMSDiscreteScheduler.from_config(scheduler_config)
83
- elif scheduler == "LMS Karras":
84
- pipe.scheduler = LMSDiscreteScheduler.from_config(scheduler_config, use_karras_sigmas=True)
85
- elif scheduler == "DEIS":
86
- pipe.scheduler = DEISMultistepScheduler.from_config(scheduler_config)
87
- elif scheduler == "UniPC":
88
- pipe.scheduler = UniPCMultistepScheduler.from_config(scheduler_config)
89
-
90
- # Set random seed for reproducibility
91
- generator = torch.Generator(device="cuda").manual_seed(seed)
92
-
93
- # Generate image
94
- image = pipe(
95
- prompt=f"{prompt} {trigger_word}",
96
- negative_prompt=negative_prompt,
97
- num_inference_steps=steps,
98
- guidance_scale=cfg_scale,
99
- width=width,
100
- height=height,
101
- generator=generator,
102
- cross_attention_kwargs={"scale": lora_scale},
103
- ).images[0]
104
-
105
- # Unload LoRA weights
106
- pipe.unload_lora_weights()
107
-
108
- return image
109
-
110
- with gr.Blocks(theme=gr.themes.Soft()) as app:
111
- gr.Markdown("# artificialguybr LoRA Portfolio")
 
 
 
 
 
 
 
 
 
 
 
 
112
  gr.Markdown(
113
- "### This is my portfolio. Follow me on Twitter [@artificialguybr](https://twitter.com/artificialguybr).\n"
114
- "**Note**: Generation quality may vary. For best results, adjust the parameters.\n"
115
- "Special thanks to Hugging Face for their Diffusers library and Spaces platform."
116
  )
117
 
118
- selected_index = gr.State(None)
 
119
 
120
  with gr.Row():
121
  with gr.Column(scale=2):
@@ -123,50 +441,94 @@ with gr.Blocks(theme=gr.themes.Soft()) as app:
123
  generate_button = gr.Button("Generate", variant="primary")
124
 
125
  with gr.Column(scale=1):
 
 
 
 
 
 
126
  gallery = gr.Gallery(
127
- [(item["image"], item["title"]) for item in loras],
128
  label="LoRA Gallery",
129
  allow_preview=False,
130
- columns=2
 
 
131
  )
 
132
 
133
  with gr.Row():
134
  with gr.Column():
135
- prompt_title = gr.Markdown("### Click on a LoRA in the gallery to select it")
136
  selected_info = gr.Markdown("")
137
- prompt = gr.Textbox(label="Prompt", lines=3, placeholder="Type a prompt after selecting a LoRA")
138
- negative_prompt = gr.Textbox(label="Negative Prompt", lines=2, value="low quality, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry")
 
 
 
 
 
 
139
 
140
  with gr.Column():
141
  with gr.Row():
142
- cfg_scale = gr.Slider(label="CFG Scale", minimum=1, maximum=20, step=0.5, value=7.5)
143
  steps = gr.Slider(label="Steps", minimum=1, maximum=100, step=1, value=30)
144
-
145
  with gr.Row():
146
- width = gr.Slider(label="Width", minimum=256, maximum=1536, step=64, value=1024)
147
- height = gr.Slider(label="Height", minimum=256, maximum=1536, step=64, value=1024)
148
-
149
  with gr.Row():
150
- seed = gr.Slider(label="Seed", minimum=0, maximum=2**32-1, step=1, value=0, randomize=True)
151
- lora_scale = gr.Slider(label="LoRA Scale", minimum=0, maximum=1, step=0.01, value=1)
152
-
153
  scheduler = gr.Dropdown(
154
- label="Scheduler",
155
- choices=[
156
- "DPM++ 2M", "DPM++ 2M Karras", "DPM++ 2M SDE", "DPM++ 2M SDE Karras",
157
- "DPM++ SDE", "DPM++ SDE Karras", "DPM2", "DPM2 Karras", "DPM2 a", "DPM2 a Karras",
158
- "Euler", "Euler a", "Heun", "LMS", "LMS Karras", "DEIS", "UniPC"
159
- ],
160
- value="DPM++ 2M SDE Karras"
161
  )
162
 
163
- gallery.select(update_selection, outputs=[prompt, selected_info, selected_index])
164
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
  generate_button.click(
166
  fn=run_lora,
167
- inputs=[prompt, negative_prompt, cfg_scale, steps, selected_index, scheduler, seed, width, height, lora_scale],
168
- outputs=[result]
 
 
 
 
 
 
 
 
 
 
 
169
  )
170
 
171
- app.queue()
172
  app.launch()
 
1
+ import hashlib
2
+ import inspect
3
  import json
4
+ from pathlib import Path
5
+ from typing import Any
6
+
7
+ import gradio as gr
8
+ import spaces
9
  import torch
 
10
  from diffusers import (
11
+ DEISMultistepScheduler,
 
12
  DPMSolverMultistepScheduler,
13
  DPMSolverSinglestepScheduler,
14
+ DiffusionPipeline,
 
15
  EulerAncestralDiscreteScheduler,
16
+ EulerDiscreteScheduler,
17
  HeunDiscreteScheduler,
18
+ KDPM2AncestralDiscreteScheduler,
19
+ KDPM2DiscreteScheduler,
20
  LMSDiscreteScheduler,
21
+ UniPCMultistepScheduler,
 
22
  )
23
+ from PIL import Image, ImageColor, ImageDraw, ImageFont
24
+
25
+
26
+ CATALOG_PATH = Path("loras.json")
27
+ COVER_CACHE_DIR = Path("images/auto-covers")
28
+ COVER_CACHE_DIR.mkdir(parents=True, exist_ok=True)
29
+
30
+ DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
31
+ DEFAULT_NEGATIVE = (
32
+ "low quality, bad anatomy, bad hands, text, watermark, blurry, jpeg artifacts"
33
+ )
34
+
35
+ FAMILY_LABELS = {
36
+ "all": "All",
37
+ "sdxl": "SDXL",
38
+ "sd15": "SD 1.5",
39
+ "flux": "FLUX",
40
+ "qwen-image": "Qwen-Image",
41
+ "z-image": "Z-Image",
42
+ "other": "Other",
43
+ }
44
+
45
+ FAMILY_BASE_MODELS = {
46
+ "sdxl": "stabilityai/stable-diffusion-xl-base-1.0",
47
+ "sd15": "runwayml/stable-diffusion-v1-5",
48
+ "flux": "black-forest-labs/FLUX.2-klein-9B",
49
+ "qwen-image": "Qwen/Qwen-Image-2512",
50
+ "z-image": "Tongyi-MAI/Z-Image-Turbo",
51
+ }
52
+
53
+ FAMILY_DEFAULTS = {
54
+ "sdxl": {"steps": 30, "cfg": 7.0, "width": 1024, "height": 1024},
55
+ "sd15": {"steps": 28, "cfg": 7.5, "width": 768, "height": 768},
56
+ "flux": {"steps": 30, "cfg": 3.5, "width": 1024, "height": 1024},
57
+ "qwen-image": {"steps": 28, "cfg": 4.0, "width": 1024, "height": 1024},
58
+ "z-image": {"steps": 28, "cfg": 4.0, "width": 1024, "height": 1024},
59
+ "other": {"steps": 30, "cfg": 6.0, "width": 1024, "height": 1024},
60
+ }
61
+
62
+ SCHEDULER_CHOICES = [
63
+ "Auto",
64
+ "DPM++ 2M",
65
+ "DPM++ 2M Karras",
66
+ "DPM++ 2M SDE",
67
+ "DPM++ 2M SDE Karras",
68
+ "DPM++ SDE",
69
+ "DPM++ SDE Karras",
70
+ "DPM2",
71
+ "DPM2 Karras",
72
+ "DPM2 a",
73
+ "DPM2 a Karras",
74
+ "Euler",
75
+ "Euler a",
76
+ "Heun",
77
+ "LMS",
78
+ "LMS Karras",
79
+ "DEIS",
80
+ "UniPC",
81
+ ]
82
+
83
+ SCHEDULER_MAP = {
84
+ "DPM++ 2M": lambda cfg: DPMSolverMultistepScheduler.from_config(cfg),
85
+ "DPM++ 2M Karras": lambda cfg: DPMSolverMultistepScheduler.from_config(
86
+ cfg, use_karras_sigmas=True
87
+ ),
88
+ "DPM++ 2M SDE": lambda cfg: DPMSolverMultistepScheduler.from_config(
89
+ cfg, algorithm_type="sde-dpmsolver++"
90
+ ),
91
+ "DPM++ 2M SDE Karras": lambda cfg: DPMSolverMultistepScheduler.from_config(
92
+ cfg, use_karras_sigmas=True, algorithm_type="sde-dpmsolver++"
93
+ ),
94
+ "DPM++ SDE": lambda cfg: DPMSolverSinglestepScheduler.from_config(cfg),
95
+ "DPM++ SDE Karras": lambda cfg: DPMSolverSinglestepScheduler.from_config(
96
+ cfg, use_karras_sigmas=True
97
+ ),
98
+ "DPM2": lambda cfg: KDPM2DiscreteScheduler.from_config(cfg),
99
+ "DPM2 Karras": lambda cfg: KDPM2DiscreteScheduler.from_config(
100
+ cfg, use_karras_sigmas=True
101
+ ),
102
+ "DPM2 a": lambda cfg: KDPM2AncestralDiscreteScheduler.from_config(cfg),
103
+ "DPM2 a Karras": lambda cfg: KDPM2AncestralDiscreteScheduler.from_config(
104
+ cfg, use_karras_sigmas=True
105
+ ),
106
+ "Euler": lambda cfg: EulerDiscreteScheduler.from_config(cfg),
107
+ "Euler a": lambda cfg: EulerAncestralDiscreteScheduler.from_config(cfg),
108
+ "Heun": lambda cfg: HeunDiscreteScheduler.from_config(cfg),
109
+ "LMS": lambda cfg: LMSDiscreteScheduler.from_config(cfg),
110
+ "LMS Karras": lambda cfg: LMSDiscreteScheduler.from_config(cfg, use_karras_sigmas=True),
111
+ "DEIS": lambda cfg: DEISMultistepScheduler.from_config(cfg),
112
+ "UniPC": lambda cfg: UniPCMultistepScheduler.from_config(cfg),
113
+ }
114
+
115
+
116
+ def load_lora_catalog() -> list[dict[str, Any]]:
117
+ if not CATALOG_PATH.exists():
118
+ raise RuntimeError("loras.json not found. Run scripts/update_loras_catalog.py first.")
119
+ with CATALOG_PATH.open("r", encoding="utf-8") as file:
120
+ catalog = json.load(file)
121
+ return catalog
122
+
123
+
124
+ LORAS = load_lora_catalog()
125
+ LORA_BY_REPO = {entry["repo"]: entry for entry in LORAS}
126
+
127
 
128
+ def family_to_label(family: str) -> str:
129
+ return FAMILY_LABELS.get(family, family.upper())
 
130
 
 
 
 
 
131
 
132
+ def fallback_cover_path(entry: dict[str, Any]) -> str:
133
+ key = f"{entry['repo']}::{entry.get('family', 'other')}"
134
+ digest = hashlib.sha256(key.encode("utf-8")).hexdigest()[:16]
135
+ output_path = COVER_CACHE_DIR / f"{digest}.png"
136
+ if output_path.exists():
137
+ return str(output_path)
138
+
139
+ family = entry.get("family", "other")
140
+ title = entry.get("title", "LoRA")
141
+
142
+ base_colors = {
143
+ "sdxl": ("#1d4ed8", "#38bdf8"),
144
+ "sd15": ("#0f766e", "#2dd4bf"),
145
+ "flux": ("#a21caf", "#f97316"),
146
+ "qwen-image": ("#3f3f46", "#60a5fa"),
147
+ "z-image": ("#065f46", "#22c55e"),
148
+ "other": ("#1f2937", "#9ca3af"),
149
+ }
150
+ color_a, color_b = base_colors.get(family, base_colors["other"])
151
+
152
+ width, height = 1024, 1024
153
+ image = Image.new("RGB", (width, height), color_a)
154
+ draw = ImageDraw.Draw(image)
155
+
156
+ for y in range(height):
157
+ alpha = y / max(1, height - 1)
158
+ r1, g1, b1 = ImageColor.getrgb(color_a)
159
+ r2, g2, b2 = ImageColor.getrgb(color_b)
160
+ color = (
161
+ int(r1 * (1 - alpha) + r2 * alpha),
162
+ int(g1 * (1 - alpha) + g2 * alpha),
163
+ int(b1 * (1 - alpha) + b2 * alpha),
164
+ )
165
+ draw.line([(0, y), (width, y)], fill=color)
166
+
167
+ font_title = ImageFont.load_default()
168
+ font_sub = ImageFont.load_default()
169
+ draw.text((60, 120), title[:60], fill="white", font=font_title)
170
+ draw.text((60, 180), family_to_label(family), fill="white", font=font_sub)
171
+ draw.text((60, 860), "artificialguybr", fill="white", font=font_sub)
172
+
173
+ image.save(output_path, format="PNG")
174
+ return str(output_path)
175
+
176
+
177
+ def cover_for_entry(entry: dict[str, Any]) -> str:
178
+ image_url = (entry.get("image") or "").strip()
179
+ return image_url if image_url else fallback_cover_path(entry)
180
+
181
+
182
+ def gallery_caption(entry: dict[str, Any]) -> str:
183
+ family = family_to_label(entry.get("family", "other"))
184
+ return f"{entry['title']} [{family}]"
185
+
186
+
187
+ def filter_loras(family: str, search: str) -> list[dict[str, Any]]:
188
+ term = (search or "").strip().lower()
189
+ filtered: list[dict[str, Any]] = []
190
+ for row in LORAS:
191
+ if family != "all" and row.get("family") != family:
192
+ continue
193
+ haystack = f"{row.get('title', '')} {row.get('repo', '')} {row.get('family', '')}".lower()
194
+ if term and term not in haystack:
195
+ continue
196
+ filtered.append(row)
197
+ return filtered
198
+
199
+
200
+ def build_gallery_data(filtered: list[dict[str, Any]]) -> list[tuple[str, str]]:
201
+ return [(cover_for_entry(item), gallery_caption(item)) for item in filtered]
202
+
203
+
204
+ def family_defaults(family: str) -> dict[str, Any]:
205
+ return FAMILY_DEFAULTS.get(family, FAMILY_DEFAULTS["other"])
206
+
207
+
208
+ def scheduler_interactive_for_family(family: str) -> bool:
209
+ return family in {"sdxl", "sd15"}
210
+
211
+
212
+ def refresh_gallery(family: str, search: str):
213
+ filtered = filter_loras(family, search)
214
+ gallery_items = build_gallery_data(filtered)
215
+ repos = [item["repo"] for item in filtered]
216
+ count_text = f"### {len(filtered)} LoRAs found"
217
+
218
  return (
219
+ gr.update(value=gallery_items),
220
+ repos,
221
+ gr.update(value=""),
222
+ gr.update(value=""),
223
+ count_text,
224
+ None,
225
  )
226
 
227
+
228
+ def update_selection(evt: gr.SelectData, filtered_repos: list[str]):
229
+ if evt.index is None or evt.index >= len(filtered_repos):
230
+ return (
231
+ gr.update(),
232
+ gr.update(value=""),
233
+ None,
234
+ gr.update(),
235
+ gr.update(),
236
+ gr.update(),
237
+ gr.update(),
238
+ gr.update(),
239
+ gr.update(),
240
+ )
241
+
242
+ selected_repo = filtered_repos[evt.index]
243
+ selected = LORA_BY_REPO[selected_repo]
244
+ family = selected.get("family", "other")
245
+ defaults = family_defaults(family)
246
+ base_model = selected.get("base_model") or FAMILY_BASE_MODELS.get(family, "")
247
+ trigger = (selected.get("trigger_word") or "").strip()
248
+
249
+ placeholder = f"Type your prompt for {selected['title']}"
250
+ if trigger:
251
+ placeholder += f" (trigger: {trigger})"
252
+
253
+ info = (
254
+ f"### Selected: [{selected_repo}](https://huggingface.co/{selected_repo})\n"
255
+ f"- Family: **{family_to_label(family)}**\n"
256
+ f"- Base model: `{base_model or 'Unknown'}`\n"
257
+ f"- Weight: `{selected.get('weight_name') or 'auto'}`"
258
+ )
259
+
260
+ scheduler_enabled = scheduler_interactive_for_family(family)
261
+ scheduler_value = "DPM++ 2M SDE Karras" if scheduler_enabled else "Auto"
262
+
263
+ return (
264
+ gr.update(placeholder=placeholder),
265
+ info,
266
+ selected_repo,
267
+ gr.update(value=defaults["steps"]),
268
+ gr.update(value=defaults["cfg"]),
269
+ gr.update(value=defaults["width"]),
270
+ gr.update(value=defaults["height"]),
271
+ gr.update(value=scheduler_value, interactive=scheduler_enabled),
272
+ gr.update(value=1.0),
273
+ )
274
+
275
+
276
+ CURRENT_PIPE: DiffusionPipeline | None = None
277
+ CURRENT_BASE_MODEL = ""
278
+ CURRENT_LOADED_REPO = ""
279
+
280
+
281
+ def pick_dtype_for_family(family: str) -> torch.dtype:
282
+ if DEVICE != "cuda":
283
+ return torch.float32
284
+ if family in {"flux", "qwen-image", "z-image"}:
285
+ return torch.bfloat16
286
+ return torch.float16
287
+
288
+
289
+ def load_pipeline(base_model: str, family: str) -> DiffusionPipeline:
290
+ global CURRENT_PIPE, CURRENT_BASE_MODEL, CURRENT_LOADED_REPO
291
+ if CURRENT_PIPE is not None and CURRENT_BASE_MODEL == base_model:
292
+ return CURRENT_PIPE
293
+
294
+ if CURRENT_PIPE is not None:
295
+ del CURRENT_PIPE
296
+ CURRENT_PIPE = None
297
+ CURRENT_BASE_MODEL = ""
298
+ CURRENT_LOADED_REPO = ""
299
+ if torch.cuda.is_available():
300
+ torch.cuda.empty_cache()
301
+
302
+ dtype = pick_dtype_for_family(family)
303
+ pipe = DiffusionPipeline.from_pretrained(base_model, torch_dtype=dtype)
304
+
305
+ if DEVICE == "cuda":
306
+ pipe = pipe.to("cuda")
307
+ if hasattr(pipe, "enable_attention_slicing"):
308
+ pipe.enable_attention_slicing()
309
+ if hasattr(pipe, "enable_vae_slicing"):
310
+ pipe.enable_vae_slicing()
311
+
312
+ CURRENT_PIPE = pipe
313
+ CURRENT_BASE_MODEL = base_model
314
+ return pipe
315
+
316
+
317
+ def apply_scheduler(pipe: DiffusionPipeline, scheduler_name: str, family: str) -> None:
318
+ if scheduler_name == "Auto":
319
+ return
320
+ if family not in {"sdxl", "sd15"}:
321
+ return
322
+ if not hasattr(pipe, "scheduler"):
323
+ return
324
+ try:
325
+ scheduler_builder = SCHEDULER_MAP.get(scheduler_name)
326
+ if scheduler_builder:
327
+ pipe.scheduler = scheduler_builder(pipe.scheduler.config)
328
+ except Exception:
329
+ pass
330
+
331
+
332
+ def build_prompt(prompt: str, trigger_word: str) -> str:
333
+ prompt = (prompt or "").strip()
334
+ trigger_word = (trigger_word or "").strip()
335
+ if not prompt and not trigger_word:
336
+ return ""
337
+ if prompt and trigger_word:
338
+ return f"{prompt}, {trigger_word}"
339
+ return prompt or trigger_word
340
+
341
+
342
+ def round_dim(value: float | int) -> int:
343
+ dim = int(value)
344
+ return max(256, (dim // 8) * 8)
345
+
346
+
347
  @spaces.GPU
348
+ def run_lora(
349
+ prompt: str,
350
+ negative_prompt: str,
351
+ cfg_scale: float,
352
+ steps: int,
353
+ selected_repo: str,
354
+ scheduler_name: str,
355
+ seed: int,
356
+ width: int,
357
+ height: int,
358
+ lora_scale: float,
359
+ ):
360
+ global CURRENT_LOADED_REPO
361
+
362
+ if not selected_repo:
363
+ raise gr.Error("Select a LoRA from the gallery before generating.")
364
+
365
+ selected = LORA_BY_REPO.get(selected_repo)
366
+ if not selected:
367
+ raise gr.Error("Selected LoRA is not in the loaded catalog.")
368
+
369
+ family = selected.get("family", "other")
370
+ base_model = selected.get("base_model") or FAMILY_BASE_MODELS.get(family)
371
+ if not base_model:
372
+ raise gr.Error(f"No base model configured for {selected_repo}.")
373
+
374
+ full_prompt = build_prompt(prompt, selected.get("trigger_word", ""))
375
+ if not full_prompt:
376
+ raise gr.Error("Prompt cannot be empty.")
377
+
378
+ pipe = load_pipeline(base_model, family)
379
+ apply_scheduler(pipe, scheduler_name, family)
380
+
381
+ if CURRENT_LOADED_REPO and CURRENT_LOADED_REPO != selected_repo:
382
+ try:
383
+ pipe.unload_lora_weights()
384
+ except Exception:
385
+ pass
386
+
387
+ load_kwargs = {}
388
+ weight_name = (selected.get("weight_name") or "").strip()
389
+ if weight_name:
390
+ load_kwargs["weight_name"] = weight_name
391
+ pipe.load_lora_weights(selected_repo, **load_kwargs)
392
+ CURRENT_LOADED_REPO = selected_repo
393
+
394
+ params = inspect.signature(pipe.__call__).parameters
395
+ kwargs: dict[str, Any] = {"prompt": full_prompt}
396
+
397
+ if "num_inference_steps" in params:
398
+ kwargs["num_inference_steps"] = int(steps)
399
+ if "guidance_scale" in params:
400
+ kwargs["guidance_scale"] = float(cfg_scale)
401
+ if "width" in params:
402
+ kwargs["width"] = round_dim(width)
403
+ if "height" in params:
404
+ kwargs["height"] = round_dim(height)
405
+
406
+ if "negative_prompt" in params and negative_prompt:
407
+ kwargs["negative_prompt"] = negative_prompt
408
+ elif "negative_prompt" in params and family in {"sdxl", "sd15"}:
409
+ kwargs["negative_prompt"] = DEFAULT_NEGATIVE
410
+
411
+ if "cross_attention_kwargs" in params:
412
+ kwargs["cross_attention_kwargs"] = {"scale": float(lora_scale)}
413
+ elif "joint_attention_kwargs" in params:
414
+ kwargs["joint_attention_kwargs"] = {"scale": float(lora_scale)}
415
+ elif "lora_scale" in params:
416
+ kwargs["lora_scale"] = float(lora_scale)
417
+
418
+ generator_device = "cuda" if DEVICE == "cuda" else "cpu"
419
+ kwargs["generator"] = torch.Generator(device=generator_device).manual_seed(int(seed))
420
+
421
+ result = pipe(**kwargs)
422
+ return result.images[0]
423
+
424
+
425
+ INITIAL_FAMILY = "all"
426
+ INITIAL_FILTERED = filter_loras(INITIAL_FAMILY, "")
427
+
428
+ with gr.Blocks(theme=gr.themes.Soft(), css_paths="custom.css") as app:
429
+ gr.Markdown("# artificialguybr Multi-LoRA Playground")
430
  gr.Markdown(
431
+ "Generate images with LoRAs across SD 1.5, SDXL, FLUX, Qwen-Image and Z-Image. "
432
+ "Pick a LoRA from the gallery, write a prompt and generate."
 
433
  )
434
 
435
+ selected_repo = gr.State(None)
436
+ filtered_repos = gr.State([item["repo"] for item in INITIAL_FILTERED])
437
 
438
  with gr.Row():
439
  with gr.Column(scale=2):
 
441
  generate_button = gr.Button("Generate", variant="primary")
442
 
443
  with gr.Column(scale=1):
444
+ family_filter = gr.Dropdown(
445
+ label="Model Family",
446
+ choices=[(label, key) for key, label in FAMILY_LABELS.items()],
447
+ value=INITIAL_FAMILY,
448
+ )
449
+ search_box = gr.Textbox(label="Search LoRA", placeholder="Type a repo or style name")
450
  gallery = gr.Gallery(
451
+ value=build_gallery_data(INITIAL_FILTERED),
452
  label="LoRA Gallery",
453
  allow_preview=False,
454
+ columns=2,
455
+ rows=8,
456
+ height=700,
457
  )
458
+ catalog_stats = gr.Markdown(f"### {len(INITIAL_FILTERED)} LoRAs found")
459
 
460
  with gr.Row():
461
  with gr.Column():
 
462
  selected_info = gr.Markdown("")
463
+ prompt = gr.Textbox(
464
+ label="Prompt", lines=3, placeholder="Select a LoRA in the gallery first"
465
+ )
466
+ negative_prompt = gr.Textbox(
467
+ label="Negative Prompt",
468
+ lines=2,
469
+ value=DEFAULT_NEGATIVE,
470
+ )
471
 
472
  with gr.Column():
473
  with gr.Row():
474
+ cfg_scale = gr.Slider(label="CFG Scale", minimum=1, maximum=20, step=0.5, value=7.0)
475
  steps = gr.Slider(label="Steps", minimum=1, maximum=100, step=1, value=30)
 
476
  with gr.Row():
477
+ width = gr.Slider(label="Width", minimum=256, maximum=1536, step=8, value=1024)
478
+ height = gr.Slider(label="Height", minimum=256, maximum=1536, step=8, value=1024)
 
479
  with gr.Row():
480
+ seed = gr.Slider(label="Seed", minimum=0, maximum=2**32 - 1, step=1, value=0, randomize=True)
481
+ lora_scale = gr.Slider(label="LoRA Scale", minimum=0, maximum=1.5, step=0.01, value=1.0)
 
482
  scheduler = gr.Dropdown(
483
+ label="Scheduler (SD only)",
484
+ choices=SCHEDULER_CHOICES,
485
+ value="Auto",
486
+ interactive=False,
 
 
 
487
  )
488
 
489
+ family_filter.change(
490
+ fn=refresh_gallery,
491
+ inputs=[family_filter, search_box],
492
+ outputs=[gallery, filtered_repos, prompt, selected_info, catalog_stats, selected_repo],
493
+ )
494
+ search_box.change(
495
+ fn=refresh_gallery,
496
+ inputs=[family_filter, search_box],
497
+ outputs=[gallery, filtered_repos, prompt, selected_info, catalog_stats, selected_repo],
498
+ )
499
+
500
+ gallery.select(
501
+ fn=update_selection,
502
+ inputs=[filtered_repos],
503
+ outputs=[
504
+ prompt,
505
+ selected_info,
506
+ selected_repo,
507
+ steps,
508
+ cfg_scale,
509
+ width,
510
+ height,
511
+ scheduler,
512
+ lora_scale,
513
+ ],
514
+ )
515
+
516
  generate_button.click(
517
  fn=run_lora,
518
+ inputs=[
519
+ prompt,
520
+ negative_prompt,
521
+ cfg_scale,
522
+ steps,
523
+ selected_repo,
524
+ scheduler,
525
+ seed,
526
+ width,
527
+ height,
528
+ lora_scale,
529
+ ],
530
+ outputs=[result],
531
  )
532
 
533
+ app.queue(max_size=20)
534
  app.launch()
loras.json CHANGED
@@ -1,206 +1,1397 @@
1
  [
2
  {
3
- "image": "images/7859340.jpeg",
4
- "title": "Amigurami Crochet",
5
- "repo": "artificialguybr/amigurami-redmond-amigurami-crochet-sd-xl-lora",
6
- "trigger_word": "Amigurami, Crochet, "
7
- },
8
- {
9
- "image": "images/7451495.jpeg",
10
- "title": "Selfie Photography",
11
- "repo": "artificialguybr/selfiephotographyredmond-selfie-photography-lora-for-sdxl",
12
- "trigger_word": "instagram model, discord profile picture, "
13
- },
14
- {
15
- "image": "images/00084-919617553.png",
16
- "title": "Doodle",
17
- "repo": "artificialguybr/doodle-redmond-doodle-hand-drawing-style-lora-for-sd-xl",
18
- "trigger_word": "Doodle, DoodleRedm, "
19
- },
20
- {
21
- "image": "images/00001-605731619.png",
22
- "title": "PS1 Graphics",
23
- "repo": "artificialguybr/ps1redmond-ps1-game-graphics-lora-for-sdxl",
24
- "trigger_word": "Playstation 1 Graphics, PS1 Game, "
25
- },
26
- {
27
- "image": "images/00077-1741366313.png",
28
- "title": "Pomological Watercolor",
29
- "repo": "artificialguybr/pomological-watercolor-redmond-lora-for-sd-xl",
30
- "trigger_word": "Pomological Watercolor, "
31
- },
32
- {
33
- "image": "images/00262-5054924.png",
34
- "title": "Movie Poster Redmond",
35
- "repo": "artificialguybr/movie-poster-redmond-for-sd-xl-create-movie-poster-images",
36
- "trigger_word": "Movie Poster, MoviePosterAF, "
37
- },
38
- {
39
- "image": "images/00016-2884401048.png",
40
- "title": "FilmGrain.Redmond",
41
- "repo": "artificialguybr/filmgrain-redmond-filmgrain-lora-for-sdxl",
42
- "trigger_word": "Film Grain, FilmGrainAF, "
43
- },
44
- {
45
- "image": "images/download.jpg",
46
- "title": "Studio Ghibli V2",
47
- "repo": "artificialguybr/StudioGhibli.Redmond-V2",
48
- "trigger_word": "Studio Ghibli, StdGBRedmAF "
49
- },
50
- {
51
- "image": "images/00058-3753900976.png",
52
- "title": "3DRedmond-V1",
53
- "repo": "artificialguybr/3DRedmond-V1",
54
- "trigger_word": "3D Render Style, 3DRenderAF "
55
- },
56
- {
57
- "image": "images/00568-999030895.png",
58
- "title": "TShirtDesign.Redmond V2",
59
- "repo": "artificialguybr/TshirtDesignRedmond-V2",
60
- "trigger_word": "TshirtDesignAF, T shirt design"
61
- },
62
- {
63
- "image": "images/00493-1759595235.png",
64
- "title": "ColoringBook.Redmond V2",
65
- "repo": "artificialguybr/ColoringBookRedmond-V2",
66
- "trigger_word": "ColoringBookAF, Coloring Book"
67
- },
68
- {
69
- "image": "images/00418-1769284661.png",
70
- "title": "CuteCartoon.Redmond V2",
71
- "repo": "artificialguybr/CuteCartoonRedmond-V2",
72
- "trigger_word": "CuteCartoonAF, Cute Cartoon"
73
- },
74
- {
75
- "image": "images/00354-2867629119.png",
76
- "title": "StoryBook.Redmond V2",
77
- "repo": "artificialguybr/StoryBookRedmond-V2",
78
- "trigger_word": "KidsRedmAF, Kids Book"
79
- },
80
- {
81
- "image": "images/00279-913323466.png",
82
- "title": "AnalogRedmond V2",
83
- "repo": "artificialguybr/analogredmond-v2",
84
- "trigger_word": "AnalogRedmAF, Analog"
85
- },
86
- {
87
- "image": "images/00207-2331126365.png",
88
- "title": "LineAniRedmond V2",
89
- "repo": "artificialguybr/LineAniRedmond-LinearMangaSDXL-V2",
90
- "trigger_word": "LineAniAF, lineart"
91
- },
92
- {
93
- "image": "images/00140-237225586.png",
94
- "title": "Logo.Redmond V2",
95
- "repo": "artificialguybr/LogoRedmond-LogoLoraForSDXL-V2",
96
- "trigger_word": "logo, logoredmaf"
97
- },
98
- {
99
- "image": "images/00086-2612310100.png",
100
- "title": "Icons.Redmond V2",
101
- "repo": "artificialguybr/IconsRedmond-IconsLoraForSDXL-V2",
102
- "trigger_word": "icons"
103
- },
104
- {
105
- "image": "images/xyz_grid-0044-3019386746.png",
106
- "title": "BetterText.Redmond",
107
- "repo": "artificialguybr/bettertextredmond",
108
- "trigger_word": ""
109
- },
110
- {
111
- "image": "images/00000-3383490575.png",
112
- "title": "Stickers.Redmond",
113
- "repo": "artificialguybr/StickersRedmond",
114
- "trigger_word": "Stickers, sticker"
115
- },
116
- {
117
- "image": "images/pixel-0017-714031916.png",
118
- "title": "Pixel Art.Redmond",
119
- "repo": "artificialguybr/PixelArtRedmond",
120
- "trigger_word": "Pixel Art, PixArFK"
121
- },
122
- {
123
- "image": "images/00138-3585231804.png",
124
- "title": "Clay Animation.Redmond",
125
- "repo": "artificialguybr/ClayAnimationRedmond",
126
- "trigger_word": "Clay Animation, Clay"
127
- },
128
- {
129
- "image": "images/00105-276344090.png",
130
- "title": "StudioGhibli.Redmond",
131
- "repo": "artificialguybr/StudioGhibliRedmond",
132
- "trigger_word": "StdGBRedmAF"
133
- },
134
- {
135
- "image": "images/00009-1364020674.png",
136
- "title": "ColoringBook.Redmond",
137
- "repo": "artificialguybr/ColoringBookRedmond",
138
- "trigger_word": "ColoringBookAF"
139
- },
140
- {
141
- "image": "images/00000-952257978.png",
142
- "title": "CuteCartoon.Redmond",
143
- "repo": "artificialguybr/CuteCartoonRedmond",
144
- "trigger_word": "ExCRedmAF"
145
- },
146
- {
147
- "image": "images/00033-427842759.png",
148
- "title": "CuteFruits.Redmond",
149
- "repo": "artificialguybr/CuteFruitsRedmond",
150
- "trigger_word": "CtFruitsRedmAF"
151
- },
152
- {
153
- "image": "images/00097-1339429505.png",
154
- "title": "TShirtDesign.Redmond",
155
- "repo": "artificialguybr/TshirtDesignRedmond",
156
- "trigger_word": "TshirtDesignAF"
157
- },
158
- {
159
- "image": "images/00162-1569823442.png",
160
- "title": "StoryBook.Redmond",
161
- "repo": "artificialguybr/StoryBookRedmond",
162
- "trigger_word": "KidsRedmAF"
163
- },
164
- {
165
- "image": "images/00155-2390220548.png",
166
- "title": "StoryBook.Redmond:Unbound",
167
- "repo": "artificialguybr/StorybookRedmondUnbound",
168
- "trigger_word": "KidsRedmAF"
169
- },
170
- {
171
- "image": "images/00147-2176616884.png",
172
- "title": "AnalogRedmond",
173
- "repo": "artificialguybr/analogredmond",
174
- "trigger_word": "AnalogRedmAF"
175
- },
176
- {
177
- "image": "images/00001-940815997.png",
178
- "title": "LineAniRedmond",
179
- "repo": "artificialguybr/LineAniRedmond-LinearMangaSDXL",
180
- "trigger_word": "LineAniAF"
181
- },
182
- {
183
- "image": "images/00341-3123838196.png",
184
- "title": "ToyRedmond",
185
- "repo": "artificialguybr/ToyRedmond-ToyLoraForSDXL10",
186
- "trigger_word": "FnkRedmAF"
187
- },
188
- {
189
- "image": "images/00120-4278840802.png",
190
- "title": "LogoRedmond",
191
- "repo": "artificialguybr/LogoRedmond-LogoLoraForSDXL",
192
- "trigger_word": "LogoRedAF"
193
- },
194
- {
195
- "image": "images/00615-157502082.png",
196
- "title": "IconsRedmond",
197
- "repo": "artificialguybr/IconsRedmond-IconsLoraForSDXL",
198
- "trigger_word": "icredm"
199
- },
200
- {
201
- "image": "images/view3-0000.png",
202
- "title": "360Redmond",
203
- "repo": "artificialguybr/360Redmond",
204
- "trigger_word": "360 view, 360"
205
- }
206
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  [
2
  {
3
+ "title": "360view Redmond Fluxklein9b",
4
+ "repo": "artificialguybr/360VIEW-REDMOND-FLUXKLEIN9B",
5
+ "trigger_word": "",
6
+ "family": "flux",
7
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
8
+ "image": "https://huggingface.co/artificialguybr/360VIEW-REDMOND-FLUXKLEIN9B/resolve/main/images/360viewer_flux_klein_9b_001.png",
9
+ "weight_name": "[FLUX.2.Klein]360viewer_Redmond.safetensors"
10
+ },
11
+ {
12
+ "title": "3drenderstyle Redmond Fluxklein9b",
13
+ "repo": "artificialguybr/3DRenderStyle-REDMOND-FLUXKLEIN9B",
14
+ "trigger_word": "3D Render Style, 3DRenderAF",
15
+ "family": "flux",
16
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
17
+ "image": "https://huggingface.co/artificialguybr/3DRenderStyle-REDMOND-FLUXKLEIN9B/resolve/main/images/001.png",
18
+ "weight_name": "[FLUX.2.Klein]3DRenderStyle_Redmond.safetensors"
19
+ },
20
+ {
21
+ "title": "Albumcover Redmond Fluxklein",
22
+ "repo": "artificialguybr/ALBUMCOVER-REDMOND-FLUXKLEIN",
23
+ "trigger_word": "ALBUM COVER",
24
+ "family": "flux",
25
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
26
+ "image": "https://huggingface.co/artificialguybr/ALBUMCOVER-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
27
+ "weight_name": "[FLUX.2.Klein]AlbumCover_Redmond.safetensors"
28
+ },
29
+ {
30
+ "title": "Analog Redmond Fluxklein9b",
31
+ "repo": "artificialguybr/ANALOG-REDMOND-FLUXKLEIN9B",
32
+ "trigger_word": "AnalogRedmAF, Analog",
33
+ "family": "flux",
34
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
35
+ "image": "https://huggingface.co/artificialguybr/ANALOG-REDMOND-FLUXKLEIN9B/resolve/main/images/1771309336463__000000750_0.jpg",
36
+ "weight_name": "[FLUX.2.Klein]Analog_Redmond.safetensors"
37
+ },
38
+ {
39
+ "title": "Anime Redmond Fluxklein",
40
+ "repo": "artificialguybr/ANIME-REDMOND-FLUXKLEIN",
41
+ "trigger_word": "Anime, AnimedREDAF",
42
+ "family": "flux",
43
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
44
+ "image": "https://huggingface.co/artificialguybr/ANIME-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
45
+ "weight_name": "[FLUX.2.Klein]Anime_Redmond.safetensors"
46
+ },
47
+ {
48
+ "title": "Bookcover Redmond Fluxklein",
49
+ "repo": "artificialguybr/BOOKCOVER-REDMOND-FLUXKLEIN",
50
+ "trigger_word": "Book Cover",
51
+ "family": "flux",
52
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
53
+ "image": "https://huggingface.co/artificialguybr/BOOKCOVER-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
54
+ "weight_name": "[FLUX.2.Klein]BookCover_Redmond.safetensors"
55
+ },
56
+ {
57
+ "title": "Cinematic Filmstill Redmond Fluxklein9b",
58
+ "repo": "artificialguybr/CINEMATIC-FILMSTILL-REDMOND-FLUXKLEIN9B",
59
+ "trigger_word": "Cinematic, Film Still",
60
+ "family": "flux",
61
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
62
+ "image": "https://huggingface.co/artificialguybr/CINEMATIC-FILMSTILL-REDMOND-FLUXKLEIN9B/resolve/main/images/001.png",
63
+ "weight_name": "[FLUX.2.Klein]FilmStill_Redmond.safetensors"
64
+ },
65
+ {
66
+ "title": "Clayanimation Redmond Fluxklein9b",
67
+ "repo": "artificialguybr/ClayAnimation-Redmond-FLUXKLEIN9B",
68
+ "trigger_word": "Clay animation, Clay",
69
+ "family": "flux",
70
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
71
+ "image": "https://huggingface.co/artificialguybr/ClayAnimation-Redmond-FLUXKLEIN9B/resolve/main/images/001.png",
72
+ "weight_name": "[FLUX.2.Klein]ClayAnimation_Redmond.safetensors"
73
+ },
74
+ {
75
+ "title": "Coloringbook Redmond Fluxklein9b",
76
+ "repo": "artificialguybr/COLORINGBOOK-REDMOND-FLUXKLEIN9B",
77
+ "trigger_word": "ColoringBookAF, Coloring Book",
78
+ "family": "flux",
79
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
80
+ "image": "https://huggingface.co/artificialguybr/COLORINGBOOK-REDMOND-FLUXKLEIN9B/resolve/main/images/1770764909657__000000500_0.jpg",
81
+ "weight_name": "[FLUX.2.Klein]ColoringBook_Redmond.safetensors"
82
+ },
83
+ {
84
+ "title": "Crochet Amigurumi Redmond Fluxklein",
85
+ "repo": "artificialguybr/CROCHET-AMIGURUMI-REDMOND-FLUXKLEIN",
86
+ "trigger_word": "Amigurumi, Crochet",
87
+ "family": "flux",
88
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
89
+ "image": "https://huggingface.co/artificialguybr/CROCHET-AMIGURUMI-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
90
+ "weight_name": "[FLUX.2.Klein]CrochetAmigurumi_Redmond.safetensors"
91
+ },
92
+ {
93
+ "title": "Cutecartoon Redmond Fluxklein9b",
94
+ "repo": "artificialguybr/CuteCartoon-Redmond-FLUXKLEIN9B",
95
+ "trigger_word": "CuteCartoonAF, Cute Cartoon",
96
+ "family": "flux",
97
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
98
+ "image": "https://huggingface.co/artificialguybr/CuteCartoon-Redmond-FLUXKLEIN9B/resolve/main/images/001.png",
99
+ "weight_name": "[FLUX.2.Klein]CuteCartoon_Redmond.safetensors"
100
+ },
101
+ {
102
+ "title": "Cutefruits Redmond Fluxklein9b",
103
+ "repo": "artificialguybr/CUTEFRUITS-REDMOND-FLUXKLEIN9B",
104
+ "trigger_word": "CtFruitsRedmAF",
105
+ "family": "flux",
106
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
107
+ "image": "https://huggingface.co/artificialguybr/CUTEFRUITS-REDMOND-FLUXKLEIN9B/resolve/main/images/001.png",
108
+ "weight_name": "[FLUX.2.Klein]CuteFruits_Redmond.safetensors"
109
+ },
110
+ {
111
+ "title": "Digitalasset Redmond Fluxklein",
112
+ "repo": "artificialguybr/DIGITALASSET-REDMOND-FLUXKLEIN",
113
+ "trigger_word": "Digital Asset",
114
+ "family": "flux",
115
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
116
+ "image": "https://huggingface.co/artificialguybr/DIGITALASSET-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
117
+ "weight_name": "[FLUX.2.Klein]DigitalAssetMedia_Redmond.safetensors"
118
+ },
119
+ {
120
+ "title": "Doodle Redmond Fluxklein9b",
121
+ "repo": "artificialguybr/Doodle-Redmond-FluxKlein9B",
122
+ "trigger_word": "Doodle, DoodleRedm",
123
+ "family": "flux",
124
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
125
+ "image": "https://huggingface.co/artificialguybr/Doodle-Redmond-FluxKlein9B/resolve/main/images/001.png",
126
+ "weight_name": "[FLUX.2.Klein]Doodle_Redmond.safetensors"
127
+ },
128
+ {
129
+ "title": "Doubleexposure Redmond Fluxklein",
130
+ "repo": "artificialguybr/DOUBLEEXPOSURE-REDMOND-FLUXKLEIN",
131
+ "trigger_word": "Double Exposure, DoubleExposureREDAF",
132
+ "family": "flux",
133
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
134
+ "image": "https://huggingface.co/artificialguybr/DOUBLEEXPOSURE-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
135
+ "weight_name": "[FLUX.2.Klein]DoubleExposure_Redmond.safetensors"
136
+ },
137
+ {
138
+ "title": "Filmgrain Redmond Fluxklein9b",
139
+ "repo": "artificialguybr/FILMGRAIN-REDMOND-FLUXKLEIN9B",
140
+ "trigger_word": "FILMGRAIN, FilmGrainAF",
141
+ "family": "flux",
142
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
143
+ "image": "https://huggingface.co/artificialguybr/FILMGRAIN-REDMOND-FLUXKLEIN9B/resolve/main/images/001.png",
144
+ "weight_name": "[FLUX.2.Klein]FilmGrain_Redmond.safetensors"
145
+ },
146
+ {
147
+ "title": "Fisheye Redmond Fluxklein",
148
+ "repo": "artificialguybr/FISHEYE-REDMOND-FLUXKLEIN",
149
+ "trigger_word": "Fish Eye Lens, Fish eye camera",
150
+ "family": "flux",
151
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
152
+ "image": "https://huggingface.co/artificialguybr/FISHEYE-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
153
+ "weight_name": "[FLUX.2.Klein]FishEye_Redmond.safetensors"
154
+ },
155
+ {
156
+ "title": "Fluent Emoji Redmond Fluxklein9b",
157
+ "repo": "artificialguybr/FLUENT-EMOJI-REDMOND-FLUXKLEIN9B",
158
+ "trigger_word": "EMOJI",
159
+ "family": "flux",
160
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
161
+ "image": "https://huggingface.co/artificialguybr/FLUENT-EMOJI-REDMOND-FLUXKLEIN9B/resolve/main/images/001.png",
162
+ "weight_name": "[FLUX.2.Klein]Emoji_Redmond.safetensors"
163
+ },
164
+ {
165
+ "title": "Icons Redmond Fluxklein9b",
166
+ "repo": "artificialguybr/ICONS-REDMOND-FLUXKLEIN9B",
167
+ "trigger_word": "ICONS, ICREDM",
168
+ "family": "flux",
169
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
170
+ "image": "https://huggingface.co/artificialguybr/ICONS-REDMOND-FLUXKLEIN9B/resolve/main/images/001.png",
171
+ "weight_name": "[FLUX.2.Klein]Icons_Redmond.safetensors"
172
+ },
173
+ {
174
+ "title": "Isometric Redmond Fluxklein9b",
175
+ "repo": "artificialguybr/ISOMETRIC-REDMOND-FLUXKLEIN9B",
176
+ "trigger_word": "ISOMETRIC, ISOMETRICREDM",
177
+ "family": "flux",
178
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
179
+ "image": "https://huggingface.co/artificialguybr/ISOMETRIC-REDMOND-FLUXKLEIN9B/resolve/main/images/002.png",
180
+ "weight_name": "[FLUX.2.Klein]Isometric_Redmond.safetensors"
181
+ },
182
+ {
183
+ "title": "Kidsbook Redmond Fluxklein9b",
184
+ "repo": "artificialguybr/KidsBook-Redmond-FLUXKLEIN9B",
185
+ "trigger_word": "KidsRedmAF, Kids Book",
186
+ "family": "flux",
187
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
188
+ "image": "https://huggingface.co/artificialguybr/KidsBook-Redmond-FLUXKLEIN9B/resolve/main/images/001.png",
189
+ "weight_name": "[FLUX.2.Klein]Kids_Redmond.safetensors"
190
+ },
191
+ {
192
+ "title": "Lineartanime Redmond Flux9bklein",
193
+ "repo": "artificialguybr/LineartAnime-Redmond-Flux9BKlein",
194
+ "trigger_word": "Lineart, LineAniAF",
195
+ "family": "flux",
196
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
197
+ "image": "https://huggingface.co/artificialguybr/LineartAnime-Redmond-Flux9BKlein/resolve/main/images/1770525116876__000001000_1.jpg",
198
+ "weight_name": "[FLUX.2.Klein]LineArt_Redmond.safetensors"
199
+ },
200
+ {
201
+ "title": "Logo Redmond Fluxklein9b",
202
+ "repo": "artificialguybr/Logo-Redmond-FLUXKLEIN9B",
203
+ "trigger_word": "LOGO, logoredmaf",
204
+ "family": "flux",
205
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
206
+ "image": "https://huggingface.co/artificialguybr/Logo-Redmond-FLUXKLEIN9B/resolve/main/images/1770484851169__000000500_2.jpg",
207
+ "weight_name": "[FLUX.2.Klein]Logo_Redmond.safetensors"
208
+ },
209
+ {
210
+ "title": "Mockups Redmond Fluxklein",
211
+ "repo": "artificialguybr/MOCKUPS-REDMOND-FLUXKLEIN",
212
+ "trigger_word": "Mockup",
213
+ "family": "flux",
214
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
215
+ "image": "https://huggingface.co/artificialguybr/MOCKUPS-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
216
+ "weight_name": "[FLUX.2.Klein]Mockups_Redmond.safetensors"
217
+ },
218
+ {
219
+ "title": "Phonecasecover Redmond Fluxklein",
220
+ "repo": "artificialguybr/PHONECASECOVER-REDMOND-FLUXKLEIN",
221
+ "trigger_word": "Phone Case Cover",
222
+ "family": "flux",
223
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
224
+ "image": "https://huggingface.co/artificialguybr/PHONECASECOVER-REDMOND-FLUXKLEIN/resolve/main/images/002.png",
225
+ "weight_name": "[FLUX.2.Klein]PhoneCaseCovers_Redmond.safetensors"
226
+ },
227
+ {
228
+ "title": "Pixelart Redmond Fluxklein9b",
229
+ "repo": "artificialguybr/PIXELART-REDMOND-FLUXKLEIN9B",
230
+ "trigger_word": "Pixel Art, PixArFK",
231
+ "family": "flux",
232
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
233
+ "image": "https://huggingface.co/artificialguybr/PIXELART-REDMOND-FLUXKLEIN9B/resolve/main/images/pixarfk64_flux_klein_9b_001.png",
234
+ "weight_name": "[FLUX.2.Klein]PixelArt_Redmond.safetensors"
235
+ },
236
+ {
237
+ "title": "Polaroid Redmond Fluxklein",
238
+ "repo": "artificialguybr/POLAROID-REDMOND-FLUXKLEIN",
239
+ "trigger_word": "Polaroid Photo, PolaroidRedAF",
240
+ "family": "flux",
241
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
242
+ "image": "https://huggingface.co/artificialguybr/POLAROID-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
243
+ "weight_name": "[FLUX.2.Klein]Polaroid_Redmond.safetensors"
244
+ },
245
+ {
246
+ "title": "Poster Redmond Fluxklein",
247
+ "repo": "artificialguybr/POSTER-REDMOND-FLUXKLEIN",
248
+ "trigger_word": "Poster",
249
+ "family": "flux",
250
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
251
+ "image": "https://huggingface.co/artificialguybr/POSTER-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
252
+ "weight_name": "[FLUX.2.Klein]Poster_Redmond.safetensors"
253
+ },
254
+ {
255
+ "title": "Postermovie Redmond Fluxklein",
256
+ "repo": "artificialguybr/POSTERMOVIE-REDMOND-FLUXKLEIN",
257
+ "trigger_word": "Poster Movie",
258
+ "family": "flux",
259
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
260
+ "image": "https://huggingface.co/artificialguybr/POSTERMOVIE-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
261
+ "weight_name": "[FLUX.2.Klein]PosterMovie_Redmond.safetensors"
262
+ },
263
+ {
264
+ "title": "Ps1graphics Redmond Fluxklein9b",
265
+ "repo": "artificialguybr/PS1Graphics-Redmond-FluxKlein9B",
266
+ "trigger_word": "Playstation 1 Graphics, PS1 Game",
267
+ "family": "flux",
268
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
269
+ "image": "https://huggingface.co/artificialguybr/PS1Graphics-Redmond-FluxKlein9B/resolve/main/images/001.png",
270
+ "weight_name": "[FLUX.2.Klein]PS1Screencap_Redmond.safetensors"
271
+ },
272
+ {
273
+ "title": "Snapchatselfie Redmond Fluxklein",
274
+ "repo": "artificialguybr/SNAPCHATSELFIE-REDMOND-FLUXKLEIN",
275
+ "trigger_word": "Snapchat Selfie, Snapchat pic",
276
+ "family": "flux",
277
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
278
+ "image": "https://huggingface.co/artificialguybr/SNAPCHATSELFIE-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
279
+ "weight_name": "[FLUX.2.Klein]SnapchatSelfie_Redmond.safetensors"
280
+ },
281
+ {
282
+ "title": "Stickers Redmond Flux Klein 9b",
283
+ "repo": "artificialguybr/STICKERS-REDMOND-FLUX-KLEIN-9B",
284
+ "trigger_word": "Sticker, Stickers",
285
+ "family": "flux",
286
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
287
+ "image": "https://huggingface.co/artificialguybr/STICKERS-REDMOND-FLUX-KLEIN-9B/resolve/main/images/1770738229754__000001000_0.jpg",
288
+ "weight_name": "[FLUX.2.Klein]Stickers_Redmond.safetensors"
289
+ },
290
+ {
291
+ "title": "Studioghibli Redmond Fluxklein9b",
292
+ "repo": "artificialguybr/STUDIOGHIBLI-REDMOND-FLUXKLEIN9B",
293
+ "trigger_word": "Studio Ghibli Style, StdGbRedmAF",
294
+ "family": "flux",
295
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
296
+ "image": "https://huggingface.co/artificialguybr/STUDIOGHIBLI-REDMOND-FLUXKLEIN9B/resolve/main/images/1771320507728__000000750_0.jpg",
297
+ "weight_name": "[FLUX.2.Klein]Stdgbredmaf_Redmond.safetensors"
298
+ },
299
+ {
300
+ "title": "Tshirtdesign Redmond Fluxklein9b",
301
+ "repo": "artificialguybr/TSHIRTDESIGN-REDMOND-FLUXKLEIN9B",
302
+ "trigger_word": "T shirt design, TshirtDesignAF",
303
+ "family": "flux",
304
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
305
+ "image": "https://huggingface.co/artificialguybr/TSHIRTDESIGN-REDMOND-FLUXKLEIN9B/resolve/main/images/tshirtdesign_flux_klein_9b_001.png",
306
+ "weight_name": "[FLUX.2.Klein]Tshirtdesign_Redmond.safetensors"
307
+ },
308
+ {
309
+ "title": "Xboxavatar Redmond Fluxklein",
310
+ "repo": "artificialguybr/XBOXAVATAR-REDMOND-FLUXKLEIN",
311
+ "trigger_word": "XBOX AVATAR",
312
+ "family": "flux",
313
+ "base_model": "black-forest-labs/FLUX.2-klein-9B",
314
+ "image": "https://huggingface.co/artificialguybr/XBOXAVATAR-REDMOND-FLUXKLEIN/resolve/main/images/001.png",
315
+ "weight_name": "[FLUX.2.Klein]XboxAvatar_Redmond.safetensors"
316
+ },
317
+ {
318
+ "title": "3d Redmond 2 1v 3d Render Style For Freedom Redmond Sd 2 1",
319
+ "repo": "artificialguybr/3d-redmond-2-1v-3d-render-style-for-freedom-redmond-sd-2-1",
320
+ "trigger_word": "3D Render Style",
321
+ "family": "other",
322
+ "base_model": "stabilityai/stable-diffusion-2-1-base",
323
+ "image": "https://huggingface.co/artificialguybr/3d-redmond-2-1v-3d-render-style-for-freedom-redmond-sd-2-1/resolve/main/3875393.jpeg",
324
+ "weight_name": "3DRedmond21V-FreedomRedmond-3DRenderStyle-3DRenderAF.safetensors"
325
+ },
326
+ {
327
+ "title": "Coloringbook Redmond 2 1v Coloring Book Lora For Freedomredmond Sd 2 1",
328
+ "repo": "artificialguybr/coloringbook-redmond-2-1v-coloring-book-lora-for-freedomredmond-sd-2-1",
329
+ "trigger_word": "Coloring Book",
330
+ "family": "other",
331
+ "base_model": "stabilityai/stable-diffusion-2-1-base",
332
+ "image": "https://huggingface.co/artificialguybr/coloringbook-redmond-2-1v-coloring-book-lora-for-freedomredmond-sd-2-1/resolve/main/3861082.jpeg",
333
+ "weight_name": "ColoringBookRedmond21V-FreedomRedmond-ColoringBook-ColoringBookAF.safetensors"
334
+ },
335
+ {
336
+ "title": "Stickers Redmond 2 1 Version Stickers Lora For Freedom Redmond Sd 2 1",
337
+ "repo": "artificialguybr/stickers-redmond-2-1-version-stickers-lora-for-freedom-redmond-sd-2-1",
338
+ "trigger_word": "Sticker",
339
+ "family": "other",
340
+ "base_model": "stabilityai/stable-diffusion-2-1-base",
341
+ "image": "https://huggingface.co/artificialguybr/stickers-redmond-2-1-version-stickers-lora-for-freedom-redmond-sd-2-1/resolve/main/3889372.jpeg",
342
+ "weight_name": "StickersRedmond21V-FreedomRedmond-Sticker-Stickers.safetensors"
343
+ },
344
+ {
345
+ "title": "Studioghibli Redmond 2 1v Studio Ghibli Lora For Freedom Redmond Sd 2 1",
346
+ "repo": "artificialguybr/studioghibli-redmond-2-1v-studio-ghibli-lora-for-freedom-redmond-sd-2-1",
347
+ "trigger_word": "Studio Ghibli",
348
+ "family": "other",
349
+ "base_model": "stabilityai/stable-diffusion-2-1-base",
350
+ "image": "https://huggingface.co/artificialguybr/studioghibli-redmond-2-1v-studio-ghibli-lora-for-freedom-redmond-sd-2-1/resolve/main/3877310.jpeg",
351
+ "weight_name": "StudioGhibliRedmond21V-FreedomRedmond-StudioGhibli-StdGBRedmAF.safetensors"
352
+ },
353
+ {
354
+ "title": "Tshirtdesignredmond 2 1v T Shirt Design Lora For Freedomredmond Sd 2 1",
355
+ "repo": "artificialguybr/tshirtdesignredmond-2-1v-t-shirt-design-lora-for-freedomredmond-sd-2-1",
356
+ "trigger_word": "T Shirt Design",
357
+ "family": "other",
358
+ "base_model": "stabilityai/stable-diffusion-2-1-base",
359
+ "image": "https://huggingface.co/artificialguybr/tshirtdesignredmond-2-1v-t-shirt-design-lora-for-freedomredmond-sd-2-1/resolve/main/3873574.jpeg",
360
+ "weight_name": "TShirtDesignRedmond2.1V-FreedomRedmond-TShirtDesign-TShirtDesignAF.safetensors"
361
+ },
362
+ {
363
+ "title": "360view Redmond Qwenimage",
364
+ "repo": "artificialguybr/360VIEW-REDMOND-QWENIMAGE",
365
+ "trigger_word": "360 VIEW, 360",
366
+ "family": "qwen-image",
367
+ "base_model": "Qwen/Qwen-Image-2512",
368
+ "image": "https://huggingface.co/artificialguybr/360VIEW-REDMOND-QWENIMAGE/resolve/main/images/1771337422206__000001000_0.jpg",
369
+ "weight_name": "[Qwen.Image]360viewer_Redmond.safetensors"
370
+ },
371
+ {
372
+ "title": "3drenderstyle Redmond Qwenimage",
373
+ "repo": "artificialguybr/3DRenderStyle-REDMOND-QWENIMAGE",
374
+ "trigger_word": "3D Render Style, 3DRenderAF",
375
+ "family": "qwen-image",
376
+ "base_model": "Qwen/Qwen-Image-2512",
377
+ "image": "https://huggingface.co/artificialguybr/3DRenderStyle-REDMOND-QWENIMAGE/resolve/main/images/001.png",
378
+ "weight_name": "[Qwen.Image]3DRenderStyle_Redmond.safetensors"
379
+ },
380
+ {
381
+ "title": "Albumcover Redmond Qwenimage",
382
+ "repo": "artificialguybr/ALBUMCOVER-REDMOND-QWENIMAGE",
383
+ "trigger_word": "ALBUM COVER",
384
+ "family": "qwen-image",
385
+ "base_model": "Qwen/Qwen-Image-2512",
386
+ "image": "https://huggingface.co/artificialguybr/ALBUMCOVER-REDMOND-QWENIMAGE/resolve/main/images/001.png",
387
+ "weight_name": "[Qwen.Image]AlbumCover_Redmond.safetensors"
388
+ },
389
+ {
390
+ "title": "Analog Redmond Qwenimage",
391
+ "repo": "artificialguybr/ANALOG-REDMOND-QWENIMAGE",
392
+ "trigger_word": "AnalogRedmAF, Analog",
393
+ "family": "qwen-image",
394
+ "base_model": "Qwen/Qwen-Image-2512",
395
+ "image": "https://huggingface.co/artificialguybr/ANALOG-REDMOND-QWENIMAGE/resolve/main/images/1771314987030__000001000_0.jpg",
396
+ "weight_name": "[Qwen.Image]Analog_Redmond.safetensors"
397
+ },
398
+ {
399
+ "title": "Anime Redmond Qwenimage",
400
+ "repo": "artificialguybr/ANIME-REDMOND-QWENIMAGE",
401
+ "trigger_word": "Anime, AnimedREDAF",
402
+ "family": "qwen-image",
403
+ "base_model": "Qwen/Qwen-Image-2512",
404
+ "image": "https://huggingface.co/artificialguybr/ANIME-REDMOND-QWENIMAGE/resolve/main/images/001.png",
405
+ "weight_name": "[Qwen.Image]Anime_Redmond.safetensors"
406
+ },
407
+ {
408
+ "title": "Bookcover Redmond Qwenimage",
409
+ "repo": "artificialguybr/BOOKCOVER-REDMOND-QWENIMAGE",
410
+ "trigger_word": "BOOK COVER",
411
+ "family": "qwen-image",
412
+ "base_model": "Qwen/Qwen-Image-2512",
413
+ "image": "https://huggingface.co/artificialguybr/BOOKCOVER-REDMOND-QWENIMAGE/resolve/main/images/001.png",
414
+ "weight_name": "[Qwen.Image]BookCover_Redmond.safetensors"
415
+ },
416
+ {
417
+ "title": "Cinematic Filmstill Redmond Qwenimage",
418
+ "repo": "artificialguybr/CINEMATIC-FILMSTILL-REDMOND-QWENIMAGE",
419
+ "trigger_word": "CINEMATIC, FILM STILL",
420
+ "family": "qwen-image",
421
+ "base_model": "Qwen/Qwen-Image-2512",
422
+ "image": "https://huggingface.co/artificialguybr/CINEMATIC-FILMSTILL-REDMOND-QWENIMAGE/resolve/main/images/001.png",
423
+ "weight_name": "[Qwen.Image]FilmStill_Redmond.safetensors"
424
+ },
425
+ {
426
+ "title": "Clayanimation Redmond Qwenimage",
427
+ "repo": "artificialguybr/ClayAnimation-Redmond-QWENIMAGE",
428
+ "trigger_word": "Clay animation, Clay",
429
+ "family": "qwen-image",
430
+ "base_model": "Qwen/Qwen-Image-2512",
431
+ "image": "https://huggingface.co/artificialguybr/ClayAnimation-Redmond-QWENIMAGE/resolve/main/images/003.png",
432
+ "weight_name": "[Qwen.Image]ClayAnimation_Redmond.safetensors"
433
+ },
434
+ {
435
+ "title": "Coloringbook Redmond Qwenimage",
436
+ "repo": "artificialguybr/COLORINGBOOK-REDMOND-QWENIMAGE",
437
+ "trigger_word": "Coloring Book, ColoringBookAF",
438
+ "family": "qwen-image",
439
+ "base_model": "Qwen/Qwen-Image-2512",
440
+ "image": "https://huggingface.co/artificialguybr/COLORINGBOOK-REDMOND-QWENIMAGE/resolve/main/images/1770769652522__000001000_0.jpg",
441
+ "weight_name": "[Qwen.Image]ColoringBook_Redmond.safetensors"
442
+ },
443
+ {
444
+ "title": "Crochet Amigurumi Redmond Qwenimage",
445
+ "repo": "artificialguybr/CROCHET-AMIGURUMI-REDMOND-QWENIMAGE",
446
+ "trigger_word": "Amigurumi, Crochet",
447
+ "family": "qwen-image",
448
+ "base_model": "Qwen/Qwen-Image-2512",
449
+ "image": "https://huggingface.co/artificialguybr/CROCHET-AMIGURUMI-REDMOND-QWENIMAGE/resolve/main/images/002.png",
450
+ "weight_name": "[Qwen.Image]CrochetAmigurumi_Redmond.safetensors"
451
+ },
452
+ {
453
+ "title": "Cutecartoon Redmond Qwenimage",
454
+ "repo": "artificialguybr/CuteCartoon-Redmond-QWENIMAGE",
455
+ "trigger_word": "CuteCartoonAF, Cute Cartoon",
456
+ "family": "qwen-image",
457
+ "base_model": "Qwen/Qwen-Image-2512",
458
+ "image": "https://huggingface.co/artificialguybr/CuteCartoon-Redmond-QWENIMAGE/resolve/main/images/001.png",
459
+ "weight_name": "[Qwen.Image]CuteCartoon_Redmond.safetensors"
460
+ },
461
+ {
462
+ "title": "Cutefruits Redmond Qwenimage",
463
+ "repo": "artificialguybr/CUTEFRUITS-REDMOND-QWENIMAGE",
464
+ "trigger_word": "CtFruitsRedmAF",
465
+ "family": "qwen-image",
466
+ "base_model": "Qwen/Qwen-Image-2512",
467
+ "image": "https://huggingface.co/artificialguybr/CUTEFRUITS-REDMOND-QWENIMAGE/resolve/main/images/001.png",
468
+ "weight_name": "[Qwen.Image]CuteFruits_Redmond.safetensors"
469
+ },
470
+ {
471
+ "title": "Digitalasset Redmond Qwenimage",
472
+ "repo": "artificialguybr/DIGITALASSET-REDMOND-QWENIMAGE",
473
+ "trigger_word": "Digital Asset",
474
+ "family": "qwen-image",
475
+ "base_model": "Qwen/Qwen-Image-2512",
476
+ "image": "https://huggingface.co/artificialguybr/DIGITALASSET-REDMOND-QWENIMAGE/resolve/main/images/001.png",
477
+ "weight_name": "[Qwen.Image]DigitalAssetMedia_Redmond.safetensors"
478
+ },
479
+ {
480
+ "title": "Doodle Redmond Qwenimage",
481
+ "repo": "artificialguybr/Doodle-Redmond-QWENIMAGE",
482
+ "trigger_word": "Doodle, DoodleRedm",
483
+ "family": "qwen-image",
484
+ "base_model": "Qwen/Qwen-Image-2512",
485
+ "image": "https://huggingface.co/artificialguybr/Doodle-Redmond-QWENIMAGE/resolve/main/images/001.png",
486
+ "weight_name": "[Qwen.Image]Doodle_Redmond.safetensors"
487
+ },
488
+ {
489
+ "title": "Doubleexposure Redmond Qwenimage",
490
+ "repo": "artificialguybr/DOUBLEEXPOSURE-REDMOND-QWENIMAGE",
491
+ "trigger_word": "Double Exposure, DoubleExposureREDAF",
492
+ "family": "qwen-image",
493
+ "base_model": "Qwen/Qwen-Image-2512",
494
+ "image": "https://huggingface.co/artificialguybr/DOUBLEEXPOSURE-REDMOND-QWENIMAGE/resolve/main/images/002.png",
495
+ "weight_name": "[Qwen.Image]DoubleExposure_Redmond.safetensors"
496
+ },
497
+ {
498
+ "title": "Filmgrain Redmond Qwenimage",
499
+ "repo": "artificialguybr/FILMGRAIN-REDMOND-QWENIMAGE",
500
+ "trigger_word": "FILMGRAIN, FilmGrainAF",
501
+ "family": "qwen-image",
502
+ "base_model": "Qwen/Qwen-Image-2512",
503
+ "image": "https://huggingface.co/artificialguybr/FILMGRAIN-REDMOND-QWENIMAGE/resolve/main/images/001.png",
504
+ "weight_name": "[Qwen.Image]FilmGrain_Redmond.safetensors"
505
+ },
506
+ {
507
+ "title": "Fisheye Redmond Qwenimage",
508
+ "repo": "artificialguybr/FISHEYE-REDMOND-QWENIMAGE",
509
+ "trigger_word": "Fish Eye Lens, Fish eye camera",
510
+ "family": "qwen-image",
511
+ "base_model": "Qwen/Qwen-Image-2512",
512
+ "image": "https://huggingface.co/artificialguybr/FISHEYE-REDMOND-QWENIMAGE/resolve/main/images/001.png",
513
+ "weight_name": "[Qwen.Image]FishEye_Redmond.safetensors"
514
+ },
515
+ {
516
+ "title": "Fluent Emoji Redmond Qwenimage",
517
+ "repo": "artificialguybr/FLUENT-EMOJI-REDMOND-QWENIMAGE",
518
+ "trigger_word": "EMOJI",
519
+ "family": "qwen-image",
520
+ "base_model": "Qwen/Qwen-Image-2512",
521
+ "image": "https://huggingface.co/artificialguybr/FLUENT-EMOJI-REDMOND-QWENIMAGE/resolve/main/images/001.png",
522
+ "weight_name": "[Qwen.Image]Emoji_Redmond.safetensors"
523
+ },
524
+ {
525
+ "title": "Icons Redmond Qwenimage",
526
+ "repo": "artificialguybr/ICONS-REDMOND-QWENIMAGE",
527
+ "trigger_word": "ICREDM, ICONS",
528
+ "family": "qwen-image",
529
+ "base_model": "Qwen/Qwen-Image-2512",
530
+ "image": "https://huggingface.co/artificialguybr/ICONS-REDMOND-QWENIMAGE/resolve/main/images/001.png",
531
+ "weight_name": "[Qwen.Image]Icons_Redmond.safetensors"
532
+ },
533
+ {
534
+ "title": "Isometric Redmond Qwenimage",
535
+ "repo": "artificialguybr/ISOMETRIC-REDMOND-QWENIMAGE",
536
+ "trigger_word": "ISOMETRIC, ISOMETRICREDM",
537
+ "family": "qwen-image",
538
+ "base_model": "Qwen/Qwen-Image-2512",
539
+ "image": "https://huggingface.co/artificialguybr/ISOMETRIC-REDMOND-QWENIMAGE/resolve/main/images/002.png",
540
+ "weight_name": "[Qwen.Image]Isometric_Redmond.safetensors"
541
+ },
542
+ {
543
+ "title": "Kidsbook Redmond Qwenimage",
544
+ "repo": "artificialguybr/KIDSBOOK-REDMOND-QWENIMAGE",
545
+ "trigger_word": "KidsRedmAF, Kids Book",
546
+ "family": "qwen-image",
547
+ "base_model": "Qwen/Qwen-Image-2512",
548
+ "image": "https://huggingface.co/artificialguybr/KIDSBOOK-REDMOND-QWENIMAGE/resolve/main/images/001.png",
549
+ "weight_name": "[Qwen.Image]Kids_Redmond.safetensors"
550
+ },
551
+ {
552
+ "title": "Lineartanime Redmond Qwenimage2512",
553
+ "repo": "artificialguybr/LineartAnime-Redmond-QwenImage2512",
554
+ "trigger_word": "Lineart, LineAniAF",
555
+ "family": "qwen-image",
556
+ "base_model": "Qwen/Qwen-Image-2512",
557
+ "image": "https://huggingface.co/artificialguybr/LineartAnime-Redmond-QwenImage2512/resolve/main/images/1769934640478__000001000_0.jpg",
558
+ "weight_name": "[Qwen.Image]LineArt_Redmond.safetensors"
559
+ },
560
+ {
561
+ "title": "Logo Redmond Qwenimage2512",
562
+ "repo": "artificialguybr/Logo-Redmond-QwenImage2512",
563
+ "trigger_word": "LOGO, logoredmaf",
564
+ "family": "qwen-image",
565
+ "base_model": "Qwen/Qwen-Image-2512",
566
+ "image": "https://huggingface.co/artificialguybr/Logo-Redmond-QwenImage2512/resolve/main/images/1769927369815__000000500_2.jpg",
567
+ "weight_name": "[Qwen.Image]Logo_Redmond.safetensors"
568
+ },
569
+ {
570
+ "title": "Mockups Redmond Qwenimage",
571
+ "repo": "artificialguybr/MOCKUPS-REDMOND-QWENIMAGE",
572
+ "trigger_word": "MOCKUP",
573
+ "family": "qwen-image",
574
+ "base_model": "Qwen/Qwen-Image-2512",
575
+ "image": "https://huggingface.co/artificialguybr/MOCKUPS-REDMOND-QWENIMAGE/resolve/main/images/001.png",
576
+ "weight_name": "[Qwen.Image]Mockups_Redmond.safetensors"
577
+ },
578
+ {
579
+ "title": "Phonecasecover Redmond Qwenimage",
580
+ "repo": "artificialguybr/PHONECASECOVER-REDMOND-QWENIMAGE",
581
+ "trigger_word": "Phone Case Cover",
582
+ "family": "qwen-image",
583
+ "base_model": "Qwen/Qwen-Image-2512",
584
+ "image": "https://huggingface.co/artificialguybr/PHONECASECOVER-REDMOND-QWENIMAGE/resolve/main/images/001.png",
585
+ "weight_name": "[Qwen.Image]PhoneCaseCovers_Redmond.safetensors"
586
+ },
587
+ {
588
+ "title": "Pixelart Redmond Qwenimage",
589
+ "repo": "artificialguybr/PIXELART-REDMOND-QWENIMAGE",
590
+ "trigger_word": "Pixel Art, PixArFK",
591
+ "family": "qwen-image",
592
+ "base_model": "Qwen/Qwen-Image-2512",
593
+ "image": "https://huggingface.co/artificialguybr/PIXELART-REDMOND-QWENIMAGE/resolve/main/images/1771227836023__000000000_0.jpg",
594
+ "weight_name": "[Qwen.Image]PixelArt_Redmond.safetensors"
595
+ },
596
+ {
597
+ "title": "Polaroid Redmond Qwenimage",
598
+ "repo": "artificialguybr/POLAROID-REDMOND-QWENIMAGE",
599
+ "trigger_word": "Polaroid Photo, PolaroidRedAF",
600
+ "family": "qwen-image",
601
+ "base_model": "Qwen/Qwen-Image-2512",
602
+ "image": "https://huggingface.co/artificialguybr/POLAROID-REDMOND-QWENIMAGE/resolve/main/images/001.png",
603
+ "weight_name": "[Qwen.Image]Polaroid_Redmond.safetensors"
604
+ },
605
+ {
606
+ "title": "Poster Redmond Qwenimage",
607
+ "repo": "artificialguybr/POSTER-REDMOND-QWENIMAGE",
608
+ "trigger_word": "POSTER",
609
+ "family": "qwen-image",
610
+ "base_model": "Qwen/Qwen-Image-2512",
611
+ "image": "https://huggingface.co/artificialguybr/POSTER-REDMOND-QWENIMAGE/resolve/main/images/001.png",
612
+ "weight_name": "[Qwen.Image]Poster_Redmond.safetensors"
613
+ },
614
+ {
615
+ "title": "Postermovie Redmond Qwenimage",
616
+ "repo": "artificialguybr/POSTERMOVIE-REDMOND-QWENIMAGE",
617
+ "trigger_word": "Poster Movie",
618
+ "family": "qwen-image",
619
+ "base_model": "Qwen/Qwen-Image-2512",
620
+ "image": "https://huggingface.co/artificialguybr/POSTERMOVIE-REDMOND-QWENIMAGE/resolve/main/images/001.png",
621
+ "weight_name": "[Qwen.Image]PosterMovie_Redmond.safetensors"
622
+ },
623
+ {
624
+ "title": "Ps1graphics Redmond Qwenimage",
625
+ "repo": "artificialguybr/PS1Graphics-Redmond-QwenImage",
626
+ "trigger_word": "Playstation 1 Graphics, PS1 Game",
627
+ "family": "qwen-image",
628
+ "base_model": "Qwen/Qwen-Image-2512",
629
+ "image": "https://huggingface.co/artificialguybr/PS1Graphics-Redmond-QwenImage/resolve/main/images/001.png",
630
+ "weight_name": "[Qwen.Image]PS1Screencap_Redmond.safetensors"
631
+ },
632
+ {
633
+ "title": "Snapchatselfie Redmond Qwenimage",
634
+ "repo": "artificialguybr/SNAPCHATSELFIE-REDMOND-QWENIMAGE",
635
+ "trigger_word": "Snapchat Selfie, Snapchat pic",
636
+ "family": "qwen-image",
637
+ "base_model": "Qwen/Qwen-Image-2512",
638
+ "image": "https://huggingface.co/artificialguybr/SNAPCHATSELFIE-REDMOND-QWENIMAGE/resolve/main/images/001.png",
639
+ "weight_name": "[Qwen.Image]SnapchatSelfie_Redmond.safetensors"
640
+ },
641
+ {
642
+ "title": "Stickers Redmond Qwen Image",
643
+ "repo": "artificialguybr/STICKERS-REDMOND-QWEN-IMAGE",
644
+ "trigger_word": "Sticker, Stickers",
645
+ "family": "qwen-image",
646
+ "base_model": "Qwen/Qwen-Image-2512",
647
+ "image": "https://huggingface.co/artificialguybr/STICKERS-REDMOND-QWEN-IMAGE/resolve/main/images/1770725547956__000001000_0.jpg",
648
+ "weight_name": "[Qwen.Image]Stickers_Redmond.safetensors"
649
+ },
650
+ {
651
+ "title": "Studioghibli Redmond Qwenimage",
652
+ "repo": "artificialguybr/STUDIOGHIBLI-REDMOND-QWENIMAGE",
653
+ "trigger_word": "Studio Ghibli Style, StdGbRedmAF",
654
+ "family": "qwen-image",
655
+ "base_model": "Qwen/Qwen-Image-2512",
656
+ "image": "https://huggingface.co/artificialguybr/STUDIOGHIBLI-REDMOND-QWENIMAGE/resolve/main/images/1771326227278__000001000_0.jpg",
657
+ "weight_name": "[Qwen.Image]Stdgbredmaf_Redmond.safetensors"
658
+ },
659
+ {
660
+ "title": "Tshirtdesign Redmond Qwenimage",
661
+ "repo": "artificialguybr/TSHIRTDESIGN-REDMOND-QWENIMAGE",
662
+ "trigger_word": "T shirt design, TshirtDesignAF",
663
+ "family": "qwen-image",
664
+ "base_model": "Qwen/Qwen-Image-2512",
665
+ "image": "https://huggingface.co/artificialguybr/TSHIRTDESIGN-REDMOND-QWENIMAGE/resolve/main/images/1771249135321__000000750_1.jpg",
666
+ "weight_name": "[Qwen.Image]Tshirtdesign_Redmond.safetensors"
667
+ },
668
+ {
669
+ "title": "Xboxavatar Redmond Qwenimage",
670
+ "repo": "artificialguybr/XBOXAVATAR-REDMOND-QWENIMAGE",
671
+ "trigger_word": "XBOX AVATAR",
672
+ "family": "qwen-image",
673
+ "base_model": "Qwen/Qwen-Image-2512",
674
+ "image": "https://huggingface.co/artificialguybr/XBOXAVATAR-REDMOND-QWENIMAGE/resolve/main/images/001.png",
675
+ "weight_name": "[Qwen.Image]XboxAvatar_Redmond.safetensors"
676
+ },
677
+ {
678
+ "title": "3d Redmond 1 5v 3d Render Style For Liberte Redmond Sd 1 5",
679
+ "repo": "artificialguybr/3d-redmond-1-5v-3d-render-style-for-liberte-redmond-sd-1-5",
680
+ "trigger_word": "3D Render Style",
681
+ "family": "sd15",
682
+ "base_model": "runwayml/stable-diffusion-v1-5",
683
+ "image": "https://huggingface.co/artificialguybr/3d-redmond-1-5v-3d-render-style-for-liberte-redmond-sd-1-5/resolve/main/3821680.jpeg",
684
+ "weight_name": "3DRedmond15V-LiberteRedmond-3DRenderStyle-3DRenderAF.safetensors"
685
+ },
686
+ {
687
+ "title": "Clayanimationredmond 1 5 Version Clay Animation Lora For Sd 1 5",
688
+ "repo": "artificialguybr/clayanimationredmond-1-5-version-clay-animation-lora-for-sd-1-5",
689
+ "trigger_word": "Clay Animation",
690
+ "family": "sd15",
691
+ "base_model": "runwayml/stable-diffusion-v1-5",
692
+ "image": "https://huggingface.co/artificialguybr/clayanimationredmond-1-5-version-clay-animation-lora-for-sd-1-5/resolve/main/3755646.jpeg",
693
+ "weight_name": "ClayAnimationRedmond15-ClayAnimation-Clay.safetensors"
694
+ },
695
+ {
696
+ "title": "Coloringbook Redmond 1 5v Coloring Book Lora For Liberteredmond Sd 1 5",
697
+ "repo": "artificialguybr/coloringbook-redmond-1-5v-coloring-book-lora-for-liberteredmond-sd-1-5",
698
+ "trigger_word": "ColoringBookAF",
699
+ "family": "sd15",
700
+ "base_model": "runwayml/stable-diffusion-v1-5",
701
+ "image": "https://huggingface.co/artificialguybr/coloringbook-redmond-1-5v-coloring-book-lora-for-liberteredmond-sd-1-5/resolve/main/3817531.jpeg",
702
+ "weight_name": "ColoringBookRedmond15V-LiberteRedmond-ColoringBookAF.safetensors"
703
+ },
704
+ {
705
+ "title": "Cutecartoon Redmond 1 5v Cute Cartoon Lora For Liberteredmond Sd 1 5",
706
+ "repo": "artificialguybr/cutecartoon-redmond-1-5v-cute-cartoon-lora-for-liberteredmond-sd-1-5",
707
+ "trigger_word": "CuteCartoonAF",
708
+ "family": "sd15",
709
+ "base_model": "runwayml/stable-diffusion-v1-5",
710
+ "image": "https://huggingface.co/artificialguybr/cutecartoon-redmond-1-5v-cute-cartoon-lora-for-liberteredmond-sd-1-5/resolve/main/3809566.jpeg",
711
+ "weight_name": "CuteCartoon15V-LiberteRedmodModel-Cartoon-CuteCartoonAF.safetensors"
712
+ },
713
+ {
714
+ "title": "Icons Redmond 1 5v App Icons Lora For Sd Liberteredmond Sd 1 5",
715
+ "repo": "artificialguybr/icons-redmond-1-5v-app-icons-lora-for-sd-liberteredmond-sd-1-5",
716
+ "trigger_word": "icons",
717
+ "family": "sd15",
718
+ "base_model": "runwayml/stable-diffusion-v1-5",
719
+ "image": "https://huggingface.co/artificialguybr/icons-redmond-1-5v-app-icons-lora-for-sd-liberteredmond-sd-1-5/resolve/main/3765523.jpeg",
720
+ "weight_name": "IconsRedmond15V-Icons.safetensors"
721
+ },
722
+ {
723
+ "title": "Logo Redmond 1 5v Logo Lora For Liberteredmond Sd 1 5",
724
+ "repo": "artificialguybr/logo-redmond-1-5v-logo-lora-for-liberteredmond-sd-1-5",
725
+ "trigger_word": "LogoRedmAF",
726
+ "family": "sd15",
727
+ "base_model": "runwayml/stable-diffusion-v1-5",
728
+ "image": "https://huggingface.co/artificialguybr/logo-redmond-1-5v-logo-lora-for-liberteredmond-sd-1-5/resolve/main/3767964.jpeg",
729
+ "weight_name": "LogoRedmond15V-LogoRedmAF-Logo.safetensors"
730
+ },
731
+ {
732
+ "title": "Pixelartredmond 1 5v Pixel Art Loras For Sd 1 5",
733
+ "repo": "artificialguybr/pixelartredmond-1-5v-pixel-art-loras-for-sd-1-5",
734
+ "trigger_word": "Pixel Art",
735
+ "family": "sd15",
736
+ "base_model": "runwayml/stable-diffusion-v1-5",
737
+ "image": "https://huggingface.co/artificialguybr/pixelartredmond-1-5v-pixel-art-loras-for-sd-1-5/resolve/main/3758809.jpeg",
738
+ "weight_name": "PixelArtRedmond15V-PixelArt-PIXARFK.safetensors"
739
+ },
740
+ {
741
+ "title": "Stickers Redmond 1 5 Version Stickers Lora For Sd 1 5",
742
+ "repo": "artificialguybr/stickers-redmond-1-5-version-stickers-lora-for-sd-1-5",
743
+ "trigger_word": "Stickers",
744
+ "family": "sd15",
745
+ "base_model": "runwayml/stable-diffusion-v1-5",
746
+ "image": "https://huggingface.co/artificialguybr/stickers-redmond-1-5-version-stickers-lora-for-sd-1-5/resolve/main/3756811.jpeg",
747
+ "weight_name": "StickersRedmond15Version-Stickers-Sticker.safetensors"
748
+ },
749
+ {
750
+ "title": "Storybookredmond 1 5 Version Storybook Kids Lora Style For Sd 1 5",
751
+ "repo": "artificialguybr/storybookredmond-1-5-version-storybook-kids-lora-style-for-sd-1-5",
752
+ "trigger_word": "KidsRedmAF",
753
+ "family": "sd15",
754
+ "base_model": "runwayml/stable-diffusion-v1-5",
755
+ "image": "https://huggingface.co/artificialguybr/storybookredmond-1-5-version-storybook-kids-lora-style-for-sd-1-5/resolve/main/3748120.jpeg",
756
+ "weight_name": "StoryBookRedmond15-KidsRedmAF-KidsBook.safetensors"
757
+ },
758
+ {
759
+ "title": "Studioghibli Redmond 1 5v Studio Ghibli Lora For Liberteredmond Sd 1 5",
760
+ "repo": "artificialguybr/studioghibli-redmond-1-5v-studio-ghibli-lora-for-liberteredmond-sd-1-5",
761
+ "trigger_word": "Studio Ghibli",
762
+ "family": "sd15",
763
+ "base_model": "runwayml/stable-diffusion-v1-5",
764
+ "image": "https://huggingface.co/artificialguybr/studioghibli-redmond-1-5v-studio-ghibli-lora-for-liberteredmond-sd-1-5/resolve/main/3823538.jpeg",
765
+ "weight_name": "StudioGhibliRedmond-15V-LiberteRedmond-StdGBRedmAF-StudioGhibli.safetensors"
766
+ },
767
+ {
768
+ "title": "Tshirtdesignredmond 1 5v T Shirt Design Lora For Liberteredmond Sd 1 5",
769
+ "repo": "artificialguybr/tshirtdesignredmond-1-5v-t-shirt-design-lora-for-liberteredmond-sd-1-5",
770
+ "trigger_word": "T shirt design",
771
+ "family": "sd15",
772
+ "base_model": "runwayml/stable-diffusion-v1-5",
773
+ "image": "https://huggingface.co/artificialguybr/tshirtdesignredmond-1-5v-t-shirt-design-lora-for-liberteredmond-sd-1-5/resolve/main/3819605.jpeg",
774
+ "weight_name": "TShirtDesignRedmond1-5V-LiberteRedmond-TShirtDesignAF.safetensors"
775
+ },
776
+ {
777
+ "title": "360redmond",
778
+ "repo": "artificialguybr/360Redmond",
779
+ "trigger_word": "360, 360 view",
780
+ "family": "sdxl",
781
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
782
+ "image": "https://huggingface.co/artificialguybr/360Redmond/resolve/main/view3-0000.png",
783
+ "weight_name": "View360.safetensors"
784
+ },
785
+ {
786
+ "title": "3dredmond V1",
787
+ "repo": "artificialguybr/3DRedmond-V1",
788
+ "trigger_word": "3D Render Style, 3DRenderAF",
789
+ "family": "sdxl",
790
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
791
+ "image": "https://huggingface.co/artificialguybr/3DRedmond-V1/resolve/main/images/00064-2498532539.png",
792
+ "weight_name": "3DRedmond-3DRenderStyle-3DRenderAF.safetensors"
793
+ },
794
+ {
795
+ "title": "Amigurami Redmond Amigurami Crochet Sd Xl Lora",
796
+ "repo": "artificialguybr/amigurami-redmond-amigurami-crochet-sd-xl-lora",
797
+ "trigger_word": "Amigurami",
798
+ "family": "sdxl",
799
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
800
+ "image": "https://huggingface.co/artificialguybr/amigurami-redmond-amigurami-crochet-sd-xl-lora/resolve/main/7859328.jpeg",
801
+ "weight_name": "AmiguramiRedmond-Crochet-Amigurumi.safetensors"
802
+ },
803
+ {
804
+ "title": "Analogredmond",
805
+ "repo": "artificialguybr/analogredmond",
806
+ "trigger_word": "AnalogRedmAF",
807
+ "family": "sdxl",
808
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
809
+ "image": "https://huggingface.co/artificialguybr/analogredmond/resolve/main/00147-2176616884.png",
810
+ "weight_name": "AnalogRedmond-AnalogRedmAF.safetensors"
811
+ },
812
+ {
813
+ "title": "Analogredmond V2",
814
+ "repo": "artificialguybr/analogredmond-v2",
815
+ "trigger_word": "AnalogRedmAF, Analog",
816
+ "family": "sdxl",
817
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
818
+ "image": "https://huggingface.co/artificialguybr/analogredmond-v2/resolve/main/00279-913323466.png",
819
+ "weight_name": "AnalogRedmondV2-Analog-AnalogRedmAF.safetensors"
820
+ },
821
+ {
822
+ "title": "Bettertextredmond",
823
+ "repo": "artificialguybr/bettertextredmond",
824
+ "trigger_word": "widget:",
825
+ "family": "sdxl",
826
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
827
+ "image": "https://huggingface.co/artificialguybr/bettertextredmond/resolve/main/xyz_grid-0044-3019386746.png",
828
+ "weight_name": "BetterTextRedmond.safetensors"
829
+ },
830
+ {
831
+ "title": "Clayanimationredmond",
832
+ "repo": "artificialguybr/ClayAnimationRedmond",
833
+ "trigger_word": "Clay Animation, Clay",
834
+ "family": "sdxl",
835
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
836
+ "image": "https://huggingface.co/artificialguybr/ClayAnimationRedmond/resolve/main/00138-3585231804.png",
837
+ "weight_name": "ClayAnimationRedm.safetensors"
838
+ },
839
+ {
840
+ "title": "Coloringbookredmond",
841
+ "repo": "artificialguybr/ColoringBookRedmond",
842
+ "trigger_word": "ColoringBookAF",
843
+ "family": "sdxl",
844
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
845
+ "image": "https://huggingface.co/artificialguybr/ColoringBookRedmond/resolve/main/00009-1364020674.png",
846
+ "weight_name": "ColoringBookRedmond-ColoringBookAF.safetensors"
847
+ },
848
+ {
849
+ "title": "Coloringbookredmond V2",
850
+ "repo": "artificialguybr/ColoringBookRedmond-V2",
851
+ "trigger_word": "ColoringBookAF, Coloring Book",
852
+ "family": "sdxl",
853
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
854
+ "image": "https://huggingface.co/artificialguybr/ColoringBookRedmond-V2/resolve/main/00493-1759595235.png",
855
+ "weight_name": "ColoringBookRedmond-ColoringBook-ColoringBookAF.safetensors"
856
+ },
857
+ {
858
+ "title": "Cutecartoonredmond",
859
+ "repo": "artificialguybr/CuteCartoonRedmond",
860
+ "trigger_word": "ExCRedmAF",
861
+ "family": "sdxl",
862
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
863
+ "image": "https://huggingface.co/artificialguybr/CuteCartoonRedmond/resolve/main/00000-952257978.png",
864
+ "weight_name": "CuteCartoonRedmond-ExCRedmAF.safetensors"
865
+ },
866
+ {
867
+ "title": "Cutecartoonredmond V2",
868
+ "repo": "artificialguybr/CuteCartoonRedmond-V2",
869
+ "trigger_word": "CuteCartoonAF, Cute Cartoon",
870
+ "family": "sdxl",
871
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
872
+ "image": "https://huggingface.co/artificialguybr/CuteCartoonRedmond-V2/resolve/main/00418-1769284661.png",
873
+ "weight_name": "CuteCartoonRedmond-CuteCartoon-CuteCartoonAF.safetensors"
874
+ },
875
+ {
876
+ "title": "Cutefruitsredmond",
877
+ "repo": "artificialguybr/CuteFruitsRedmond",
878
+ "trigger_word": "CtFruitsRedmAF",
879
+ "family": "sdxl",
880
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
881
+ "image": "https://huggingface.co/artificialguybr/CuteFruitsRedmond/resolve/main/00033-427842759.png",
882
+ "weight_name": "CuteFruitsRedmond-CtFruitsRedmAF.safetensors"
883
+ },
884
+ {
885
+ "title": "Doodle Redmond Doodle Hand Drawing Style Lora For Sd Xl",
886
+ "repo": "artificialguybr/doodle-redmond-doodle-hand-drawing-style-lora-for-sd-xl",
887
+ "trigger_word": "doodle",
888
+ "family": "sdxl",
889
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
890
+ "image": "https://huggingface.co/artificialguybr/doodle-redmond-doodle-hand-drawing-style-lora-for-sd-xl/resolve/main/6569334.jpeg",
891
+ "weight_name": "DoodleRedmond-Doodle-DoodleRedm.safetensors"
892
+ },
893
+ {
894
+ "title": "Filmgrain Redmond Filmgrain Lora For Sdxl",
895
+ "repo": "artificialguybr/filmgrain-redmond-filmgrain-lora-for-sdxl",
896
+ "trigger_word": "Film Grain",
897
+ "family": "sdxl",
898
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
899
+ "image": "https://huggingface.co/artificialguybr/filmgrain-redmond-filmgrain-lora-for-sdxl/resolve/main/4596085.jpeg",
900
+ "weight_name": "FilmGrainRedmond-FilmGrain-FilmGrainAF.safetensors"
901
+ },
902
+ {
903
+ "title": "Iconsredmond Iconsloraforsdxl",
904
+ "repo": "artificialguybr/IconsRedmond-IconsLoraForSDXL",
905
+ "trigger_word": "icredm",
906
+ "family": "sdxl",
907
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
908
+ "image": "https://huggingface.co/artificialguybr/IconsRedmond-IconsLoraForSDXL/resolve/main/00615-157502082.png",
909
+ "weight_name": "IconsRedmond.safetensors"
910
+ },
911
+ {
912
+ "title": "Iconsredmond Iconsloraforsdxl V2",
913
+ "repo": "artificialguybr/IconsRedmond-IconsLoraForSDXL-V2",
914
+ "trigger_word": "icredm",
915
+ "family": "sdxl",
916
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
917
+ "image": "https://huggingface.co/artificialguybr/IconsRedmond-IconsLoraForSDXL-V2/resolve/main/00086-2612310100.png",
918
+ "weight_name": "IconsRedmondV2-Icons.safetensors"
919
+ },
920
+ {
921
+ "title": "Lineaniredmond Linearmangasdxl",
922
+ "repo": "artificialguybr/LineAniRedmond-LinearMangaSDXL",
923
+ "trigger_word": "LineAniAF",
924
+ "family": "sdxl",
925
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
926
+ "image": "https://huggingface.co/artificialguybr/LineAniRedmond-LinearMangaSDXL/resolve/main/00001-940815997.png",
927
+ "weight_name": "LineAniRedmond-LineAniAF.safetensors"
928
+ },
929
+ {
930
+ "title": "Lineaniredmond Linearmangasdxl V2",
931
+ "repo": "artificialguybr/LineAniRedmond-LinearMangaSDXL-V2",
932
+ "trigger_word": "LineAniAF, lineart",
933
+ "family": "sdxl",
934
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
935
+ "image": "https://huggingface.co/artificialguybr/LineAniRedmond-LinearMangaSDXL-V2/resolve/main/00207-2331126365.png",
936
+ "weight_name": "LineAniRedmondV2-Lineart-LineAniAF.safetensors"
937
+ },
938
+ {
939
+ "title": "Logoredmond Logoloraforsdxl",
940
+ "repo": "artificialguybr/LogoRedmond-LogoLoraForSDXL",
941
+ "trigger_word": "LogoRedAF",
942
+ "family": "sdxl",
943
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
944
+ "image": "https://huggingface.co/artificialguybr/LogoRedmond-LogoLoraForSDXL/resolve/main/00120-4278840802.png",
945
+ "weight_name": "LogoRedmond_LogoRedAF.safetensors"
946
+ },
947
+ {
948
+ "title": "Logoredmond Logoloraforsdxl V2",
949
+ "repo": "artificialguybr/LogoRedmond-LogoLoraForSDXL-V2",
950
+ "trigger_word": "LogoRedmAF, Icons",
951
+ "family": "sdxl",
952
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
953
+ "image": "https://huggingface.co/artificialguybr/LogoRedmond-LogoLoraForSDXL-V2/resolve/main/00140-237225586.png",
954
+ "weight_name": "LogoRedmondV2-Logo-LogoRedmAF.safetensors"
955
+ },
956
+ {
957
+ "title": "Movie Poster Redmond For Sd Xl Create Movie Poster Images",
958
+ "repo": "artificialguybr/movie-poster-redmond-for-sd-xl-create-movie-poster-images",
959
+ "trigger_word": "Movie Poster",
960
+ "family": "sdxl",
961
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
962
+ "image": "https://huggingface.co/artificialguybr/movie-poster-redmond-for-sd-xl-create-movie-poster-images/resolve/main/4618706.jpeg",
963
+ "weight_name": "MoviePosterRedmond-MoviePoster-MoviePosterRedAF.safetensors"
964
+ },
965
+ {
966
+ "title": "Pixelartredmond",
967
+ "repo": "artificialguybr/PixelArtRedmond",
968
+ "trigger_word": "Pixel Art, PixArFK",
969
+ "family": "sdxl",
970
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
971
+ "image": "https://huggingface.co/artificialguybr/PixelArtRedmond/resolve/main/pixel-0017-714031916.png",
972
+ "weight_name": "PixelArtRedmond-Lite64.safetensors"
973
+ },
974
+ {
975
+ "title": "Pomological Watercolor Redmond Lora For Sd Xl",
976
+ "repo": "artificialguybr/pomological-watercolor-redmond-lora-for-sd-xl",
977
+ "trigger_word": "Pomological Watercolor",
978
+ "family": "sdxl",
979
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
980
+ "image": "https://huggingface.co/artificialguybr/pomological-watercolor-redmond-lora-for-sd-xl/resolve/main/5146230.jpeg",
981
+ "weight_name": "PomologicalWatercolorRedmond.safetensors"
982
+ },
983
+ {
984
+ "title": "Ps1redmond Ps1 Game Graphics Lora For Sdxl",
985
+ "repo": "artificialguybr/ps1redmond-ps1-game-graphics-lora-for-sdxl",
986
+ "trigger_word": "Playstation 1 Graphics",
987
+ "family": "sdxl",
988
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
989
+ "image": "https://huggingface.co/artificialguybr/ps1redmond-ps1-game-graphics-lora-for-sdxl/resolve/main/5177869.jpeg",
990
+ "weight_name": "PS1Redmond-PS1Game-Playstation1Graphics.safetensors"
991
+ },
992
+ {
993
+ "title": "Selfiephotographyredmond Selfie Photography Lora For Sdxl",
994
+ "repo": "artificialguybr/selfiephotographyredmond-selfie-photography-lora-for-sdxl",
995
+ "trigger_word": "instagram model",
996
+ "family": "sdxl",
997
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
998
+ "image": "https://huggingface.co/artificialguybr/selfiephotographyredmond-selfie-photography-lora-for-sdxl/resolve/main/7451275.jpeg",
999
+ "weight_name": "SelfiePhotographyRedmond.safetensors"
1000
+ },
1001
+ {
1002
+ "title": "Stickersredmond",
1003
+ "repo": "artificialguybr/StickersRedmond",
1004
+ "trigger_word": "Stickers, sticker",
1005
+ "family": "sdxl",
1006
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
1007
+ "image": "https://huggingface.co/artificialguybr/StickersRedmond/resolve/main/00000-3383490575.png",
1008
+ "weight_name": "StickersRedmond.safetensors"
1009
+ },
1010
+ {
1011
+ "title": "Storybookredmond",
1012
+ "repo": "artificialguybr/StoryBookRedmond",
1013
+ "trigger_word": "KidsRedmAF",
1014
+ "family": "sdxl",
1015
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
1016
+ "image": "https://huggingface.co/artificialguybr/StoryBookRedmond/resolve/main/00162-1569823442.png",
1017
+ "weight_name": "StoryBookRedmond-KidsRedmAF.safetensors"
1018
+ },
1019
+ {
1020
+ "title": "Storybookredmond V2",
1021
+ "repo": "artificialguybr/StoryBookRedmond-V2",
1022
+ "trigger_word": "KidsRedmAF, Kids Book",
1023
+ "family": "sdxl",
1024
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
1025
+ "image": "https://huggingface.co/artificialguybr/StoryBookRedmond-V2/resolve/main/00354-2867629119.png",
1026
+ "weight_name": "StorybookRedmondV2-KidsBook-KidsRedmAF.safetensors"
1027
+ },
1028
+ {
1029
+ "title": "Storybookredmondunbound",
1030
+ "repo": "artificialguybr/StorybookRedmondUnbound",
1031
+ "trigger_word": "KidsRedmAF",
1032
+ "family": "sdxl",
1033
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
1034
+ "image": "https://huggingface.co/artificialguybr/StorybookRedmondUnbound/resolve/main/00155-2390220548.png",
1035
+ "weight_name": "StorybookRedmondUnbound-KidsRedmAF.safetensors"
1036
+ },
1037
+ {
1038
+ "title": "Studioghibli.redmond V2",
1039
+ "repo": "artificialguybr/StudioGhibli.Redmond-V2",
1040
+ "trigger_word": "Studio Ghibli, StdGBRedmAF",
1041
+ "family": "sdxl",
1042
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
1043
+ "image": "https://huggingface.co/artificialguybr/StudioGhibli.Redmond-V2/resolve/main/images/00224-3646141139.png",
1044
+ "weight_name": "StudioGhibli.Redmond-StdGBRRedmAF-StudioGhibli.safetensors"
1045
+ },
1046
+ {
1047
+ "title": "Studioghibliredmond",
1048
+ "repo": "artificialguybr/StudioGhibliRedmond",
1049
+ "trigger_word": "StdGBRedmAF",
1050
+ "family": "sdxl",
1051
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
1052
+ "image": "https://huggingface.co/artificialguybr/StudioGhibliRedmond/resolve/main/00105-276344090.png",
1053
+ "weight_name": "StudioGhibliRedmond-StdGBRedmAF.safetensors"
1054
+ },
1055
+ {
1056
+ "title": "Toyredmond Toyloraforsdxl10",
1057
+ "repo": "artificialguybr/ToyRedmond-ToyLoraForSDXL10",
1058
+ "trigger_word": "FnkRedmAF",
1059
+ "family": "sdxl",
1060
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
1061
+ "image": "https://huggingface.co/artificialguybr/ToyRedmond-ToyLoraForSDXL10/resolve/main/00341-3123838196.png",
1062
+ "weight_name": "ToyRedmond-FnkRedmAF.safetensors"
1063
+ },
1064
+ {
1065
+ "title": "Tshirtdesignredmond",
1066
+ "repo": "artificialguybr/TshirtDesignRedmond",
1067
+ "trigger_word": "TshirtDesignAF",
1068
+ "family": "sdxl",
1069
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
1070
+ "image": "https://huggingface.co/artificialguybr/TshirtDesignRedmond/resolve/main/00097-1339429505.png",
1071
+ "weight_name": "TshirtDesignRedmond-TshirtDesignAF.safetensors"
1072
+ },
1073
+ {
1074
+ "title": "Tshirtdesignredmond V2",
1075
+ "repo": "artificialguybr/TshirtDesignRedmond-V2",
1076
+ "trigger_word": "TshirtDesignAF, T Shirt Design",
1077
+ "family": "sdxl",
1078
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
1079
+ "image": "https://huggingface.co/artificialguybr/TshirtDesignRedmond-V2/resolve/main/00568-999030895.png",
1080
+ "weight_name": "TShirtDesignRedmondV2-Tshirtdesign-TshirtDesignAF.safetensors"
1081
+ },
1082
+ {
1083
+ "title": "Xbox Avatar Redmond Xbox Avatar Style Lora For Sd Xl",
1084
+ "repo": "artificialguybr/xbox-avatar-redmond-xbox-avatar-style-lora-for-sd-xl",
1085
+ "trigger_word": "XBOX AVATAR",
1086
+ "family": "sdxl",
1087
+ "base_model": "stabilityai/stable-diffusion-xl-base-1.0",
1088
+ "image": "https://huggingface.co/artificialguybr/xbox-avatar-redmond-xbox-avatar-style-lora-for-sd-xl/resolve/main/9654034.jpeg",
1089
+ "weight_name": "XboxAvatarRedmond.safetensors"
1090
+ },
1091
+ {
1092
+ "title": "360view Redmond Zimageturbo",
1093
+ "repo": "artificialguybr/360VIEW-REDMOND-ZIMAGETURBO",
1094
+ "trigger_word": "360, 360 VIEW",
1095
+ "family": "z-image",
1096
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1097
+ "image": "https://huggingface.co/artificialguybr/360VIEW-REDMOND-ZIMAGETURBO/resolve/main/images/360viewer_z_003.png",
1098
+ "weight_name": "[ZImage.Turbo]360viewer_Redmond.safetensors"
1099
+ },
1100
+ {
1101
+ "title": "3drenderstyle Redmond Zimage",
1102
+ "repo": "artificialguybr/3DRenderStyle-REDMOND-ZIMAGE",
1103
+ "trigger_word": "3D Render Style, 3DRenderAF",
1104
+ "family": "z-image",
1105
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1106
+ "image": "https://huggingface.co/artificialguybr/3DRenderStyle-REDMOND-ZIMAGE/resolve/main/images/001.png",
1107
+ "weight_name": "[ZImage.Turbo]3DRenderStyle_Redmond.safetensors"
1108
+ },
1109
+ {
1110
+ "title": "Albumcover Redmond Zimage",
1111
+ "repo": "artificialguybr/ALBUMCOVER-REDMOND-ZIMAGE",
1112
+ "trigger_word": "ALBUM COVER",
1113
+ "family": "z-image",
1114
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1115
+ "image": "https://huggingface.co/artificialguybr/ALBUMCOVER-REDMOND-ZIMAGE/resolve/main/images/001.png",
1116
+ "weight_name": "[ZImage.Turbo]AlbumCover_Redmond.safetensors"
1117
+ },
1118
+ {
1119
+ "title": "Analog Redmond Zimageturbo",
1120
+ "repo": "artificialguybr/ANALOG-REDMOND-ZIMAGETURBO",
1121
+ "trigger_word": "AnalogRedmAF, ANALOG",
1122
+ "family": "z-image",
1123
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1124
+ "image": "https://huggingface.co/artificialguybr/ANALOG-REDMOND-ZIMAGETURBO/resolve/main/images/analog_z_001.png",
1125
+ "weight_name": "[ZImage.Turbo]Analog_Redmond.safetensors"
1126
+ },
1127
+ {
1128
+ "title": "Anime Redmond Zimage",
1129
+ "repo": "artificialguybr/ANIME-REDMOND-ZIMAGE",
1130
+ "trigger_word": "Anime, AnimedREDAF",
1131
+ "family": "z-image",
1132
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1133
+ "image": "https://huggingface.co/artificialguybr/ANIME-REDMOND-ZIMAGE/resolve/main/images/001.png",
1134
+ "weight_name": "[ZImage.Turbo]Anime_Redmond.safetensors"
1135
+ },
1136
+ {
1137
+ "title": "Bookcover Redmond Zimage",
1138
+ "repo": "artificialguybr/BOOKCOVER-REDMOND-ZIMAGE",
1139
+ "trigger_word": "BOOK COVER",
1140
+ "family": "z-image",
1141
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1142
+ "image": "https://huggingface.co/artificialguybr/BOOKCOVER-REDMOND-ZIMAGE/resolve/main/images/001.png",
1143
+ "weight_name": "[ZImage.Turbo]BookCover_Redmond.safetensors"
1144
+ },
1145
+ {
1146
+ "title": "Cinematic Filmstill Redmond Zimage",
1147
+ "repo": "artificialguybr/CINEMATIC-FILMSTILL-REDMOND-ZIMAGE",
1148
+ "trigger_word": "CINEMATIC, FILM STILL",
1149
+ "family": "z-image",
1150
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1151
+ "image": "https://huggingface.co/artificialguybr/CINEMATIC-FILMSTILL-REDMOND-ZIMAGE/resolve/main/images/001.png",
1152
+ "weight_name": "[ZImage.Turbo]FilmStill_Redmond.safetensors"
1153
+ },
1154
+ {
1155
+ "title": "Clayanimation Redmond Zimage",
1156
+ "repo": "artificialguybr/ClayAnimation-Redmond-ZIMAGE",
1157
+ "trigger_word": "Clay animation, Clay",
1158
+ "family": "z-image",
1159
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1160
+ "image": "https://huggingface.co/artificialguybr/ClayAnimation-Redmond-ZIMAGE/resolve/main/images/001.png",
1161
+ "weight_name": "[ZImage.Turbo]ClayAnimation_Redmond.safetensors"
1162
+ },
1163
+ {
1164
+ "title": "Coloringbook Redmond Zimage",
1165
+ "repo": "artificialguybr/COLORINGBOOK-REDMOND-ZIMAGE",
1166
+ "trigger_word": "Coloring Book, ColoringBookAF",
1167
+ "family": "z-image",
1168
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1169
+ "image": "https://huggingface.co/artificialguybr/COLORINGBOOK-REDMOND-ZIMAGE/resolve/main/images/1770738552118__000001000_0.jpg",
1170
+ "weight_name": "[ZImage.Turbo]ColoringBook_Redmond.safetensors"
1171
+ },
1172
+ {
1173
+ "title": "Crochet Amigurumi Redmond Zimage",
1174
+ "repo": "artificialguybr/CROCHET-AMIGURUMI-REDMOND-ZIMAGE",
1175
+ "trigger_word": "Amigurumi, Crochet",
1176
+ "family": "z-image",
1177
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1178
+ "image": "https://huggingface.co/artificialguybr/CROCHET-AMIGURUMI-REDMOND-ZIMAGE/resolve/main/images/001.png",
1179
+ "weight_name": "[ZImage.Turbo]CrochetAmigurumi_Redmond.safetensors"
1180
+ },
1181
+ {
1182
+ "title": "Cutecartoon Redmond Zimage",
1183
+ "repo": "artificialguybr/CuteCartoon-Redmond-ZIMAGE",
1184
+ "trigger_word": "CuteCartoonAF, Cute Cartoon",
1185
+ "family": "z-image",
1186
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1187
+ "image": "https://huggingface.co/artificialguybr/CuteCartoon-Redmond-ZIMAGE/resolve/main/images/001.png",
1188
+ "weight_name": "[ZImage.Turbo]CuteCartoon_Redmond.safetensors"
1189
+ },
1190
+ {
1191
+ "title": "Cutefruits Redmond Zimage",
1192
+ "repo": "artificialguybr/CUTEFRUITS-REDMOND-ZIMAGE",
1193
+ "trigger_word": "CtFruitsRedmAF",
1194
+ "family": "z-image",
1195
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1196
+ "image": "https://huggingface.co/artificialguybr/CUTEFRUITS-REDMOND-ZIMAGE/resolve/main/images/001.png",
1197
+ "weight_name": "[ZImage.Turbo]CuteFruits_Redmond.safetensors"
1198
+ },
1199
+ {
1200
+ "title": "Digitalasset Redmond Zimage",
1201
+ "repo": "artificialguybr/DIGITALASSET-REDMOND-ZIMAGE",
1202
+ "trigger_word": "Digital Asset",
1203
+ "family": "z-image",
1204
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1205
+ "image": "https://huggingface.co/artificialguybr/DIGITALASSET-REDMOND-ZIMAGE/resolve/main/images/001.png",
1206
+ "weight_name": "[ZImage.Turbo]DigitalAssetMedia_Redmond.safetensors"
1207
+ },
1208
+ {
1209
+ "title": "Doodle Redmond Zimage",
1210
+ "repo": "artificialguybr/Doodle-Redmond-ZIMAGE",
1211
+ "trigger_word": "Doodle, DoodleRedm",
1212
+ "family": "z-image",
1213
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1214
+ "image": "https://huggingface.co/artificialguybr/Doodle-Redmond-ZIMAGE/resolve/main/images/001.png",
1215
+ "weight_name": "[ZImage.Turbo]Doodle_Redmond.safetensors"
1216
+ },
1217
+ {
1218
+ "title": "Doubleexposure Redmond Zimage",
1219
+ "repo": "artificialguybr/DOUBLEEXPOSURE-REDMOND-ZIMAGE",
1220
+ "trigger_word": "Double Exposure, DoubleExposureREDAF",
1221
+ "family": "z-image",
1222
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1223
+ "image": "https://huggingface.co/artificialguybr/DOUBLEEXPOSURE-REDMOND-ZIMAGE/resolve/main/images/002.png",
1224
+ "weight_name": "[ZImage.Turbo]DoubleExposure_Redmond.safetensors"
1225
+ },
1226
+ {
1227
+ "title": "Filmgrain Redmond Zimage",
1228
+ "repo": "artificialguybr/FILMGRAIN-REDMOND-ZIMAGE",
1229
+ "trigger_word": "FILMGRAIN, FilmGrainAF",
1230
+ "family": "z-image",
1231
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1232
+ "image": "https://huggingface.co/artificialguybr/FILMGRAIN-REDMOND-ZIMAGE/resolve/main/images/002.png",
1233
+ "weight_name": "[ZImage.Turbo]FilmGrain_Redmond.safetensors"
1234
+ },
1235
+ {
1236
+ "title": "Fisheye Redmond Zimage",
1237
+ "repo": "artificialguybr/FISHEYE-REDMOND-ZIMAGE",
1238
+ "trigger_word": "Fish Eye Lens, Fish eye camera",
1239
+ "family": "z-image",
1240
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1241
+ "image": "https://huggingface.co/artificialguybr/FISHEYE-REDMOND-ZIMAGE/resolve/main/images/001.png",
1242
+ "weight_name": "[ZImage.Turbo]FishEye_Redmond.safetensors"
1243
+ },
1244
+ {
1245
+ "title": "Fluent Emoji Redmond Zimage",
1246
+ "repo": "artificialguybr/FLUENT-EMOJI-REDMOND-ZIMAGE",
1247
+ "trigger_word": "EMOJI",
1248
+ "family": "z-image",
1249
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1250
+ "image": "https://huggingface.co/artificialguybr/FLUENT-EMOJI-REDMOND-ZIMAGE/resolve/main/images/001.png",
1251
+ "weight_name": "[ZImage.Turbo]Emoji_Redmond.safetensors"
1252
+ },
1253
+ {
1254
+ "title": "Icons Redmond Zimageturbo",
1255
+ "repo": "artificialguybr/ICONS-REDMOND-ZIMAGETURBO",
1256
+ "trigger_word": "ICREDM, ICONS",
1257
+ "family": "z-image",
1258
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1259
+ "image": "https://huggingface.co/artificialguybr/ICONS-REDMOND-ZIMAGETURBO/resolve/main/images/001.png",
1260
+ "weight_name": "[ZImage.Turbo]Icons_Redmond.safetensors"
1261
+ },
1262
+ {
1263
+ "title": "Isometric Redmond Zimage",
1264
+ "repo": "artificialguybr/ISOMETRIC-REDMOND-ZIMAGE",
1265
+ "trigger_word": "ISOMETRIC, ISOMETRICREDM",
1266
+ "family": "z-image",
1267
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1268
+ "image": "https://huggingface.co/artificialguybr/ISOMETRIC-REDMOND-ZIMAGE/resolve/main/images/003.png",
1269
+ "weight_name": "[ZImage.Turbo]Isometric_Redmond.safetensors"
1270
+ },
1271
+ {
1272
+ "title": "Lineartanime Redmond Zimageturbo",
1273
+ "repo": "artificialguybr/LineartAnime-Redmond-ZImageTurbo",
1274
+ "trigger_word": "Lineart, LineAniAF",
1275
+ "family": "z-image",
1276
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1277
+ "image": "https://huggingface.co/artificialguybr/LineartAnime-Redmond-ZImageTurbo/resolve/main/images/1769942706388__000001000_0.jpg",
1278
+ "weight_name": "[ZImage.Turbo]LineArt_Redmond.safetensors"
1279
+ },
1280
+ {
1281
+ "title": "Logo Redmond Zimageturbo",
1282
+ "repo": "artificialguybr/LOGO-REDMOND-ZIMAGETURBO",
1283
+ "trigger_word": "Logo, logoredmaf",
1284
+ "family": "z-image",
1285
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1286
+ "image": "https://huggingface.co/artificialguybr/LOGO-REDMOND-ZIMAGETURBO/resolve/main/images/z_deturbo_logo_01.png",
1287
+ "weight_name": "[ZImage.Turbo]Logo_Redmond.safetensors"
1288
+ },
1289
+ {
1290
+ "title": "Mockups Redmond Zimage",
1291
+ "repo": "artificialguybr/MOCKUPS-REDMOND-ZIMAGE",
1292
+ "trigger_word": "MOCKUP",
1293
+ "family": "z-image",
1294
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1295
+ "image": "https://huggingface.co/artificialguybr/MOCKUPS-REDMOND-ZIMAGE/resolve/main/images/001.png",
1296
+ "weight_name": "[ZImage.Turbo]Mockups_Redmond.safetensors"
1297
+ },
1298
+ {
1299
+ "title": "Phonecasecover Redmond Zimage",
1300
+ "repo": "artificialguybr/PHONECASECOVER-REDMOND-ZIMAGE",
1301
+ "trigger_word": "Phone Case Cover",
1302
+ "family": "z-image",
1303
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1304
+ "image": "https://huggingface.co/artificialguybr/PHONECASECOVER-REDMOND-ZIMAGE/resolve/main/images/002.png",
1305
+ "weight_name": "[ZImage.Turbo]PhoneCaseCovers_Redmond.safetensors"
1306
+ },
1307
+ {
1308
+ "title": "Pixelart Redmond Zimageturbo",
1309
+ "repo": "artificialguybr/PIXELART-REDMOND-ZIMAGETURBO",
1310
+ "trigger_word": "Pixel Art, PixArFK",
1311
+ "family": "z-image",
1312
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1313
+ "image": "https://huggingface.co/artificialguybr/PIXELART-REDMOND-ZIMAGETURBO/resolve/main/images/pixarfk64_z_deturbo_logo_001.png",
1314
+ "weight_name": "[ZImage.Turbo]PixelArt_Redmond.safetensors"
1315
+ },
1316
+ {
1317
+ "title": "Polaroid Redmond Zimage",
1318
+ "repo": "artificialguybr/POLAROID-REDMOND-ZIMAGE",
1319
+ "trigger_word": "Polaroid Photo, PolaroidRedAF",
1320
+ "family": "z-image",
1321
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1322
+ "image": "https://huggingface.co/artificialguybr/POLAROID-REDMOND-ZIMAGE/resolve/main/images/001.png",
1323
+ "weight_name": "[ZImage.Turbo]Polaroid_Redmond.safetensors"
1324
+ },
1325
+ {
1326
+ "title": "Poster Redmond Zimage",
1327
+ "repo": "artificialguybr/POSTER-REDMOND-ZIMAGE",
1328
+ "trigger_word": "Poster",
1329
+ "family": "z-image",
1330
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1331
+ "image": "https://huggingface.co/artificialguybr/POSTER-REDMOND-ZIMAGE/resolve/main/images/001.png",
1332
+ "weight_name": "[ZImage.Turbo]Poster_Redmond.safetensors"
1333
+ },
1334
+ {
1335
+ "title": "Postermovie Redmond Zimage",
1336
+ "repo": "artificialguybr/POSTERMOVIE-REDMOND-ZIMAGE",
1337
+ "trigger_word": "Poster Movie",
1338
+ "family": "z-image",
1339
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1340
+ "image": "https://huggingface.co/artificialguybr/POSTERMOVIE-REDMOND-ZIMAGE/resolve/main/images/001.png",
1341
+ "weight_name": "[ZImage.Turbo]PosterMovie_Redmond.safetensors"
1342
+ },
1343
+ {
1344
+ "title": "Ps1graphics Redmond Zimageturbo",
1345
+ "repo": "artificialguybr/PS1Graphics-Redmond-ZimageTURBO",
1346
+ "trigger_word": "Playstation 1 Graphics, PS1 Game",
1347
+ "family": "z-image",
1348
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1349
+ "image": "https://huggingface.co/artificialguybr/PS1Graphics-Redmond-ZimageTURBO/resolve/main/images/001.png",
1350
+ "weight_name": "[ZImage.Turbo]PS1Screencap_Redmond.safetensors"
1351
+ },
1352
+ {
1353
+ "title": "Snapchatselfie Redmond Zimage",
1354
+ "repo": "artificialguybr/SNAPCHATSELFIE-REDMOND-ZIMAGE",
1355
+ "trigger_word": "Snapchat Selfie, Snapchat pic",
1356
+ "family": "z-image",
1357
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1358
+ "image": "https://huggingface.co/artificialguybr/SNAPCHATSELFIE-REDMOND-ZIMAGE/resolve/main/images/001.png",
1359
+ "weight_name": "[ZImage.Turbo]SnapchatSelfie_Redmond.safetensors"
1360
+ },
1361
+ {
1362
+ "title": "Stickers Redmond Zimageturbo",
1363
+ "repo": "artificialguybr/STICKERS-REDMOND-ZIMAGETURBO",
1364
+ "trigger_word": "Stickers, Sticker",
1365
+ "family": "z-image",
1366
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1367
+ "image": "https://huggingface.co/artificialguybr/STICKERS-REDMOND-ZIMAGETURBO/resolve/main/images/1770706548563__000000200_0.jpg",
1368
+ "weight_name": "[ZImage.Turbo]Stickers_Redmond.safetensors"
1369
+ },
1370
+ {
1371
+ "title": "Studioghibli Redmond Zimage",
1372
+ "repo": "artificialguybr/STUDIOGHIBLI-REDMOND-ZIMAGE",
1373
+ "trigger_word": "Studio Ghibli Style, StdGbRedmAF",
1374
+ "family": "z-image",
1375
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1376
+ "image": "https://huggingface.co/artificialguybr/STUDIOGHIBLI-REDMOND-ZIMAGE/resolve/main/images/stdgbredmaf_z_002.png",
1377
+ "weight_name": "[ZImage.Turbo]Stdgbredmaf_Redmond.safetensors"
1378
+ },
1379
+ {
1380
+ "title": "Tshirtdesign Redmond Zimageturbo",
1381
+ "repo": "artificialguybr/TSHIRTDESIGN-REDMOND-ZIMAGETURBO",
1382
+ "trigger_word": "T shirt design, TshirtDesignAF",
1383
+ "family": "z-image",
1384
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1385
+ "image": "https://huggingface.co/artificialguybr/TSHIRTDESIGN-REDMOND-ZIMAGETURBO/resolve/main/images/tshirtdesign_z_deturbo_logo_003.png",
1386
+ "weight_name": "[ZImage.Turbo]Tshirtdesign_Redmond.safetensors"
1387
+ },
1388
+ {
1389
+ "title": "Xboxavatar Redmond Zimage",
1390
+ "repo": "artificialguybr/XBOXAVATAR-REDMOND-ZIMAGE",
1391
+ "trigger_word": "XBOX AVATAR",
1392
+ "family": "z-image",
1393
+ "base_model": "Tongyi-MAI/Z-Image-Turbo",
1394
+ "image": "https://huggingface.co/artificialguybr/XBOXAVATAR-REDMOND-ZIMAGE/resolve/main/images/001.png",
1395
+ "weight_name": "[ZImage.Turbo]XboxAvatar_Redmond.safetensors"
1396
+ }
1397
+ ]
requirements.txt CHANGED
@@ -1,5 +1,10 @@
1
- torch
2
- diffusers
 
 
 
 
 
3
  spaces
 
4
  transformers
5
- peft
 
1
+ accelerate
2
+ diffusers @ git+https://github.com/huggingface/diffusers.git
3
+ gradio>=4.42.0
4
+ peft
5
+ Pillow
6
+ requests
7
+ safetensors
8
  spaces
9
+ torch
10
  transformers
 
scripts/update_loras_catalog.py ADDED
@@ -0,0 +1,290 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """Build a LoRA catalog for a Hugging Face user.
3
+
4
+ Usage:
5
+ python scripts/update_loras_catalog.py --author artificialguybr --output loras.json
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import argparse
11
+ import json
12
+ import re
13
+ from dataclasses import dataclass
14
+ from pathlib import Path
15
+ from typing import Any
16
+
17
+ import requests
18
+
19
+ HF_API_MODELS = "https://huggingface.co/api/models"
20
+ IMAGE_EXTENSIONS = (".png", ".jpg", ".jpeg", ".webp")
21
+
22
+
23
+ @dataclass
24
+ class LoraEntry:
25
+ title: str
26
+ repo: str
27
+ trigger_word: str
28
+ family: str
29
+ base_model: str
30
+ image: str
31
+ weight_name: str
32
+
33
+ def as_dict(self) -> dict[str, Any]:
34
+ return {
35
+ "title": self.title,
36
+ "repo": self.repo,
37
+ "trigger_word": self.trigger_word,
38
+ "family": self.family,
39
+ "base_model": self.base_model,
40
+ "image": self.image,
41
+ "weight_name": self.weight_name,
42
+ }
43
+
44
+
45
+ def parse_args() -> argparse.Namespace:
46
+ parser = argparse.ArgumentParser()
47
+ parser.add_argument("--author", required=True, help="HF username/org")
48
+ parser.add_argument("--output", default="loras.json", help="Output JSON path")
49
+ return parser.parse_args()
50
+
51
+
52
+ def load_existing_triggers(path: Path) -> dict[str, str]:
53
+ if not path.exists():
54
+ return {}
55
+ try:
56
+ content = json.loads(path.read_text(encoding="utf-8"))
57
+ except Exception:
58
+ return {}
59
+ triggers: dict[str, str] = {}
60
+ for item in content:
61
+ repo = str(item.get("repo", "")).strip()
62
+ trigger = str(item.get("trigger_word", "")).strip()
63
+ if repo and trigger:
64
+ triggers[repo] = trigger
65
+ return triggers
66
+
67
+
68
+ def paginated_models(author: str) -> list[dict[str, Any]]:
69
+ models: list[dict[str, Any]] = []
70
+ url = HF_API_MODELS
71
+ params: dict[str, Any] | None = {"author": author, "full": "true", "limit": 100}
72
+
73
+ while True:
74
+ response = requests.get(url, params=params, timeout=60)
75
+ response.raise_for_status()
76
+ chunk = response.json()
77
+ models.extend(chunk)
78
+
79
+ link_header = response.headers.get("Link", "")
80
+ if 'rel="next"' not in link_header:
81
+ break
82
+
83
+ next_url = link_header.split(";")[0].strip("<>")
84
+ url = next_url
85
+ params = None
86
+
87
+ return models
88
+
89
+
90
+ def extract_base_model(tags: list[str]) -> str:
91
+ for tag in tags:
92
+ if tag.startswith("base_model:adapter:"):
93
+ return tag.replace("base_model:adapter:", "", 1)
94
+ for tag in tags:
95
+ if tag.startswith("base_model:"):
96
+ return tag.replace("base_model:", "", 1)
97
+ return ""
98
+
99
+
100
+ def detect_family(base_model: str, repo_id: str, tags: list[str]) -> str:
101
+ base = base_model.lower()
102
+ if "stable-diffusion-xl" in base or "sdxl" in base:
103
+ return "sdxl"
104
+ if "stable-diffusion-v1-5" in base or "sd 1.5" in base or "sd1.5" in base or "sd-1-5" in base:
105
+ return "sd15"
106
+ if "qwen-image" in base or "qwen image" in base:
107
+ return "qwen-image"
108
+ if "z-image" in base or "zimage" in base:
109
+ return "z-image"
110
+ if "flux" in base:
111
+ return "flux"
112
+
113
+ text = " ".join([repo_id.lower(), *[t.lower() for t in tags]])
114
+ if "stable-diffusion-xl" in text or "sdxl" in text:
115
+ return "sdxl"
116
+ if "stable-diffusion-v1-5" in text or "sd 1.5" in text or "sd1.5" in text or "sd-1-5" in text:
117
+ return "sd15"
118
+ if "qwen-image" in text or "qwen image" in text:
119
+ return "qwen-image"
120
+ if "z-image" in text or "zimage" in text:
121
+ return "z-image"
122
+ if "flux" in text:
123
+ return "flux"
124
+ return "other"
125
+
126
+
127
+ def is_t2i_lora(model: dict[str, Any]) -> bool:
128
+ if model.get("pipeline_tag") != "text-to-image":
129
+ return False
130
+ tags = [str(tag).lower() for tag in model.get("tags", [])]
131
+ if any("lora" in tag for tag in tags):
132
+ return True
133
+ return "base_model:adapter:" in " ".join(tags)
134
+
135
+
136
+ def infer_title(repo_id: str) -> str:
137
+ name = repo_id.split("/", 1)[-1]
138
+ cleaned = name.replace("_", " ").replace("-", " ").strip()
139
+ return " ".join(part.capitalize() for part in cleaned.split())
140
+
141
+
142
+ def pick_cover_image(repo_id: str, siblings: list[dict[str, Any]]) -> str:
143
+ for item in siblings:
144
+ filename = str(item.get("rfilename", ""))
145
+ lower = filename.lower()
146
+ if lower.endswith(IMAGE_EXTENSIONS) and not lower.startswith("."):
147
+ return f"https://huggingface.co/{repo_id}/resolve/main/{filename}"
148
+ return ""
149
+
150
+
151
+ def pick_weight_name(siblings: list[dict[str, Any]]) -> str:
152
+ preferred = []
153
+ fallback = []
154
+ for item in siblings:
155
+ filename = str(item.get("rfilename", ""))
156
+ lower = filename.lower()
157
+ if not lower.endswith(".safetensors"):
158
+ continue
159
+ if "comfyui/" in lower:
160
+ continue
161
+ if lower.startswith("adapter_model"):
162
+ preferred.append(filename)
163
+ continue
164
+ if "/" not in filename:
165
+ preferred.append(filename)
166
+ continue
167
+ fallback.append(filename)
168
+
169
+ if preferred:
170
+ return sorted(preferred)[0]
171
+ if fallback:
172
+ return sorted(fallback)[0]
173
+ return ""
174
+
175
+
176
+ def normalize_trigger(text: str) -> str:
177
+ cleaned = text.strip().strip("\"'").strip()
178
+ cleaned = re.sub(r"\s+", " ", cleaned)
179
+ cleaned = cleaned.strip(" ,;.")
180
+ if cleaned in {"-", "none", "n/a"}:
181
+ return ""
182
+ return cleaned
183
+
184
+
185
+ def extract_trigger_from_readme(readme: str) -> str:
186
+ frontmatter = readme
187
+ if readme.startswith("---"):
188
+ parts = readme.split("---", 2)
189
+ if len(parts) >= 3:
190
+ frontmatter = parts[1]
191
+
192
+ patterns = [
193
+ r"(?im)^\s*instance_prompt\s*:\s*(.+?)\s*$",
194
+ r"(?im)^\s*trigger_word\s*:\s*(.+?)\s*$",
195
+ r"(?im)^\s*activation[_ ]token\s*:\s*(.+?)\s*$",
196
+ r"(?im)^\s*trigger[_ ]phrase\s*:\s*(.+?)\s*$",
197
+ r"(?im)^\s*token\s*:\s*(.+?)\s*$",
198
+ ]
199
+
200
+ for pattern in patterns:
201
+ match = re.search(pattern, frontmatter)
202
+ if match:
203
+ trigger = normalize_trigger(match.group(1))
204
+ if trigger:
205
+ return trigger
206
+
207
+ body_patterns = [
208
+ r"(?im)trigger word\s*[:\-]\s*`?([^`\n]+)`?",
209
+ r"(?im)activation token\s*[:\-]\s*`?([^`\n]+)`?",
210
+ r"(?im)use\s+`([^`]+)`\s+in your prompt",
211
+ r"(?im)you can use\s+([^.\n]+)",
212
+ ]
213
+ for pattern in body_patterns:
214
+ match = re.search(pattern, readme)
215
+ if match:
216
+ trigger = normalize_trigger(match.group(1))
217
+ if trigger:
218
+ return trigger
219
+
220
+ return ""
221
+
222
+
223
+ def fetch_trigger_word(repo_id: str, session: requests.Session) -> str:
224
+ readme_url = f"https://huggingface.co/{repo_id}/raw/main/README.md"
225
+ try:
226
+ response = session.get(readme_url, timeout=30)
227
+ if response.status_code != 200:
228
+ return ""
229
+ return extract_trigger_from_readme(response.text)
230
+ except Exception:
231
+ return ""
232
+
233
+
234
+ def build_catalog(
235
+ models: list[dict[str, Any]], existing_triggers: dict[str, str]
236
+ ) -> list[dict[str, Any]]:
237
+ entries: list[LoraEntry] = []
238
+ session = requests.Session()
239
+
240
+ for model in models:
241
+ if not is_t2i_lora(model):
242
+ continue
243
+
244
+ repo_id = model["id"]
245
+ tags = [str(tag) for tag in model.get("tags", [])]
246
+ base_model = extract_base_model(tags)
247
+ family = detect_family(base_model, repo_id, tags)
248
+ siblings = model.get("siblings") or []
249
+ trigger_word = fetch_trigger_word(repo_id, session) or existing_triggers.get(repo_id, "")
250
+
251
+ entries.append(
252
+ LoraEntry(
253
+ title=infer_title(repo_id),
254
+ repo=repo_id,
255
+ trigger_word=trigger_word,
256
+ family=family,
257
+ base_model=base_model,
258
+ image=pick_cover_image(repo_id, siblings),
259
+ weight_name=pick_weight_name(siblings),
260
+ )
261
+ )
262
+
263
+ entries.sort(key=lambda x: (x.family, x.title.lower()))
264
+ return [entry.as_dict() for entry in entries]
265
+
266
+
267
+ def main() -> None:
268
+ args = parse_args()
269
+ output_path = Path(args.output)
270
+ existing_triggers = load_existing_triggers(output_path)
271
+ models = paginated_models(args.author)
272
+ catalog = build_catalog(models, existing_triggers)
273
+
274
+ output_path.write_text(json.dumps(catalog, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
275
+
276
+ by_family: dict[str, int] = {}
277
+ for row in catalog:
278
+ fam = row["family"]
279
+ by_family[fam] = by_family.get(fam, 0) + 1
280
+ with_trigger = sum(1 for row in catalog if row.get("trigger_word"))
281
+
282
+ print(f"Saved {len(catalog)} LoRAs to {output_path}")
283
+ print(f"Trigger words filled: {with_trigger}")
284
+ print("Family counts:")
285
+ for fam in sorted(by_family):
286
+ print(f" - {fam}: {by_family[fam]}")
287
+
288
+
289
+ if __name__ == "__main__":
290
+ main()