ruinsoftomorrow / app.py
machinesarenotpeople's picture
Upload app.py
23cd458
#import streamlit as st
import gradio as gr
import torch
from PIL import Image
import numpy as np
from io import BytesIO
from diffusers import StableDiffusionImg2ImgPipeline
import os
import random
device="cpu"
USER_TOKEN=os.environ.get('HF_TOKEN_SD')
#1.4
#pipe = StableDiffusionImg2ImgPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token = USER_TOKEN)
#1.5
#model_id = "runwayml/stable-diffusion-v1-5"
#pipe = StableDiffusionImg2ImgPipeline.from_pretrained(model_id, torch_dtype=torch.float16, revision="fp16", use_auth_token = USER_TOKEN)
pipe = StableDiffusionImg2ImgPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", use_auth_token = USER_TOKEN)
pipe.to(device)
source_img = gr.Image(source="upload", type="filepath", label="Landscape image 16:9")
#source_img = gr.Webcam(type="filepath")
def resize(rwidth,rheight,img):
img = Image.open(img)
img = img.resize((rwidth,rheight))
return img
def infer(source_img):
#Permanent settings here
prompt = "abandoned buildings, empty streetscapes, surrounded by lush green vegetation, ground-level view, rusted steel, derelict, urban exploration, ruin, deserted, broken windows, burnt out, graffitti, ramshackle, homeless shelter, decay, 8k, photorealistic, hyper detailed"
guide = 10
steps = 40
diffstr = 0.3
seed = random.randint(0,2147483647)
generator = torch.Generator("cpu").manual_seed(seed)
source_image = resize(1024,576, source_img)
source_image.save('source.png')
#1.4 image = pipe([prompt] * 1, init_image=source_image, strength=diffstr, guidance_scale=guide, num_inference_steps=steps).images[0]
#1.5
image = pipe([prompt] * 1, image=source_image, strength=diffstr, guidance_scale=guide, num_inference_steps=steps).images[0]
#images_list = img_pipe([prompt] * 1, init_image=source_image, strength=strength, guidance_scale=guide, num_inference_steps=steps)
#images = []
#images.append(image)
return image
#gr.Interface(fn=infer, inputs=gr.Image(source="upload", type="filepath", label="input"), outputs=image, title = "Ruins of Tomorrow", description = "Upload an image of a place in a city in landscape format. Processing may take 5-15 minutes, please be patient!", article = "").queue(max_size=10).launch(enable_queue=True, debug=True)
title = "Ruins of Tomorrow"
description = "Upload an image of a place in a city in landscape format. Processing may take 5-15 minutes, please be patient!"
#ruins = gr.Interface(
# fn=infer,
# inputs=[source_img],
# outputs=gallery)
ruins = gr.Interface(
title=title,
description=description,
fn=infer,
inputs=source_img,
outputs="image")
ruins.queue(max_size=10)
ruins.launch(enable_queue=True)