Leteint commited on
Commit
35e88cd
Β·
verified Β·
1 Parent(s): 4908f5d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -28
app.py CHANGED
@@ -13,7 +13,6 @@ LORA_FACE_ADAPTER = "face_detail"
13
  DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
14
  DTYPE = torch.float16 if DEVICE == "cuda" else torch.float32
15
 
16
- print("πŸ”₯ SDXL NSFW...")
17
  pipe = AutoPipelineForText2Image.from_pretrained(
18
  BASE_MODEL_ID,
19
  torch_dtype=DTYPE,
@@ -26,21 +25,15 @@ pipe.to(DEVICE)
26
  def dummy_checker(images, **kwargs):
27
  return images, [False] * len(images)
28
  pipe.safety_checker = dummy_checker
29
- pipe.set_progress_bar_config(disable=True)
30
 
31
- print("LoRA...")
32
  pipe.load_lora_weights(LORA_FACE_REPO, adapter_name=LORA_FACE_ADAPTER)
33
 
34
  os.makedirs("outputs", exist_ok=True)
35
 
36
  @spaces.GPU()
37
  def generate(prompt, negative, seed_str, steps, guidance, width, height, face_weight, filename):
38
- # SEED SAFE
39
- try:
40
- seed = int(float(seed_str)) if seed_str.strip() else -1
41
- except:
42
- seed = -1
43
-
44
  generator = torch.Generator(DEVICE).manual_seed(seed) if seed >= 0 else torch.Generator(DEVICE)
45
 
46
  pipe.set_adapters([LORA_FACE_ADAPTER], adapter_weights=[float(face_weight)])
@@ -55,11 +48,11 @@ def generate(prompt, negative, seed_str, steps, guidance, width, height, face_we
55
  generator=generator,
56
  ).images[0]
57
 
58
- safe_name = filename.strip().replace(" ", "_").replace("/", "_") or "sdxl_nsfw"
59
  img_path = f"outputs/{safe_name}.png"
60
  json_path = f"outputs/{safe_name}.json"
61
 
62
- metadata = {"prompt": prompt, "seed": seed, "steps": int(steps), "guidance": float(guidance)}
63
 
64
  pnginfo = PngImagePlugin.PngInfo()
65
  pnginfo.add_text("params", json.dumps(metadata))
@@ -70,30 +63,39 @@ def generate(prompt, negative, seed_str, steps, guidance, width, height, face_we
70
 
71
  return result, json.dumps(metadata, indent=2), json_path
72
 
73
- with gr.Blocks(title="πŸ”₯ SDXL NSFW") as demo:
74
- gr.Markdown("# SDXL 1.0 **NSFW** + Face LoRA\nβœ… No Errors")
75
 
76
  with gr.Row():
77
  with gr.Column():
78
- prompt = gr.Textbox("Prompt", value="1girl nude, masterpiece, detailed skin, sharp face")
79
- negative = gr.Textbox("Negative", value="blurry, deformed, ugly")
80
- seed = gr.Number("Seed", value=-1)
81
- steps = gr.Slider(20, 50, 35, step=1)
82
- guidance = gr.Slider(5, 12, 7.5, step=0.1)
83
- width = gr.Slider(512, 1536, 1024, step=64)
84
- height = gr.Slider(512, 1536, 1024, step=64)
85
- lora_w = gr.Slider(0, 1.2, 0.7, step=0.05, label="LoRA Weight")
86
- name = gr.Textbox("Filename", value="test_nsfw")
 
 
 
 
 
 
 
 
 
87
 
88
  with gr.Column():
89
- img_out = gr.Image(label="Image")
90
- json_out = gr.Textbox(label="Metadata", lines=8)
91
- file_out = gr.File(label="Download JSON") # ← FIX: label= au lieu de positional
92
 
93
- gr.Button("πŸš€ NSFW Generate", variant="primary").click(
94
  generate,
95
- [prompt, negative, seed, steps, guidance, width, height, lora_w, name],
96
- [img_out, json_out, file_out]
97
  )
98
 
99
  demo.launch()
 
13
  DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
14
  DTYPE = torch.float16 if DEVICE == "cuda" else torch.float32
15
 
 
16
  pipe = AutoPipelineForText2Image.from_pretrained(
17
  BASE_MODEL_ID,
18
  torch_dtype=DTYPE,
 
25
  def dummy_checker(images, **kwargs):
26
  return images, [False] * len(images)
27
  pipe.safety_checker = dummy_checker
 
28
 
29
+ pipe.set_progress_bar_config(disable=True)
30
  pipe.load_lora_weights(LORA_FACE_REPO, adapter_name=LORA_FACE_ADAPTER)
31
 
32
  os.makedirs("outputs", exist_ok=True)
33
 
34
  @spaces.GPU()
35
  def generate(prompt, negative, seed_str, steps, guidance, width, height, face_weight, filename):
36
+ seed = int(float(seed_str)) if seed_str.strip() else -1
 
 
 
 
 
37
  generator = torch.Generator(DEVICE).manual_seed(seed) if seed >= 0 else torch.Generator(DEVICE)
38
 
39
  pipe.set_adapters([LORA_FACE_ADAPTER], adapter_weights=[float(face_weight)])
 
48
  generator=generator,
49
  ).images[0]
50
 
51
+ safe_name = filename.strip().replace(" ", "_") or "sdxl_nsfw"
52
  img_path = f"outputs/{safe_name}.png"
53
  json_path = f"outputs/{safe_name}.json"
54
 
55
+ metadata = {"prompt": prompt, "seed": seed, "steps": int(steps)}
56
 
57
  pnginfo = PngImagePlugin.PngInfo()
58
  pnginfo.add_text("params", json.dumps(metadata))
 
63
 
64
  return result, json.dumps(metadata, indent=2), json_path
65
 
66
+ with gr.Blocks(title="πŸ”₯ SDXL NSFW + Detail LoRA") as demo:
67
+ gr.Markdown("# SDXL 1.0 **NSFW** βœ… Face Detail LoRA")
68
 
69
  with gr.Row():
70
  with gr.Column():
71
+ prompt = gr.Textbox(
72
+ label="Prompt",
73
+ placeholder="1girl nude, masterpiece, detailed anatomy, realistic skin, sharp face",
74
+ lines=4,
75
+ value="" # ← FIX: vide, valeur dans placeholder
76
+ )
77
+ negative = gr.Textbox(
78
+ label="Negative Prompt",
79
+ placeholder="blurry, deformed, ugly, low quality, extra limbs",
80
+ value=""
81
+ )
82
+ seed = gr.Number(label="Seed", value=-1)
83
+ steps = gr.Slider(20, 50, 35, step=1, label="Steps")
84
+ guidance = gr.Slider(5.0, 12.0, 7.5, step=0.1, label="Guidance")
85
+ width = gr.Slider(512, 1536, 1024, step=64, label="Width")
86
+ height = gr.Slider(512, 1536, 1024, step=64, label="Height")
87
+ lora_weight = gr.Slider(0.0, 1.2, 0.7, step=0.05, label="LoRA Weight")
88
+ filename = gr.Textbox(label="Filename", value="nsfw_test")
89
 
90
  with gr.Column():
91
+ output_image = gr.Image(label="Generated Image")
92
+ output_metadata = gr.Textbox(label="Metadata JSON", lines=10)
93
+ output_file = gr.File(label="πŸ“₯ Download JSON")
94
 
95
+ gr.Button("πŸš€ Generate NSFW", variant="primary", size="lg").click(
96
  generate,
97
+ [prompt, negative, seed, steps, guidance, width, height, lora_weight, filename],
98
+ [output_image, output_metadata, output_file]
99
  )
100
 
101
  demo.launch()