pavement_damage / app.py
nn
Upload app.py
8425794 verified
import gradio as gr
import subprocess
import os
from PIL import Image
import torch
def add_logo(img):
logo = Image.open('logoAI.png')
logo = logo.resize((200, 150))
img_with_logo = Image.new('RGB', (img.width, img.height + logo.height))
img_with_logo.paste(logo, (0, 0))
img_with_logo.paste(img, (0, logo.height))
return img_with_logo
def run_detection(image):
# Save the uploaded image temporarily
image_path = "temp_image.jpg"
image.save(image_path)
env = os.environ.copy()
env['PYTHONPATH'] = '/mount/src/yolo9tr/'
# Run the detection command
command = [
"python", "detect_dual.py",
"--source", image_path,
"--img", "640",
"--device", "cpu",
"--weights", "models/detect/yolov9tr.pt",
"--name", "yolov9_c_640_detect",
"--exist-ok"
]
subprocess.run(command, check=True, env=os.environ)
# Find the output image
output_dir = "runs/detect/yolov9_c_640_detect"
output_image = os.path.join(output_dir, os.path.basename(image_path))
# Add logo to the output image
output_with_logo = add_logo(Image.open(output_image))
return output_image
def main():
input_image = gr.Image(type="pil", label="Upload an image")
output_image = gr.Image(type="pil", label="Detection Result")
iface = gr.Interface(
fn=run_detection,
inputs=input_image,
outputs=output_image,
title="Pavement Damage Detection: YOLO9tr (Youwai et al. 2024)",
description="Upload an image to perform object detection using YOLO9tr.",
examples=[["United_States_000502.jpg"]]
)
iface.launch()
if __name__ == "__main__":
main()