File size: 2,107 Bytes
55430d1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import gradio as gr
import torch
from diffusers import AutoPipelineForImage2Image, LCMScheduler
from PIL import Image
# Lade das Basismodell und den LCM-LoRA Adapter
# Verwende ein unzensiertes Basismodell wie Lykon/dreamshaper-8 oder SG_161222/Realistic_Vision_V5.1_noVAE
# Hier wird 'Lykon/dreamshaper-8' als Beispiel verwendet.
# Für CPU-Nutzung ist torch.float32 besser geeignet.
pipeline = AutoPipelineForImage2Image.from_pretrained(
"Lykon/dreamshaper-8",
torch_dtype=torch.float32,
variant="fp16" # variant="fp16" ist hier nur ein Platzhalter, da es für CPU nicht relevant ist, aber für das Laden des Modells benötigt wird.
)
pipeline.to("cpu")
# Setze den Scheduler
pipeline.scheduler = LCMScheduler.from_config(pipeline.scheduler.config)
# Lade den LCM-LoRA Adapter
pipeline.load_lora_weights("latent-consistency/lcm-lora-sdv1-5")
def image_to_image_editing(input_image: Image.Image, prompt: str) -> Image.Image:
# Skaliere das Bild auf eine passende Größe, falls nötig
# Stable Diffusion Modelle arbeiten oft am besten mit 512x512 oder 768x768
input_image = input_image.resize((512, 512))
# Führe die Inferenz durch
edited_image = pipeline(
prompt=prompt,
image=input_image,
num_inference_steps=4, # Wenige Schritte für schnelle CPU-Inferenz
guidance_scale=1.0, # Niedriger guidance_scale für LCM-LoRA
strength=0.6 # Stärke der Bildbearbeitung
).images[0]
return edited_image
# Erstelle die Gradio-Oberfläche
iface = gr.Interface(
fn=image_to_image_editing,
inputs=[
gr.Image(type="pil", label="Eingabebild"),
gr.Textbox(label="Prompt (Beschreibung der gewünschten Änderung)")
],
outputs=gr.Image(type="pil", label="Bearbeitetes Bild"),
title="CPU-optimierter unzensierter Bildeditor mit LCM-LoRA",
description="Lade ein Bild hoch und beschreibe die gewünschte Änderung. Das Modell ist für CPU optimiert und verwendet ein unzensiertes Basismodell mit LCM-LoRA für schnelle Ergebnisse."
)
if __name__ == "__main__":
iface.launch()
|