Spaces:
Build error
Build error
import random | |
from PIL import Image | |
import os | |
import shutil | |
import streamlit as st | |
from about import about | |
st.set_page_config( | |
page_title=None, | |
page_icon=None, | |
layout="wide", | |
initial_sidebar_state="auto", | |
menu_items=None, | |
) | |
st.title("Image Enhancer") | |
if os.path.exists("results"): | |
shutil.rmtree(os.path.join("results")) | |
if os.path.exists("tempDir"): | |
shutil.rmtree(os.path.join("tempDir")) | |
def create_dir(dirname: str): | |
if not os.path.exists(dirname): | |
os.makedirs(dirname, exist_ok=True) | |
create_dir("results/cmp") | |
create_dir("results/cropped_faces") | |
create_dir("results/restored_faces") | |
create_dir("results/restored_imgs") | |
create_dir("tempDir") | |
def save_uploadedfile(uploadedfile): | |
file_extension = os.path.splitext(uploadedfile.name)[-1].lstrip(".") | |
with open(os.path.join("tempDir", f"uploaded_image.{file_extension}"), "wb") as f: | |
f.write(uploadedfile.getbuffer()) | |
name, path = f'uploaded_image.{file_extension}', os.path.join("tempDir", f"uploaded_image.{file_extension}") | |
return name, path | |
def get_random_sample_image(): | |
sample_images = os.listdir(os.path.join('sample_images')) | |
random_image = random.choice(sample_images) | |
return random_image, f"{os.getcwd()}/sample_images/{random_image}" | |
def results_view(name, path): | |
with st.spinner("Please wait while we process your image.."): | |
os.system(f"python inference_gfpgan.py -i {path} -o results -v {version} -s 2") | |
with st.expander("Results", expanded=True): | |
col_1_1, col_2_2 = st.columns(2) | |
with col_1_1: | |
st.write("Sample Image") | |
st.image(path) | |
with col_2_2: | |
st.write("Processed Image") | |
st.image(Image.open(os.path.join("results", "restored_imgs", name))) | |
with st.expander("Comparative Results", expanded=True): | |
files = os.listdir(os.path.join("results", "cmp")) | |
for f in files: | |
st.write(f) | |
st.image(Image.open(os.path.join("results", "cmp", f))) | |
options = ["Face Restore", "About"] | |
models = ['1.3', '1.4', "RestoreFormer"] | |
st.sidebar.image("assets/gfpgan_logo.png") | |
menu = st.sidebar.selectbox("Select an Option", options) | |
if menu == "Face Restore": | |
col1, col2 = st.columns([1, 0.3]) | |
with st.sidebar: | |
version = st.selectbox("Select Version", models) | |
with col1: | |
uploaded_file = st.file_uploader("Upload Image", type=["jpg", "jpeg", "png"]) | |
with col2: | |
st.markdown("###") | |
st.markdown("###") | |
sample = st.button("Use Sample Image") | |
if sample: | |
name, path = get_random_sample_image() | |
# with st.spinner("Please wait while we process your image.."): | |
# os.system(f"python inference_gfpgan.py -i {path} -o results -v {version} -s 2") | |
# with st.expander("Results", expanded=True): | |
# col_1_1, col_2_2 = st.columns(2) | |
# with col_1_1: | |
# st.write("Sample Image") | |
# st.image(path) | |
# with col_2_2: | |
# st.write("Processed Image") | |
# st.image(Image.open(os.path.join("results", "restored_imgs", name))) | |
# with st.expander("Comparative Results", expanded=True): | |
# files = os.listdir(os.path.join("results", "cmp")) | |
# for f in files: | |
# st.write(f) | |
# st.image(Image.open(os.path.join("results", "cmp", f))) | |
results_view(name, path) | |
if uploaded_file is not None: | |
name, path = save_uploadedfile(uploaded_file) | |
results_view(name, path) | |
if menu == 'About': | |
about() |