FrancescaFr's picture
Update app.py
737bc07
import torch
from diffusers import StableDiffusionPipeline
from PIL import Image
import requests
import base64
import os
import gradio as gr
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
auth_token = os.getenv("auth_token")
hf_writer = gr.HuggingFaceDatasetSaver(auth_token, "poster-generator-demo")
def improve_image(img, factor):
encoded_img = gr.processing_utils.encode_pil_to_base64(img)
URL = "https://hf.space/embed/abidlabs/GFPGAN/+/api/predict"
PARAMS = {"data": [encoded_img, factor]}
improved_b64 = requests.post(url = URL, json = PARAMS).json()["data"][0]
improved_img = gr.processing_utils.decode_base64_to_image(improved_b64)
return improved_img
def generate(celebrity, setting):
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=auth_token)
pipe = pipe.to(device)
prompt = f"{celebrity} in {setting} adventure movie poster"
image = (pipe(prompt,num_inference_steps = 5,guidance_scale=5).images[0])
return improve_image(image,2)
poster_demo = gr.Interface(
fn=generate,
inputs=[gr.Textbox(lines=2, placeholder="Enter Celebrity Name"),gr.Textbox(lines=2, placeholder="Enter Movie Setting")],
outputs="image",
allow_flagging="manual",
flagging_options=["Poor Face Quality", "Poor Setting Representation"],
flagging_callback=hf_writer,
)
poster_demo.launch(debug = True)