Spaces:
Runtime error
Runtime error
File size: 2,360 Bytes
2571a09 9191b3d 2571a09 c193464 9191b3d 2571a09 b40804f 9191b3d b40804f 9191b3d b40804f 9191b3d a826a95 94a0a78 2571a09 9191b3d 2571a09 9191b3d 2571a09 9191b3d 2571a09 10ca3e2 9191b3d 2571a09 9191b3d 2571a09 9191b3d 2571a09 a826a95 2571a09 f32daf2 2571a09 9191b3d 2571a09 9191b3d |
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 55 56 57 58 59 60 61 62 63 64 65 66 |
import gradio as gr
import torch
from PIL import Image
from diffusers import AutoPipelineForText2Image, DDIMScheduler
from transformers import CLIPVisionModelWithProjection
import numpy as np
import spaces
image_encoder = CLIPVisionModelWithProjection.from_pretrained(
"h94/IP-Adapter",
subfolder="models/image_encoder",
torch_dtype=torch.float16,
)
pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
image_encoder=image_encoder,
)
pipeline.scheduler = DDIMScheduler.from_config(pipeline.scheduler.config)
pipeline.load_ip_adapter("h94/IP-Adapter", subfolder="sdxl_models", weight_name=["ip-adapter-plus_sdxl_vit-h.safetensors", "ip-adapter-plus-face_sdxl_vit-h.safetensors"])
pipeline.set_ip_adapter_scale([0.7, 0.5])
pipeline.enable_model_cpu_offload()
@spaces.ZeroGPU
def transform_image(face_image):
generator = torch.Generator(device="cpu").manual_seed(0)
# Check if the input is already a PIL Image
if isinstance(face_image, Image.Image):
processed_face_image = face_image
# If the input is a NumPy array, convert it to a PIL Image
elif isinstance(face_image, np.ndarray):
processed_face_image = Image.fromarray(face_image)
else:
raise ValueError("Unsupported image format")
# Load the style image from the local path
style_image_path = "/content/soyjak2.jpeg"
style_image = Image.open(style_image_path)
# Perform the transformation
image = pipeline(
prompt="soyjak",
ip_adapter_image=[style_image, processed_face_image],
negative_prompt="monochrome, lowres, bad anatomy, worst quality, low quality",
num_inference_steps=30,
generator=generator,
).images[0]
return image
# Gradio interface setup
demo = gr.Interface(
fn=transform_image,
inputs=gr.Image(label="Upload your face image"),
outputs=gr.Image(label="Your Soyjak"),
title="InstaSoyjak - turn anyone into a Soyjak",
description="All you need to do is upload an image. Please use responsibly. Please follow me on Twitter if you like this space: https://twitter.com/angrypenguinPNG. Idea from Yacine, please give him a follow: https://twitter.com/yacineMTB.",
)
demo.queue(max_size=20) # Configures the queue with a maximum size of 20
demo.launch() |