hca97's picture
make sure that text will be visible
8ead15f
raw
history blame contribute delete
No virus
2.25 kB
import os
import gradio as gr
import numpy as np
import cv2
from my_models import YOLOV5CLIPModel, YOLOV8CLIPModel
def annotated_image(
image: np.ndarray, label: str, conf: float, bbox: list
) -> np.ndarray:
line_thickness = max(1, int(0.005 * max(image.shape[:2])))
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
image = cv2.rectangle(
image,
(bbox[0], bbox[1]),
(bbox[2], bbox[3]),
(255, 0, 0),
thickness=line_thickness,
)
image = cv2.putText(
image,
f"{label} {conf:.2f}",
(bbox[0], max(bbox[1] - 2 * line_thickness, 0)),
cv2.FONT_HERSHEY_SIMPLEX,
thickness=max(line_thickness // 2, 1),
lineType=cv2.LINE_AA,
color=(0, 0, 0),
fontScale=max(0.5, 0.1 * line_thickness),
)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
return image
def detect_mosquito(image):
label, conf, bbox = YOLOV8CLIPModel().predict(image)
return annotated_image(image, label, conf, bbox)
description = """# [Mosquito Alert Competition 2023](https://www.aicrowd.com/challenges/mosquitoalert-challenge-2023) - 7th Place Solution
Welcome to my Hugging Face Space showcasing the performance of our model.
This competition focused on detecting and classifying various mosquito species.
The target species were:
- **Aedes aegypti** - Species
- **Aedes albopictus** - Species
- **Anopheles** - Genus
- **Culex** - Genus (Species classification is challenging, so it is provided at the genus level)
- **Culiseta** - Genus
- **Aedes japonicus/Aedes koreicus** - Species complex (Differentiating between these two species is particularly challenging).
> ***Note:** Only one mosquito will be annotated even if there are multiple mosquitoes in the image.*
## Experiment Details
All the details regarding the experiments and source code for the models can be found in the [GitHub repository](https://github.com/HCA97/Mosquito-Classifiction/tree/main).
"""
iface = gr.Interface(
fn=detect_mosquito,
description=description,
inputs=gr.Image(),
outputs=gr.Image(),
allow_flagging="never",
examples=[os.path.join("examples", f) for f in os.listdir("examples")],
cache_examples=True,
)
iface.launch()