BeautyScore / app.py
katsuchi's picture
Update app.py
23a1d66 verified
Raw
History Blame Contribute Delete
2.59 kB
import gradio as gr
from model import Trainer
import torch
import cv2
import tempfile
import numpy as np
def predict_beauty_score(img):
trainer = Trainer()
# Save the numpy array as an image temporarily
with tempfile.NamedTemporaryFile(suffix='.jpg', delete=False) as tmp:
# Convert RGB to BGR for cv2
img_bgr = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imwrite(tmp.name, img_bgr)
# Use the temporary file path
image_tensor = trainer.image_to_tensor(tmp.name)
prediction = trainer.predict(image_tensor)
score = prediction.item() * 100
# Decide which GIF to show based on the score
if score < 20:
gif_url = "https://i.pinimg.com/originals/9f/79/2a/9f792aed5881d409425de1a4361bc06b.gif"
elif score < 40:
gif_url = "https://i.pinimg.com/originals/ba/f5/c8/baf5c89c099b34decb7f4507b5144366.gif"
elif score < 55:
gif_url = "https://i.pinimg.com/originals/87/b6/dc/87b6dcfeec6f38a3836b1caf1d8fceab.gif"
elif score < 60:
gif_url = "https://i.pinimg.com/originals/3a/90/b8/3a90b87a337b79b9c8b7a3d9bf7250d7.gif"
else:
gif_url = "https://i.pinimg.com/originals/f6/02/01/f6020120d9e99f7b106c557cdc1edb1f.gif"
# Create formatted HTML outpu
html_output = f"""
<div style='text-align: center; padding: 20px;'>
<h2 style='color: #FFFFFF; margin-bottom: 10px;'>Score</h2>
<div style='font-size: 48px; font-weight: bold; color: #1a73e8;'>
{score:.3f}
</div>
<br/>
<div style='display: flex; justify-content: center;'>
<img src="{gif_url}" alt="GIF" width="200" height="200" />
</div>
<p>Enjoy the fun! :)</p>
</div>
"""
return html_output
# Create Gradio interface
demo = gr.Interface(
fn=predict_beauty_score,
inputs=gr.Image(), # Simple image input
outputs=gr.HTML(), # Using HTML output for custom formatting
title="Image Beauty Score Predictor",
description="""
<ul>
<li>Upload an image to get its beauty score prediction</li>
<li>Please remember that this is just for fun and is not intended to downplay anybody and I, as the model creator believe everyone is beautiful the way it is</li>
<li>Respect each other and most importantly have fun :)</li>
</ul>
""",
examples=[
["6082308423334085331.jpg"],
["a00e1c819a87fa56bb1e6058d9814bae.jpg"],
["Screenshot_2024-12-29_211520.png"]
],
cache_examples=True
)
if __name__ == "__main__":
demo.launch()