Bb / app.py
drdudddd's picture
Upload 3 files
5224c49 verified
import gradio as gr
import torch
from diffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler
import os
# Modell-ID (Unzensiertes Modell basierend auf SD 1.5)
model_id = "Kernel/sd-nsfw"
# Lade die Pipeline
# Wir nutzen float32 für CPU, da dies am stabilsten ist.
# safety_checker=None deaktiviert den eingebauten Filter.
print("Lade Modell...")
pipe = StableDiffusionPipeline.from_pretrained(
model_id,
torch_dtype=torch.float32,
safety_checker=None,
requires_safety_checker=False
)
# Nutze einen schnelleren Scheduler für CPU
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe = pipe.to("cpu")
def generate_image(prompt, negative_prompt, steps, guidance_scale):
print(f"Generiere Bild für: {prompt}")
image = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
num_inference_steps=int(steps),
guidance_scale=guidance_scale
).images[0]
return image
# Gradio Interface
with gr.Blocks() as demo:
gr.Markdown("# 🎨 Unzensierter KI-Bildgenerator (CPU-optimiert)")
gr.Markdown("Diese App nutzt das Modell `Kernel/sd-nsfw` auf Hugging Face Spaces (CPU).")
with gr.Row():
with gr.Column():
prompt = gr.Textbox(label="Prompt", placeholder="Was möchtest du sehen?", lines=3)
negative_prompt = gr.Textbox(label="Negativer Prompt", placeholder="Was soll nicht im Bild sein?", value="low quality, blurry, distorted")
with gr.Row():
steps = gr.Slider(minimum=1, maximum=50, value=20, step=1, label="Inferenz-Schritte (CPU: 20 empfohlen)")
guidance_scale = gr.Slider(minimum=1, maximum=20, value=7.5, step=0.5, label="Guidance Scale")
generate_btn = gr.Button("Bild generieren", variant="primary")
with gr.Column():
output_image = gr.Image(label="Generiertes Bild")
generate_btn.click(
fn=generate_image,
inputs=[prompt, negative_prompt, steps, guidance_scale],
outputs=output_image
)
gr.Markdown("---")
gr.Markdown("⚠️ **Hinweis:** Da dies auf einer CPU läuft, kann die Generierung 1-2 Minuten dauern.")
if __name__ == "__main__":
demo.launch()