hydra
Browse files- {feature_extractor β anime/feature_extractor}/preprocessor_config.json +0 -0
- model_index.json β anime/model_index.json +0 -0
- {safety_checker β anime/safety_checker}/config.json +0 -0
- {safety_checker β anime/safety_checker}/pytorch_model.bin +0 -0
- {scheduler β anime/scheduler}/scheduler_config.json +0 -0
- {text_encoder β anime/text_encoder}/config.json +0 -0
- {text_encoder β anime/text_encoder}/pytorch_model.bin +1 -1
- {tokenizer β anime/tokenizer}/merges.txt +0 -0
- {tokenizer β anime/tokenizer}/special_tokens_map.json +0 -0
- {tokenizer β anime/tokenizer}/tokenizer_config.json +0 -0
- {tokenizer β anime/tokenizer}/vocab.json +0 -0
- {unet β anime/unet}/config.json +0 -0
- {unet β anime/unet}/diffusion_pytorch_model.bin +1 -1
- {vae β anime/vae}/config.json +0 -0
- {vae β anime/vae}/diffusion_pytorch_model.bin +1 -1
- embeddings/kkw-NativeAmerican.pt +3 -0
- handler.py +237 -89
- lora/ASSv12-000011.safetensors +3 -0
- lora/BarbieCore.safetensors +3 -0
- lora/CyberPunkAI.safetensors +3 -0
- lora/EkuneSideDoggy.safetensors +3 -0
- lora/FutaCockCloseUp-v1.safetensors +3 -0
- lora/PovBlowjob-v3.safetensors +3 -0
- lora/dp_from_behind_v0.1b.safetensors +3 -0
- lora/ftm-v0.safetensors +3 -0
- lora/nurse_v11-05.safetensors +3 -0
- lora/qqq-grabbing_from_behind-v2-000006.safetensors +3 -0
- lora/rindou_v4.2.safetensors +3 -0
- lora/screaming.safetensors +3 -0
- lora/shibari_v20.safetensors +3 -0
- lora/tajnaclub_high_heelsv1.2.safetensors +3 -0
- lora/tgirls_V3_5.safetensors +3 -0
- lycoris/fapp9.safetensors +3 -0
- realistic/feature_extractor/preprocessor_config.json +28 -0
- realistic/model_index.json +33 -0
- realistic/safety_checker/config.json +168 -0
- realistic/safety_checker/pytorch_model.bin +3 -0
- realistic/scheduler/scheduler_config.json +15 -0
- realistic/text_encoder/config.json +24 -0
- realistic/text_encoder/pytorch_model.bin +3 -0
- realistic/tokenizer/merges.txt +0 -0
- realistic/tokenizer/special_tokens_map.json +24 -0
- realistic/tokenizer/tokenizer_config.json +33 -0
- realistic/tokenizer/vocab.json +0 -0
- realistic/unet/config.json +65 -0
- realistic/unet/diffusion_pytorch_model.bin +3 -0
- realistic/vae/config.json +31 -0
- realistic/vae/diffusion_pytorch_model.bin +3 -0
{feature_extractor β anime/feature_extractor}/preprocessor_config.json
RENAMED
File without changes
|
model_index.json β anime/model_index.json
RENAMED
File without changes
|
{safety_checker β anime/safety_checker}/config.json
RENAMED
File without changes
|
{safety_checker β anime/safety_checker}/pytorch_model.bin
RENAMED
File without changes
|
{scheduler β anime/scheduler}/scheduler_config.json
RENAMED
File without changes
|
{text_encoder β anime/text_encoder}/config.json
RENAMED
File without changes
|
{text_encoder β anime/text_encoder}/pytorch_model.bin
RENAMED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
size 492306077
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:ec3883f2cc6b4a8661212175bb7ccefe9f2309888d3e53c9f274e7de60acc88a
|
3 |
size 492306077
|
{tokenizer β anime/tokenizer}/merges.txt
RENAMED
File without changes
|
{tokenizer β anime/tokenizer}/special_tokens_map.json
RENAMED
File without changes
|
{tokenizer β anime/tokenizer}/tokenizer_config.json
RENAMED
File without changes
|
{tokenizer β anime/tokenizer}/vocab.json
RENAMED
File without changes
|
{unet β anime/unet}/config.json
RENAMED
File without changes
|
{unet β anime/unet}/diffusion_pytorch_model.bin
RENAMED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
size 3438366373
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:d8e4501ae1ba2c9950a2c06cbdd74a3317a4b4efbce54557163d114945760a0a
|
3 |
size 3438366373
|
{vae β anime/vae}/config.json
RENAMED
File without changes
|
{vae β anime/vae}/diffusion_pytorch_model.bin
RENAMED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
size 334712113
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:40bec3b829f93e173729fd6dca141f4488803311de360d60de1c7d3714953c0f
|
3 |
size 334712113
|
embeddings/kkw-NativeAmerican.pt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:ed4b15ad30845744274acde1341783cbfc115f520a41fe3d8457537dfef15a75
|
3 |
+
size 108492
|
handler.py
CHANGED
@@ -12,7 +12,7 @@ from typing import Union
|
|
12 |
from concurrent.futures import ThreadPoolExecutor
|
13 |
import numpy as np
|
14 |
from PIL import ImageFilter
|
15 |
-
|
16 |
|
17 |
import torch
|
18 |
from diffusers import (
|
@@ -20,6 +20,7 @@ from diffusers import (
|
|
20 |
DPMSolverMultistepScheduler,
|
21 |
DPMSolverSinglestepScheduler,
|
22 |
EulerAncestralDiscreteScheduler,
|
|
|
23 |
utils,
|
24 |
)
|
25 |
from safetensors.torch import load_file
|
@@ -41,20 +42,66 @@ if device.type != "cuda":
|
|
41 |
|
42 |
class EndpointHandler:
|
43 |
LORA_PATHS = {
|
44 |
-
"hairdetailer": str(REPO_DIR / "lora/hairdetailer.safetensors"),
|
45 |
-
"lora_leica": str(REPO_DIR / "lora/lora_leica.safetensors"),
|
46 |
-
"epiNoiseoffset_v2": str(REPO_DIR / "lora/epiNoiseoffset_v2.safetensors"),
|
47 |
-
"MBHU-TT2FRS":
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
"polyhedron_new_skin_v1.1":
|
52 |
-
REPO_DIR / "lora/polyhedron_new_skin_v1.1.safetensors"
|
53 |
-
|
54 |
-
|
55 |
-
"
|
56 |
-
|
57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
}
|
59 |
|
60 |
TEXTUAL_INVERSION = [
|
@@ -63,9 +110,13 @@ class EndpointHandler:
|
|
63 |
"token": "easynegative",
|
64 |
},
|
65 |
{
|
66 |
-
"weight_name": str(REPO_DIR / "embeddings/
|
67 |
"token": "badhandv4",
|
68 |
},
|
|
|
|
|
|
|
|
|
69 |
{
|
70 |
"weight_name": str(REPO_DIR / "embeddings/bad-artist-anime.pt"),
|
71 |
"token": "bad-artist-anime",
|
@@ -95,56 +146,119 @@ class EndpointHandler:
|
|
95 |
max_workers=1
|
96 |
) # Vous pouvez ajuster max_workers en fonction de vos besoins
|
97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
# load the optimized model
|
99 |
-
|
100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
custom_pipeline="lpw_stable_diffusion", # avoid 77 token limit
|
102 |
torch_dtype=torch.float16, # accelerate render
|
|
|
103 |
)
|
104 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
|
106 |
# https://stablediffusionapi.com/docs/a1111schedulers/
|
107 |
|
108 |
-
#
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
# use_karras_sigmas=True,
|
113 |
-
# algorithm_type="sde-dpmsolver++",
|
114 |
-
# )
|
115 |
|
116 |
-
#
|
117 |
-
|
118 |
-
|
119 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
)
|
121 |
|
122 |
-
|
123 |
-
self.pipe.safety_checker = None
|
124 |
|
125 |
-
|
126 |
-
|
127 |
|
128 |
-
#
|
129 |
-
self.
|
130 |
|
131 |
-
#
|
132 |
-
|
133 |
-
|
134 |
-
|
|
|
|
|
|
|
135 |
|
136 |
# Load loras one time only
|
137 |
# Must be replaced once we will know how to hot load/unload
|
138 |
# it use the own made load_lora function
|
139 |
self.load_selected_loras(
|
|
|
140 |
[
|
141 |
-
["polyhedron_new_skin_v1.1", 0.
|
142 |
["detailed_eye-10", 0.2],
|
143 |
-
["add_detail", 0.
|
144 |
["MuscleGirl_v1", 0.2],
|
145 |
-
|
|
|
|
|
|
|
|
|
|
|
146 |
)
|
147 |
|
|
|
|
|
148 |
def load_lora(self, pipeline, lora_path, lora_weight=0.5):
|
149 |
state_dict = load_file(lora_path)
|
150 |
LORA_PREFIX_UNET = "lora_unet"
|
@@ -221,19 +335,19 @@ class EndpointHandler:
|
|
221 |
|
222 |
return pipeline
|
223 |
|
224 |
-
def load_embeddings(self):
|
225 |
"""Load textual inversions, avoid bad prompts"""
|
226 |
for model in EndpointHandler.TEXTUAL_INVERSION:
|
227 |
-
|
228 |
".", weight_name=model["weight_name"], token=model["token"]
|
229 |
)
|
230 |
|
231 |
-
def load_selected_loras(self, selections):
|
232 |
"""Load Loras models, can lead to marvelous creations"""
|
233 |
for model_name, weight in selections:
|
234 |
-
lora_path = EndpointHandler.LORA_PATHS[model_name]
|
235 |
# self.pipe.load_lora_weights(lora_path)
|
236 |
-
self.load_lora(
|
237 |
|
238 |
def clean_negative_prompt(self, negative_prompt):
|
239 |
"""Clean negative prompt to remove already used negative prompt handlers"""
|
@@ -260,6 +374,30 @@ class EndpointHandler:
|
|
260 |
|
261 |
return negative_prompt
|
262 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
def clean_request_data(self):
|
264 |
"""Clean up the data related to a specific request ID."""
|
265 |
|
@@ -285,11 +423,12 @@ class EndpointHandler:
|
|
285 |
latents: Any,
|
286 |
request_id: str,
|
287 |
status: str,
|
|
|
288 |
):
|
289 |
try:
|
290 |
if status == "progress":
|
291 |
# Latents to numpy
|
292 |
-
img_data =
|
293 |
img_data = (img_data.squeeze() * 255).astype(np.uint8)
|
294 |
img = Image.fromarray(img_data, "RGB")
|
295 |
|
@@ -304,6 +443,7 @@ class EndpointHandler:
|
|
304 |
else:
|
305 |
# pil object
|
306 |
# print(latents)
|
|
|
307 |
img = latents
|
308 |
|
309 |
buffered = BytesIO()
|
@@ -335,48 +475,42 @@ class EndpointHandler:
|
|
335 |
|
336 |
if progress >= 100:
|
337 |
status = "complete"
|
|
|
|
|
|
|
|
|
|
|
|
|
338 |
else:
|
339 |
status = "in-progress"
|
|
|
340 |
|
341 |
return {
|
342 |
"flag": "success",
|
343 |
"status": status,
|
344 |
"progress": int(progress),
|
345 |
"image": latest_image,
|
|
|
346 |
}
|
347 |
|
348 |
-
def
|
349 |
-
"""
|
350 |
|
351 |
-
|
|
|
|
|
352 |
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
# ("hairdetailer", 0.5),
|
358 |
-
# ("lora_leica", 0.5),
|
359 |
-
# ("epiNoiseoffset_v2", 0.5),
|
360 |
-
# ]
|
361 |
|
362 |
-
|
363 |
-
required_fields = [
|
364 |
-
"prompt",
|
365 |
-
"negative_prompt",
|
366 |
-
"width",
|
367 |
-
"num_inference_steps",
|
368 |
-
"height",
|
369 |
-
"guidance_scale",
|
370 |
-
"request_id",
|
371 |
-
]
|
372 |
|
373 |
-
|
|
|
374 |
|
375 |
-
|
376 |
-
return {
|
377 |
-
"flag": "error",
|
378 |
-
"message": f"Missing fields: {', '.join(missing_fields)}",
|
379 |
-
}
|
380 |
|
381 |
# Now extract the fields
|
382 |
prompt = data["prompt"]
|
@@ -398,18 +532,14 @@ class EndpointHandler:
|
|
398 |
# Set the generator seed if provided
|
399 |
generator = torch.Generator(device="cuda").manual_seed(seed) if seed else None
|
400 |
|
401 |
-
#
|
402 |
-
#
|
403 |
-
#
|
404 |
-
# self.load_selected_loras(loras_model)
|
405 |
-
|
406 |
-
# set scale of loras, for now take only first scale of the loaded lora and apply to all until we find the way to apply specified scale
|
407 |
-
# scale = {"scale": loras_model[0][1]} if loras_model else None
|
408 |
|
409 |
try:
|
410 |
# 2. Process
|
411 |
with autocast(device.type):
|
412 |
-
image =
|
413 |
prompt=prompt,
|
414 |
guidance_scale=guidance_scale,
|
415 |
num_inference_steps=num_inference_steps,
|
@@ -419,15 +549,20 @@ class EndpointHandler:
|
|
419 |
generator=generator,
|
420 |
max_embeddings_multiples=5,
|
421 |
callback=lambda step, timestep, latents: self.progress_callback(
|
422 |
-
step, timestep, latents, request_id, "progress"
|
423 |
),
|
424 |
callback_steps=5,
|
425 |
-
# cross_attention_kwargs={"scale": 0.
|
426 |
-
)
|
427 |
|
428 |
# print(image)
|
429 |
self.progress_callback(
|
430 |
-
num_inference_steps,
|
|
|
|
|
|
|
|
|
|
|
431 |
)
|
432 |
|
433 |
self.inference_in_progress = False
|
@@ -444,6 +579,7 @@ class EndpointHandler:
|
|
444 |
|
445 |
action = data.get("action", None)
|
446 |
request_id = data.get("request_id")
|
|
|
447 |
|
448 |
# Check if the request_id is valid for all actions
|
449 |
if not request_id:
|
@@ -458,6 +594,11 @@ class EndpointHandler:
|
|
458 |
return self.check_progress(request_id)
|
459 |
|
460 |
elif action == "inference":
|
|
|
|
|
|
|
|
|
|
|
461 |
# Check if an inference is already in progress
|
462 |
if self.inference_in_progress:
|
463 |
return {
|
@@ -472,7 +613,14 @@ class EndpointHandler:
|
|
472 |
self.inference_images[request_id] = None
|
473 |
self.active_request_ids.append(request_id)
|
474 |
|
475 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
476 |
|
477 |
return {
|
478 |
"flag": "success",
|
|
|
12 |
from concurrent.futures import ThreadPoolExecutor
|
13 |
import numpy as np
|
14 |
from PIL import ImageFilter
|
15 |
+
from transformers import CLIPImageProcessor, CLIPTokenizer, CLIPModel
|
16 |
|
17 |
import torch
|
18 |
from diffusers import (
|
|
|
20 |
DPMSolverMultistepScheduler,
|
21 |
DPMSolverSinglestepScheduler,
|
22 |
EulerAncestralDiscreteScheduler,
|
23 |
+
StableDiffusionPipeline,
|
24 |
utils,
|
25 |
)
|
26 |
from safetensors.torch import load_file
|
|
|
42 |
|
43 |
class EndpointHandler:
|
44 |
LORA_PATHS = {
|
45 |
+
"hairdetailer": [str(REPO_DIR / "lora/hairdetailer.safetensors"), ""],
|
46 |
+
"lora_leica": [str(REPO_DIR / "lora/lora_leica.safetensors"), "leica_style"],
|
47 |
+
"epiNoiseoffset_v2": [str(REPO_DIR / "lora/epiNoiseoffset_v2.safetensors"), ""],
|
48 |
+
"MBHU-TT2FRS": [
|
49 |
+
str(REPO_DIR / "lora/MBHU-TT2FRS.safetensors"),
|
50 |
+
"flat breast, small breast, big breast, fake breast",
|
51 |
+
],
|
52 |
+
"polyhedron_new_skin_v1.1": [
|
53 |
+
str(REPO_DIR / "lora/polyhedron_new_skin_v1.1.safetensors"),
|
54 |
+
"skin blemish, detailed skin ",
|
55 |
+
],
|
56 |
+
"ShinyOiledSkin_v20": [
|
57 |
+
str(REPO_DIR / "lora/ShinyOiledSkin_v20-LoRA.safetensors"),
|
58 |
+
"shiny skin",
|
59 |
+
],
|
60 |
+
"detailed_eye-10": [str(REPO_DIR / "lora/detailed_eye-10.safetensors"), ""],
|
61 |
+
"add_detail": [str(REPO_DIR / "lora/add_detail.safetensors"), ""],
|
62 |
+
"MuscleGirl_v1": [str(REPO_DIR / "lora/MuscleGirl_v1.safetensors"), "abs"],
|
63 |
+
"nurse_v11-05": [str(REPO_DIR / "lora/nurse_v11-05.safetensors"), "nurse"],
|
64 |
+
"shibari_v20": [str(REPO_DIR / "lora/shibari_v20.safetensors"), "shibari,rope"],
|
65 |
+
"tajnaclub_high_heelsv1.2": [
|
66 |
+
str(REPO_DIR / "lora/tajnaclub_high_heelsv1.2.safetensors"),
|
67 |
+
"high heels",
|
68 |
+
],
|
69 |
+
"CyberPunkAI": [
|
70 |
+
str(REPO_DIR / "lora/CyberPunkAI.safetensors"),
|
71 |
+
"neon CyberpunkAI",
|
72 |
+
],
|
73 |
+
"FutaCockCloseUp-v1": [
|
74 |
+
str(REPO_DIR / "lora/FutaCockCloseUp-v1.safetensors"),
|
75 |
+
"huge penis",
|
76 |
+
],
|
77 |
+
"PovBlowjob-v3": [
|
78 |
+
str(REPO_DIR / "lora/PovBlowjob-v3.safetensors"),
|
79 |
+
"blowjob, deepthroat, kneeling, runny makeup, creampie",
|
80 |
+
],
|
81 |
+
"dp_from_behind_v0.1b": [
|
82 |
+
str(REPO_DIR / "lora/dp_from_behind_v0.1b.safetensors"),
|
83 |
+
"1girl, 2boys, double penetration, multiple penises",
|
84 |
+
],
|
85 |
+
"EkuneSideDoggy": [
|
86 |
+
str(REPO_DIR / "lora/EkuneSideDoggy.safetensors"),
|
87 |
+
"sidedoggystyle, doggystyle",
|
88 |
+
],
|
89 |
+
"qqq-grabbing_from_behind-v2-000006": [
|
90 |
+
str(REPO_DIR / "lora/qqq-grabbing_from_behind-v2-000006.safetensors"),
|
91 |
+
"grabbing from behind, breast grab",
|
92 |
+
],
|
93 |
+
"ftm-v0": [
|
94 |
+
str(REPO_DIR / "lora/ftm-v0.safetensors"),
|
95 |
+
"big mouth, tongue, long tongue",
|
96 |
+
],
|
97 |
+
"tgirls_V3_5": [
|
98 |
+
str(REPO_DIR / "lora/tgirls_V3_5.safetensors"),
|
99 |
+
"large penis, penis, erect penis",
|
100 |
+
],
|
101 |
+
"fapp9": [
|
102 |
+
str(REPO_DIR / "lora/fapp9.safetensors"),
|
103 |
+
"large penis, penis, erect penis",
|
104 |
+
],
|
105 |
}
|
106 |
|
107 |
TEXTUAL_INVERSION = [
|
|
|
110 |
"token": "easynegative",
|
111 |
},
|
112 |
{
|
113 |
+
"weight_name": str(REPO_DIR / "embeddings/kkw-NativeAmerican.pt"),
|
114 |
"token": "badhandv4",
|
115 |
},
|
116 |
+
{
|
117 |
+
"weight_name": str(REPO_DIR / "embeddings/badhandv4.pt"),
|
118 |
+
"token": "kkw-Afro, kkw-Asian, kkw-Euro ",
|
119 |
+
},
|
120 |
{
|
121 |
"weight_name": str(REPO_DIR / "embeddings/bad-artist-anime.pt"),
|
122 |
"token": "bad-artist-anime",
|
|
|
146 |
max_workers=1
|
147 |
) # Vous pouvez ajuster max_workers en fonction de vos besoins
|
148 |
|
149 |
+
realistic_path = str(REPO_DIR / "realistic/")
|
150 |
+
self.pipe_realistic, self.safety_checker = self.load_realistic(realistic_path)
|
151 |
+
|
152 |
+
anime_path = str(REPO_DIR / "anime/")
|
153 |
+
self.pipe_anime, self.pipe_anime_safety_checker = self.load_anime(anime_path)
|
154 |
+
|
155 |
+
# Load CLipImagePRocessor for NSFW check later
|
156 |
+
self.image_processor = CLIPImageProcessor.from_pretrained(
|
157 |
+
"openai/clip-vit-base-patch16"
|
158 |
+
)
|
159 |
+
|
160 |
+
def load_model_essentials(self, model_path):
|
161 |
+
"""common to all models"""
|
162 |
+
|
163 |
# load the optimized model
|
164 |
+
|
165 |
+
if "realistic" in model_path:
|
166 |
+
pipe = DiffusionPipeline.from_pretrained(
|
167 |
+
pretrained_model_name_or_path=model_path,
|
168 |
+
custom_pipeline="lpw_stable_diffusion", # avoid 77 token limit
|
169 |
+
torch_dtype=torch.float16, # accelerate render
|
170 |
+
)
|
171 |
+
|
172 |
+
safety_checker = pipe.safety_checker.to(device).to(torch.float16)
|
173 |
+
else:
|
174 |
+
safety_checker = None
|
175 |
+
|
176 |
+
pipe = DiffusionPipeline.from_pretrained(
|
177 |
+
pretrained_model_name_or_path=model_path,
|
178 |
custom_pipeline="lpw_stable_diffusion", # avoid 77 token limit
|
179 |
torch_dtype=torch.float16, # accelerate render
|
180 |
+
safety_checker=None, # Mode boulardus
|
181 |
)
|
182 |
+
|
183 |
+
pipe = pipe.to(device)
|
184 |
+
|
185 |
+
# Disable progress bar
|
186 |
+
pipe.set_progress_bar_config(disable=True)
|
187 |
+
|
188 |
+
# Load negative embeddings to avoid bad hands, etc
|
189 |
+
self.load_embeddings(pipe)
|
190 |
+
|
191 |
+
# boosts performance by another 20%
|
192 |
+
pipe.enable_xformers_memory_efficient_attention()
|
193 |
+
pipe.enable_attention_slicing() # may need a requirement in the root with xformer
|
194 |
+
|
195 |
+
return pipe, safety_checker
|
196 |
+
|
197 |
+
def load_anime(self, path):
|
198 |
+
"""Load anime model"""
|
199 |
+
|
200 |
+
# Init pipe
|
201 |
+
pipe, safety_checker = self.load_model_essentials(path)
|
202 |
|
203 |
# https://stablediffusionapi.com/docs/a1111schedulers/
|
204 |
|
205 |
+
# Euler a
|
206 |
+
pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(
|
207 |
+
pipe.scheduler.config,
|
208 |
+
)
|
|
|
|
|
|
|
209 |
|
210 |
+
# Load loras one time only
|
211 |
+
# Must be replaced once we will know how to hot load/unload
|
212 |
+
# it use the own made load_lora function
|
213 |
+
self.load_selected_loras(
|
214 |
+
pipe,
|
215 |
+
[
|
216 |
+
["detailed_eye-10", 0.3],
|
217 |
+
["add_detail", 0.3],
|
218 |
+
["MuscleGirl_v1", 0.3],
|
219 |
+
["dp_from_behind_v0.1b", 0.2],
|
220 |
+
["shibari_v20", 0.03],
|
221 |
+
["ftm-v0", 0.03],
|
222 |
+
["PovBlowjob-v3", 0.03],
|
223 |
+
],
|
224 |
)
|
225 |
|
226 |
+
return pipe, safety_checker
|
|
|
227 |
|
228 |
+
def load_realistic(self, path):
|
229 |
+
"""Load realistic model"""
|
230 |
|
231 |
+
# Init pipe
|
232 |
+
pipe, safety_checker = self.load_model_essentials(path)
|
233 |
|
234 |
+
# https://stablediffusionapi.com/docs/a1111schedulers/
|
235 |
+
|
236 |
+
# DPM++ 2M Karras
|
237 |
+
pipe.scheduler = DPMSolverMultistepScheduler.from_config(
|
238 |
+
pipe.scheduler.config,
|
239 |
+
use_karras_sigmas=True,
|
240 |
+
)
|
241 |
|
242 |
# Load loras one time only
|
243 |
# Must be replaced once we will know how to hot load/unload
|
244 |
# it use the own made load_lora function
|
245 |
self.load_selected_loras(
|
246 |
+
pipe,
|
247 |
[
|
248 |
+
["polyhedron_new_skin_v1.1", 0.25],
|
249 |
["detailed_eye-10", 0.2],
|
250 |
+
["add_detail", 0.2],
|
251 |
["MuscleGirl_v1", 0.2],
|
252 |
+
["tgirls_V3_5", 0.02],
|
253 |
+
["PovBlowjob-v3", 0.02],
|
254 |
+
# ["dp_from_behind_v0.1b", 0.2],
|
255 |
+
["shibari_v20", 0.02],
|
256 |
+
["ftm-v0", 0.02],
|
257 |
+
],
|
258 |
)
|
259 |
|
260 |
+
return pipe, safety_checker
|
261 |
+
|
262 |
def load_lora(self, pipeline, lora_path, lora_weight=0.5):
|
263 |
state_dict = load_file(lora_path)
|
264 |
LORA_PREFIX_UNET = "lora_unet"
|
|
|
335 |
|
336 |
return pipeline
|
337 |
|
338 |
+
def load_embeddings(self, pipeline):
|
339 |
"""Load textual inversions, avoid bad prompts"""
|
340 |
for model in EndpointHandler.TEXTUAL_INVERSION:
|
341 |
+
pipeline.load_textual_inversion(
|
342 |
".", weight_name=model["weight_name"], token=model["token"]
|
343 |
)
|
344 |
|
345 |
+
def load_selected_loras(self, pipeline, selections):
|
346 |
"""Load Loras models, can lead to marvelous creations"""
|
347 |
for model_name, weight in selections:
|
348 |
+
lora_path = EndpointHandler.LORA_PATHS[model_name][0]
|
349 |
# self.pipe.load_lora_weights(lora_path)
|
350 |
+
self.load_lora(pipeline, lora_path, weight)
|
351 |
|
352 |
def clean_negative_prompt(self, negative_prompt):
|
353 |
"""Clean negative prompt to remove already used negative prompt handlers"""
|
|
|
374 |
|
375 |
return negative_prompt
|
376 |
|
377 |
+
def check_fields(self, data):
|
378 |
+
"""check for fields, if some missing return error"""
|
379 |
+
|
380 |
+
# 1. Verify input arguments
|
381 |
+
required_fields = [
|
382 |
+
"prompt",
|
383 |
+
"negative_prompt",
|
384 |
+
"width",
|
385 |
+
"num_inference_steps",
|
386 |
+
"height",
|
387 |
+
"guidance_scale",
|
388 |
+
"request_id",
|
389 |
+
]
|
390 |
+
|
391 |
+
missing_fields = [field for field in required_fields if field not in data]
|
392 |
+
|
393 |
+
if missing_fields:
|
394 |
+
return {
|
395 |
+
"flag": "error",
|
396 |
+
"message": f"Missing fields: {', '.join(missing_fields)}",
|
397 |
+
}
|
398 |
+
|
399 |
+
return False
|
400 |
+
|
401 |
def clean_request_data(self):
|
402 |
"""Clean up the data related to a specific request ID."""
|
403 |
|
|
|
423 |
latents: Any,
|
424 |
request_id: str,
|
425 |
status: str,
|
426 |
+
pipeline: Any,
|
427 |
):
|
428 |
try:
|
429 |
if status == "progress":
|
430 |
# Latents to numpy
|
431 |
+
img_data = pipeline.decode_latents(latents)
|
432 |
img_data = (img_data.squeeze() * 255).astype(np.uint8)
|
433 |
img = Image.fromarray(img_data, "RGB")
|
434 |
|
|
|
443 |
else:
|
444 |
# pil object
|
445 |
# print(latents)
|
446 |
+
|
447 |
img = latents
|
448 |
|
449 |
buffered = BytesIO()
|
|
|
475 |
|
476 |
if progress >= 100:
|
477 |
status = "complete"
|
478 |
+
|
479 |
+
# Check if Image is NSFW
|
480 |
+
image_data = base64.b64decode(latest_image)
|
481 |
+
image_io = BytesIO(image_data)
|
482 |
+
is_nsfw = self.check_nsfw(Image.open(image_io))[0]
|
483 |
+
# is_nsfw = "bypass"
|
484 |
else:
|
485 |
status = "in-progress"
|
486 |
+
is_nsfw = ""
|
487 |
|
488 |
return {
|
489 |
"flag": "success",
|
490 |
"status": status,
|
491 |
"progress": int(progress),
|
492 |
"image": latest_image,
|
493 |
+
"is_nsfw": is_nsfw,
|
494 |
}
|
495 |
|
496 |
+
def check_nsfw(self, image):
|
497 |
+
"""Check if image is NSFW"""
|
498 |
|
499 |
+
safety_checker_input = self.image_processor(image, return_tensors="pt").to(
|
500 |
+
device
|
501 |
+
)
|
502 |
|
503 |
+
image, has_nsfw_concept = self.safety_checker(
|
504 |
+
images=np.array(image),
|
505 |
+
clip_input=safety_checker_input.pixel_values.to(torch.float16),
|
506 |
+
)
|
|
|
|
|
|
|
|
|
507 |
|
508 |
+
return has_nsfw_concept
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
509 |
|
510 |
+
def start_inference(self, pipeline, data: Dict) -> Dict:
|
511 |
+
"""Start a new inference."""
|
512 |
|
513 |
+
global device
|
|
|
|
|
|
|
|
|
514 |
|
515 |
# Now extract the fields
|
516 |
prompt = data["prompt"]
|
|
|
532 |
# Set the generator seed if provided
|
533 |
generator = torch.Generator(device="cuda").manual_seed(seed) if seed else None
|
534 |
|
535 |
+
# set scale of loras (mix all loras and apply common scale, can't be indivual)
|
536 |
+
# scale = 0.25 # seems ok
|
537 |
+
# scale = 0.2
|
|
|
|
|
|
|
|
|
538 |
|
539 |
try:
|
540 |
# 2. Process
|
541 |
with autocast(device.type):
|
542 |
+
image = pipeline.text2img(
|
543 |
prompt=prompt,
|
544 |
guidance_scale=guidance_scale,
|
545 |
num_inference_steps=num_inference_steps,
|
|
|
549 |
generator=generator,
|
550 |
max_embeddings_multiples=5,
|
551 |
callback=lambda step, timestep, latents: self.progress_callback(
|
552 |
+
step, timestep, latents, request_id, "progress", pipeline
|
553 |
),
|
554 |
callback_steps=5,
|
555 |
+
# cross_attention_kwargs={"scale": 0.02},
|
556 |
+
)
|
557 |
|
558 |
# print(image)
|
559 |
self.progress_callback(
|
560 |
+
num_inference_steps,
|
561 |
+
0,
|
562 |
+
image.images[0],
|
563 |
+
request_id,
|
564 |
+
"complete",
|
565 |
+
pipeline,
|
566 |
)
|
567 |
|
568 |
self.inference_in_progress = False
|
|
|
579 |
|
580 |
action = data.get("action", None)
|
581 |
request_id = data.get("request_id")
|
582 |
+
genre = data.get("genre")
|
583 |
|
584 |
# Check if the request_id is valid for all actions
|
585 |
if not request_id:
|
|
|
594 |
return self.check_progress(request_id)
|
595 |
|
596 |
elif action == "inference":
|
597 |
+
# Check field before doing anything
|
598 |
+
check_fields = self.check_fields(data)
|
599 |
+
if check_fields:
|
600 |
+
return check_fields
|
601 |
+
|
602 |
# Check if an inference is already in progress
|
603 |
if self.inference_in_progress:
|
604 |
return {
|
|
|
613 |
self.inference_images[request_id] = None
|
614 |
self.active_request_ids.append(request_id)
|
615 |
|
616 |
+
# Load model according to genre
|
617 |
+
if genre == "anime":
|
618 |
+
pipe = self.pipe_anime
|
619 |
+
else:
|
620 |
+
pipe = self.pipe_realistic
|
621 |
+
|
622 |
+
self.executor.submit(self.start_inference, pipe, data)
|
623 |
+
# self.start_inference(data)
|
624 |
|
625 |
return {
|
626 |
"flag": "success",
|
lora/ASSv12-000011.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:70a5e09e70701195b0f8e359558cc1a17d26b6bd0c864010964875d7c5e68862
|
3 |
+
size 51912025
|
lora/BarbieCore.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:b6d1118c1bc942b248f07492e1ee149d118aae7916c7af9cdad1b58b2ce0c092
|
3 |
+
size 151112335
|
lora/CyberPunkAI.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:5a05b7123370fc40abdeaf6913cfec64e3d6a0633d52043e5a375d7a0ddbf7e1
|
3 |
+
size 151112443
|
lora/EkuneSideDoggy.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:e6c00be1d16bf804aaa406cc28385e18fb85aa006dd6b84848ffb06d9f04254a
|
3 |
+
size 37875655
|
lora/FutaCockCloseUp-v1.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:926d74e0d7a7bde7ac8cb9b4487222c30d21197675b3791c690ea057be0ea21d
|
3 |
+
size 151111728
|
lora/PovBlowjob-v3.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:5ca2bf4d3f7618fea43f1324d67ef220b07b6cc93d824067ad34ecf439cf9d5c
|
3 |
+
size 151118749
|
lora/dp_from_behind_v0.1b.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:7daf59a9e7c2fbb0a728fa4cd4dfc019a8009b07eca395e08eec22b9b62d1bfd
|
3 |
+
size 9567809
|
lora/ftm-v0.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:21be0e6c7673eefcb01d14fba3dcecc02104ce01e41c47f83c7f2156486e10d2
|
3 |
+
size 151444477
|
lora/nurse_v11-05.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:f98e01d6528f32ef47439c8cf696fb1bce7cd86f78136bfbb4b959690d7fc00e
|
3 |
+
size 19045712
|
lora/qqq-grabbing_from_behind-v2-000006.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:8a7be0c8e5e418699a251c6dfefdd4a5b52de8d2dd83eb7e18cad820f4d15a98
|
3 |
+
size 37877190
|
lora/rindou_v4.2.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:27fa90277cc0e007de331d57b7414f0b7a4a42a87e2d166e518521c7fd8796e4
|
3 |
+
size 9558043
|
lora/screaming.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:884e863e81b53539f4dac8d89b3154fb2b0996d7a72511cac580cc7596bd4a94
|
3 |
+
size 18992918
|
lora/shibari_v20.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:1764d4d9eeebab51ecf295330f983ebd206b20688feb8fd7c2a83f784ff0406d
|
3 |
+
size 37864830
|
lora/tajnaclub_high_heelsv1.2.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:9476e2fa9759e0bdb733825692ea2a60dd51075dfff38d7ed235d81f1ce3537e
|
3 |
+
size 18999240
|
lora/tgirls_V3_5.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:3ba32950fb1457aaf3876c3c7c2c9af4fd4ea857487d09c9eb9ed4bec9e716ef
|
3 |
+
size 38001393
|
lycoris/fapp9.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:70bfdbb77a5c1d390efb1c62cb9409541994667acdfdb942b5e0bc6d1ddda537
|
3 |
+
size 130206396
|
realistic/feature_extractor/preprocessor_config.json
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"crop_size": {
|
3 |
+
"height": 224,
|
4 |
+
"width": 224
|
5 |
+
},
|
6 |
+
"do_center_crop": true,
|
7 |
+
"do_convert_rgb": true,
|
8 |
+
"do_normalize": true,
|
9 |
+
"do_rescale": true,
|
10 |
+
"do_resize": true,
|
11 |
+
"feature_extractor_type": "CLIPFeatureExtractor",
|
12 |
+
"image_mean": [
|
13 |
+
0.48145466,
|
14 |
+
0.4578275,
|
15 |
+
0.40821073
|
16 |
+
],
|
17 |
+
"image_processor_type": "CLIPFeatureExtractor",
|
18 |
+
"image_std": [
|
19 |
+
0.26862954,
|
20 |
+
0.26130258,
|
21 |
+
0.27577711
|
22 |
+
],
|
23 |
+
"resample": 3,
|
24 |
+
"rescale_factor": 0.00392156862745098,
|
25 |
+
"size": {
|
26 |
+
"shortest_edge": 224
|
27 |
+
}
|
28 |
+
}
|
realistic/model_index.json
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"_class_name": "StableDiffusionPipeline",
|
3 |
+
"_diffusers_version": "0.20.0",
|
4 |
+
"feature_extractor": [
|
5 |
+
"transformers",
|
6 |
+
"CLIPFeatureExtractor"
|
7 |
+
],
|
8 |
+
"requires_safety_checker": true,
|
9 |
+
"safety_checker": [
|
10 |
+
"stable_diffusion",
|
11 |
+
"StableDiffusionSafetyChecker"
|
12 |
+
],
|
13 |
+
"scheduler": [
|
14 |
+
"diffusers",
|
15 |
+
"PNDMScheduler"
|
16 |
+
],
|
17 |
+
"text_encoder": [
|
18 |
+
"transformers",
|
19 |
+
"CLIPTextModel"
|
20 |
+
],
|
21 |
+
"tokenizer": [
|
22 |
+
"transformers",
|
23 |
+
"CLIPTokenizer"
|
24 |
+
],
|
25 |
+
"unet": [
|
26 |
+
"diffusers",
|
27 |
+
"UNet2DConditionModel"
|
28 |
+
],
|
29 |
+
"vae": [
|
30 |
+
"diffusers",
|
31 |
+
"AutoencoderKL"
|
32 |
+
]
|
33 |
+
}
|
realistic/safety_checker/config.json
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"_commit_hash": "cb41f3a270d63d454d385fc2e4f571c487c253c5",
|
3 |
+
"_name_or_path": "CompVis/stable-diffusion-safety-checker",
|
4 |
+
"architectures": [
|
5 |
+
"StableDiffusionSafetyChecker"
|
6 |
+
],
|
7 |
+
"initializer_factor": 1.0,
|
8 |
+
"logit_scale_init_value": 2.6592,
|
9 |
+
"model_type": "clip",
|
10 |
+
"projection_dim": 768,
|
11 |
+
"text_config": {
|
12 |
+
"_name_or_path": "",
|
13 |
+
"add_cross_attention": false,
|
14 |
+
"architectures": null,
|
15 |
+
"attention_dropout": 0.0,
|
16 |
+
"bad_words_ids": null,
|
17 |
+
"begin_suppress_tokens": null,
|
18 |
+
"bos_token_id": 49406,
|
19 |
+
"chunk_size_feed_forward": 0,
|
20 |
+
"cross_attention_hidden_size": null,
|
21 |
+
"decoder_start_token_id": null,
|
22 |
+
"diversity_penalty": 0.0,
|
23 |
+
"do_sample": false,
|
24 |
+
"dropout": 0.0,
|
25 |
+
"early_stopping": false,
|
26 |
+
"encoder_no_repeat_ngram_size": 0,
|
27 |
+
"eos_token_id": 49407,
|
28 |
+
"exponential_decay_length_penalty": null,
|
29 |
+
"finetuning_task": null,
|
30 |
+
"forced_bos_token_id": null,
|
31 |
+
"forced_eos_token_id": null,
|
32 |
+
"hidden_act": "quick_gelu",
|
33 |
+
"hidden_size": 768,
|
34 |
+
"id2label": {
|
35 |
+
"0": "LABEL_0",
|
36 |
+
"1": "LABEL_1"
|
37 |
+
},
|
38 |
+
"initializer_factor": 1.0,
|
39 |
+
"initializer_range": 0.02,
|
40 |
+
"intermediate_size": 3072,
|
41 |
+
"is_decoder": false,
|
42 |
+
"is_encoder_decoder": false,
|
43 |
+
"label2id": {
|
44 |
+
"LABEL_0": 0,
|
45 |
+
"LABEL_1": 1
|
46 |
+
},
|
47 |
+
"layer_norm_eps": 1e-05,
|
48 |
+
"length_penalty": 1.0,
|
49 |
+
"max_length": 20,
|
50 |
+
"max_position_embeddings": 77,
|
51 |
+
"min_length": 0,
|
52 |
+
"model_type": "clip_text_model",
|
53 |
+
"no_repeat_ngram_size": 0,
|
54 |
+
"num_attention_heads": 12,
|
55 |
+
"num_beam_groups": 1,
|
56 |
+
"num_beams": 1,
|
57 |
+
"num_hidden_layers": 12,
|
58 |
+
"num_return_sequences": 1,
|
59 |
+
"output_attentions": false,
|
60 |
+
"output_hidden_states": false,
|
61 |
+
"output_scores": false,
|
62 |
+
"pad_token_id": 1,
|
63 |
+
"prefix": null,
|
64 |
+
"problem_type": null,
|
65 |
+
"projection_dim": 512,
|
66 |
+
"pruned_heads": {},
|
67 |
+
"remove_invalid_values": false,
|
68 |
+
"repetition_penalty": 1.0,
|
69 |
+
"return_dict": true,
|
70 |
+
"return_dict_in_generate": false,
|
71 |
+
"sep_token_id": null,
|
72 |
+
"suppress_tokens": null,
|
73 |
+
"task_specific_params": null,
|
74 |
+
"temperature": 1.0,
|
75 |
+
"tf_legacy_loss": false,
|
76 |
+
"tie_encoder_decoder": false,
|
77 |
+
"tie_word_embeddings": true,
|
78 |
+
"tokenizer_class": null,
|
79 |
+
"top_k": 50,
|
80 |
+
"top_p": 1.0,
|
81 |
+
"torch_dtype": null,
|
82 |
+
"torchscript": false,
|
83 |
+
"transformers_version": "4.31.0",
|
84 |
+
"typical_p": 1.0,
|
85 |
+
"use_bfloat16": false,
|
86 |
+
"vocab_size": 49408
|
87 |
+
},
|
88 |
+
"torch_dtype": "float32",
|
89 |
+
"transformers_version": null,
|
90 |
+
"vision_config": {
|
91 |
+
"_name_or_path": "",
|
92 |
+
"add_cross_attention": false,
|
93 |
+
"architectures": null,
|
94 |
+
"attention_dropout": 0.0,
|
95 |
+
"bad_words_ids": null,
|
96 |
+
"begin_suppress_tokens": null,
|
97 |
+
"bos_token_id": null,
|
98 |
+
"chunk_size_feed_forward": 0,
|
99 |
+
"cross_attention_hidden_size": null,
|
100 |
+
"decoder_start_token_id": null,
|
101 |
+
"diversity_penalty": 0.0,
|
102 |
+
"do_sample": false,
|
103 |
+
"dropout": 0.0,
|
104 |
+
"early_stopping": false,
|
105 |
+
"encoder_no_repeat_ngram_size": 0,
|
106 |
+
"eos_token_id": null,
|
107 |
+
"exponential_decay_length_penalty": null,
|
108 |
+
"finetuning_task": null,
|
109 |
+
"forced_bos_token_id": null,
|
110 |
+
"forced_eos_token_id": null,
|
111 |
+
"hidden_act": "quick_gelu",
|
112 |
+
"hidden_size": 1024,
|
113 |
+
"id2label": {
|
114 |
+
"0": "LABEL_0",
|
115 |
+
"1": "LABEL_1"
|
116 |
+
},
|
117 |
+
"image_size": 224,
|
118 |
+
"initializer_factor": 1.0,
|
119 |
+
"initializer_range": 0.02,
|
120 |
+
"intermediate_size": 4096,
|
121 |
+
"is_decoder": false,
|
122 |
+
"is_encoder_decoder": false,
|
123 |
+
"label2id": {
|
124 |
+
"LABEL_0": 0,
|
125 |
+
"LABEL_1": 1
|
126 |
+
},
|
127 |
+
"layer_norm_eps": 1e-05,
|
128 |
+
"length_penalty": 1.0,
|
129 |
+
"max_length": 20,
|
130 |
+
"min_length": 0,
|
131 |
+
"model_type": "clip_vision_model",
|
132 |
+
"no_repeat_ngram_size": 0,
|
133 |
+
"num_attention_heads": 16,
|
134 |
+
"num_beam_groups": 1,
|
135 |
+
"num_beams": 1,
|
136 |
+
"num_channels": 3,
|
137 |
+
"num_hidden_layers": 24,
|
138 |
+
"num_return_sequences": 1,
|
139 |
+
"output_attentions": false,
|
140 |
+
"output_hidden_states": false,
|
141 |
+
"output_scores": false,
|
142 |
+
"pad_token_id": null,
|
143 |
+
"patch_size": 14,
|
144 |
+
"prefix": null,
|
145 |
+
"problem_type": null,
|
146 |
+
"projection_dim": 512,
|
147 |
+
"pruned_heads": {},
|
148 |
+
"remove_invalid_values": false,
|
149 |
+
"repetition_penalty": 1.0,
|
150 |
+
"return_dict": true,
|
151 |
+
"return_dict_in_generate": false,
|
152 |
+
"sep_token_id": null,
|
153 |
+
"suppress_tokens": null,
|
154 |
+
"task_specific_params": null,
|
155 |
+
"temperature": 1.0,
|
156 |
+
"tf_legacy_loss": false,
|
157 |
+
"tie_encoder_decoder": false,
|
158 |
+
"tie_word_embeddings": true,
|
159 |
+
"tokenizer_class": null,
|
160 |
+
"top_k": 50,
|
161 |
+
"top_p": 1.0,
|
162 |
+
"torch_dtype": null,
|
163 |
+
"torchscript": false,
|
164 |
+
"transformers_version": "4.31.0",
|
165 |
+
"typical_p": 1.0,
|
166 |
+
"use_bfloat16": false
|
167 |
+
}
|
168 |
+
}
|
realistic/safety_checker/pytorch_model.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:753acd54aa6d288d6c0ce9d51468eb28f495fcbaacf0edf755fa5fc7ce678cd9
|
3 |
+
size 1216062333
|
realistic/scheduler/scheduler_config.json
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"_class_name": "PNDMScheduler",
|
3 |
+
"_diffusers_version": "0.20.0",
|
4 |
+
"beta_end": 0.012,
|
5 |
+
"beta_schedule": "scaled_linear",
|
6 |
+
"beta_start": 0.00085,
|
7 |
+
"clip_sample": false,
|
8 |
+
"num_train_timesteps": 1000,
|
9 |
+
"prediction_type": "epsilon",
|
10 |
+
"set_alpha_to_one": false,
|
11 |
+
"skip_prk_steps": true,
|
12 |
+
"steps_offset": 1,
|
13 |
+
"timestep_spacing": "leading",
|
14 |
+
"trained_betas": null
|
15 |
+
}
|
realistic/text_encoder/config.json
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"architectures": [
|
3 |
+
"CLIPTextModel"
|
4 |
+
],
|
5 |
+
"attention_dropout": 0.0,
|
6 |
+
"bos_token_id": 0,
|
7 |
+
"dropout": 0.0,
|
8 |
+
"eos_token_id": 2,
|
9 |
+
"hidden_act": "quick_gelu",
|
10 |
+
"hidden_size": 768,
|
11 |
+
"initializer_factor": 1.0,
|
12 |
+
"initializer_range": 0.02,
|
13 |
+
"intermediate_size": 3072,
|
14 |
+
"layer_norm_eps": 1e-05,
|
15 |
+
"max_position_embeddings": 77,
|
16 |
+
"model_type": "clip_text_model",
|
17 |
+
"num_attention_heads": 12,
|
18 |
+
"num_hidden_layers": 12,
|
19 |
+
"pad_token_id": 1,
|
20 |
+
"projection_dim": 768,
|
21 |
+
"torch_dtype": "float32",
|
22 |
+
"transformers_version": "4.31.0",
|
23 |
+
"vocab_size": 49408
|
24 |
+
}
|
realistic/text_encoder/pytorch_model.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:046e1b2cf3561e8ba31e060f94e92ec7b3c8a890bf3571933d9de1a82abda1f6
|
3 |
+
size 492306077
|
realistic/tokenizer/merges.txt
ADDED
The diff for this file is too large to render.
See raw diff
|
|
realistic/tokenizer/special_tokens_map.json
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"bos_token": {
|
3 |
+
"content": "<|startoftext|>",
|
4 |
+
"lstrip": false,
|
5 |
+
"normalized": true,
|
6 |
+
"rstrip": false,
|
7 |
+
"single_word": false
|
8 |
+
},
|
9 |
+
"eos_token": {
|
10 |
+
"content": "<|endoftext|>",
|
11 |
+
"lstrip": false,
|
12 |
+
"normalized": true,
|
13 |
+
"rstrip": false,
|
14 |
+
"single_word": false
|
15 |
+
},
|
16 |
+
"pad_token": "<|endoftext|>",
|
17 |
+
"unk_token": {
|
18 |
+
"content": "<|endoftext|>",
|
19 |
+
"lstrip": false,
|
20 |
+
"normalized": true,
|
21 |
+
"rstrip": false,
|
22 |
+
"single_word": false
|
23 |
+
}
|
24 |
+
}
|
realistic/tokenizer/tokenizer_config.json
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"add_prefix_space": false,
|
3 |
+
"bos_token": {
|
4 |
+
"__type": "AddedToken",
|
5 |
+
"content": "<|startoftext|>",
|
6 |
+
"lstrip": false,
|
7 |
+
"normalized": true,
|
8 |
+
"rstrip": false,
|
9 |
+
"single_word": false
|
10 |
+
},
|
11 |
+
"clean_up_tokenization_spaces": true,
|
12 |
+
"do_lower_case": true,
|
13 |
+
"eos_token": {
|
14 |
+
"__type": "AddedToken",
|
15 |
+
"content": "<|endoftext|>",
|
16 |
+
"lstrip": false,
|
17 |
+
"normalized": true,
|
18 |
+
"rstrip": false,
|
19 |
+
"single_word": false
|
20 |
+
},
|
21 |
+
"errors": "replace",
|
22 |
+
"model_max_length": 77,
|
23 |
+
"pad_token": "<|endoftext|>",
|
24 |
+
"tokenizer_class": "CLIPTokenizer",
|
25 |
+
"unk_token": {
|
26 |
+
"__type": "AddedToken",
|
27 |
+
"content": "<|endoftext|>",
|
28 |
+
"lstrip": false,
|
29 |
+
"normalized": true,
|
30 |
+
"rstrip": false,
|
31 |
+
"single_word": false
|
32 |
+
}
|
33 |
+
}
|
realistic/tokenizer/vocab.json
ADDED
The diff for this file is too large to render.
See raw diff
|
|
realistic/unet/config.json
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"_class_name": "UNet2DConditionModel",
|
3 |
+
"_diffusers_version": "0.20.0",
|
4 |
+
"act_fn": "silu",
|
5 |
+
"addition_embed_type": null,
|
6 |
+
"addition_embed_type_num_heads": 64,
|
7 |
+
"addition_time_embed_dim": null,
|
8 |
+
"attention_head_dim": 8,
|
9 |
+
"attention_type": "default",
|
10 |
+
"block_out_channels": [
|
11 |
+
320,
|
12 |
+
640,
|
13 |
+
1280,
|
14 |
+
1280
|
15 |
+
],
|
16 |
+
"center_input_sample": false,
|
17 |
+
"class_embed_type": null,
|
18 |
+
"class_embeddings_concat": false,
|
19 |
+
"conv_in_kernel": 3,
|
20 |
+
"conv_out_kernel": 3,
|
21 |
+
"cross_attention_dim": 768,
|
22 |
+
"cross_attention_norm": null,
|
23 |
+
"down_block_types": [
|
24 |
+
"CrossAttnDownBlock2D",
|
25 |
+
"CrossAttnDownBlock2D",
|
26 |
+
"CrossAttnDownBlock2D",
|
27 |
+
"DownBlock2D"
|
28 |
+
],
|
29 |
+
"downsample_padding": 1,
|
30 |
+
"dual_cross_attention": false,
|
31 |
+
"encoder_hid_dim": null,
|
32 |
+
"encoder_hid_dim_type": null,
|
33 |
+
"flip_sin_to_cos": true,
|
34 |
+
"freq_shift": 0,
|
35 |
+
"in_channels": 4,
|
36 |
+
"layers_per_block": 2,
|
37 |
+
"mid_block_only_cross_attention": null,
|
38 |
+
"mid_block_scale_factor": 1,
|
39 |
+
"mid_block_type": "UNetMidBlock2DCrossAttn",
|
40 |
+
"norm_eps": 1e-05,
|
41 |
+
"norm_num_groups": 32,
|
42 |
+
"num_attention_heads": null,
|
43 |
+
"num_class_embeds": null,
|
44 |
+
"only_cross_attention": false,
|
45 |
+
"out_channels": 4,
|
46 |
+
"projection_class_embeddings_input_dim": null,
|
47 |
+
"resnet_out_scale_factor": 1.0,
|
48 |
+
"resnet_skip_time_act": false,
|
49 |
+
"resnet_time_scale_shift": "default",
|
50 |
+
"sample_size": 64,
|
51 |
+
"time_cond_proj_dim": null,
|
52 |
+
"time_embedding_act_fn": null,
|
53 |
+
"time_embedding_dim": null,
|
54 |
+
"time_embedding_type": "positional",
|
55 |
+
"timestep_post_act": null,
|
56 |
+
"transformer_layers_per_block": 1,
|
57 |
+
"up_block_types": [
|
58 |
+
"UpBlock2D",
|
59 |
+
"CrossAttnUpBlock2D",
|
60 |
+
"CrossAttnUpBlock2D",
|
61 |
+
"CrossAttnUpBlock2D"
|
62 |
+
],
|
63 |
+
"upcast_attention": false,
|
64 |
+
"use_linear_projection": false
|
65 |
+
}
|
realistic/unet/diffusion_pytorch_model.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:4ef2d71d90c97c9d0c98a68b5e07b8a7b859f27753509d7cc1bd2e3949343a1c
|
3 |
+
size 3438366373
|
realistic/vae/config.json
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"_class_name": "AutoencoderKL",
|
3 |
+
"_diffusers_version": "0.20.0",
|
4 |
+
"act_fn": "silu",
|
5 |
+
"block_out_channels": [
|
6 |
+
128,
|
7 |
+
256,
|
8 |
+
512,
|
9 |
+
512
|
10 |
+
],
|
11 |
+
"down_block_types": [
|
12 |
+
"DownEncoderBlock2D",
|
13 |
+
"DownEncoderBlock2D",
|
14 |
+
"DownEncoderBlock2D",
|
15 |
+
"DownEncoderBlock2D"
|
16 |
+
],
|
17 |
+
"force_upcast": true,
|
18 |
+
"in_channels": 3,
|
19 |
+
"latent_channels": 4,
|
20 |
+
"layers_per_block": 2,
|
21 |
+
"norm_num_groups": 32,
|
22 |
+
"out_channels": 3,
|
23 |
+
"sample_size": 512,
|
24 |
+
"scaling_factor": 0.18215,
|
25 |
+
"up_block_types": [
|
26 |
+
"UpDecoderBlock2D",
|
27 |
+
"UpDecoderBlock2D",
|
28 |
+
"UpDecoderBlock2D",
|
29 |
+
"UpDecoderBlock2D"
|
30 |
+
]
|
31 |
+
}
|
realistic/vae/diffusion_pytorch_model.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:1b01618945554d9840701d3453d4a9fe3db0db090164a5ed6305641306285b6f
|
3 |
+
size 334712113
|