faceshine / app.py
leonelhs's picture
adjust settings
99c4346
raw
history blame
5.27 kB
import gradio as gr
from gradio_client import Client
clientGFPGAN = Client("leonelhs/GFPGAN")
clientSuperface = Client("leonelhs/superface")
clientZeroScratches = Client("leonelhs/ZeroScratches")
clientDeoldify = Client("leonelhs/deoldify")
clientEnhanceLight = Client("leonelhs/Zero-DCE")
clientZeroBackground = Client("leonelhs/ZeroBackground")
clientFaceParser = Client("leonelhs/faceparser")
context = dict()
def gfpgan_face(image):
return clientGFPGAN.predict(image, "v1.4", "2", api_name="/predict")[1]
def enhance_face(image, upsampler, face_enhancer, scale):
return clientSuperface.predict(image, upsampler, face_enhancer, scale, api_name="/predict")
def zero_scratches(image):
return clientZeroScratches.predict(image, api_name="/predict")
def colorize_photo(image):
return clientDeoldify.predict(image, api_name="/predict")
def enhance_light(image):
return clientEnhanceLight.predict(image, api_name="/predict")
def zero_background(image, new_bgr=None):
return clientZeroBackground.predict(image, new_bgr, api_name="/predict")
def parse_face(image):
return clientFaceParser.predict(image, api_name="/predict")
def mirror(x):
return x
footer = r"""
<center>
<p>This App is running on a CPU, help us to upgrade a GPU or just give us a <a href='https://github.com/leonelhs/face-shine' target='_blank'>Github ⭐</a></p>
</br>
<a href="https://www.buymeacoffee.com/leonelhs">
<img src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=leonelhs&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff" />
</a>
</center>
</br>
<center><span>[email protected]</span></center>
"""
with gr.Blocks() as app:
gr.Request()
with gr.Row():
gr.HTML("<center><h1>Face Shine</h1></center>")
with gr.Tab("Photo restorer"):
with gr.Row():
with gr.Column(scale=1):
btn_hires = gr.Button(value="Enhance resolution")
btn_eraser = gr.Button(value="Erase scratches")
btn_color = gr.Button(value="Colorize photo")
btn_light = gr.Button(value="Enhance light")
btn_reset = gr.Button(value="Clear", variant="primary")
with gr.Column(scale=4):
with gr.Row():
img_input = gr.Image(label="Input", type="filepath")
img_output = gr.Image(label="Result", type="filepath", interactive=False)
with gr.Row():
btn_swap = gr.Button(value="Swap images")
with gr.Tab("Background") as tab_background:
with gr.Row():
with gr.Column(scale=1):
btn_clear = gr.Button(value="Clear background")
with gr.Accordion("New background", open=True):
btn_newbgr = gr.Button(value="Change background")
img_newbgr = gr.Image(label="Choose file for new background", type="filepath")
with gr.Column(scale=4):
with gr.Row():
img_input_bgr = gr.Image(label="Input", type="filepath")
img_output_bgr = gr.Image(label="Result", type="filepath", interactive=False)
with gr.Tab("Settings"):
with gr.Accordion("Image restoration settings", open=False):
restorer = gr.Dropdown([
'RealESRGAN_x2plus',
'RealESRGAN_x4plus',
'RealESRNet_x4plus',
'AI-Forever_x2plus',
'AI-Forever_x4plus',
'RealESRGAN_x4plus_anime_6B',
'realesr-animevideov3',
'realesr-general-x4v3'],
type="value", value='RealESRGAN_x4plus', label='General restoration algorithm', info="version")
enhancer = gr.Dropdown([
'No additional face process',
'GFPGANv1.2',
'GFPGANv1.3',
'GFPGANv1.4',
'RestoreFormer'],
type="value", value='No additional face process', label='Special face restoration algorithm',
info="version")
rescale = gr.Dropdown(["1", "2", "3", "4"], type="value", value="4", label="Rescaling factor")
with gr.Accordion("Logs info", open=False):
text_logger = gr.Textbox(label="login", lines=5, show_label=False)
gr.Button("Save settings")
btn_hires.click(enhance_face, inputs=[img_input, restorer, enhancer, rescale],
outputs=[img_output, text_logger])
btn_eraser.click(zero_scratches, inputs=[img_input], outputs=[img_output])
btn_color.click(colorize_photo, inputs=[img_input], outputs=[img_output])
btn_light.click(enhance_light, inputs=[img_input], outputs=[img_output])
btn_clear.click(zero_background, inputs=[img_input_bgr], outputs=[img_output_bgr])
btn_newbgr.click(zero_background, inputs=[img_input_bgr, img_newbgr], outputs=[img_output_bgr])
btn_swap.click(mirror, inputs=[img_output], outputs=[img_input])
btn_reset.click(lambda: None, None, img_input, queue=False)
tab_background.select(mirror, inputs=[img_input], outputs=[img_input_bgr])
with gr.Row():
gr.HTML(footer)
app.launch(debug=True, enable_queue=True)