| import gradio as gr |
| from diffusers import StableDiffusionImg2ImgPipeline |
| import torch |
|
|
| |
| pipe = StableDiffusionImg2ImgPipeline.from_pretrained( |
| "runwayml/stable-diffusion-v1-5", |
| torch_dtype=torch.float32, |
| safety_checker=None, |
| variant="fp16", |
| use_safetensors=True |
| ) |
|
|
| def generate(image, prompt, negative_prompt="", steps=15, strength=0.35): |
| try: |
| result = pipe( |
| prompt=prompt, |
| negative_prompt=negative_prompt, |
| image=image, |
| num_inference_steps=steps, |
| strength=strength, |
| guidance_scale=7.0 |
| ).images[0] |
| return result |
| except Exception as e: |
| return f"Error: {str(e)}" |
|
|
| with gr.Blocks() as demo: |
| gr.Markdown("## NSFW Face Swap (CPU Only - No LoRA)") |
| with gr.Row(): |
| with gr.Column(): |
| input_img = gr.Image(type="pil", label="Upload Face Photo") |
| prompt = gr.Textbox( |
| label="Prompt", |
| lines=3, |
| value="photorealistic, nude girl sitting on bed, wearing tiny lace thong, small pink vulva visible, wet, face locked to input image" |
| ) |
| neg_prompt = gr.Textbox( |
| label="Negative", |
| value="large vulva, deformed, plastic, child, extra limbs" |
| ) |
| steps = gr.Slider(10, 25, 15, label="Steps (کم = سریعتر)") |
| strength = gr.Slider(0.2, 0.5, 0.35, label="Strength") |
| btn = gr.Button("Generate (20-40s)") |
| with gr.Column(): |
| output = gr.Image(label="Result") |
| |
| btn.click(generate, [input_img, prompt, neg_prompt, steps, strength], output) |
|
|
| demo.launch() |