File size: 2,564 Bytes
fd81e53 8f454ba fd81e53 8f454ba a298325 fd81e53 8f454ba fd81e53 8f454ba fd81e53 cf42a59 8f07b18 fd81e53 cf42a59 8f07b18 fd81e53 8f454ba fd81e53 8f454ba fd81e53 8f454ba fd81e53 8f454ba fd81e53 8f454ba fd81e53 8f454ba fd81e53 8f454ba |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
import gradio as gr
from ultralytics import YOLO
import cv2
import numpy as np
from PIL import Image
# Cargar el modelo YOLO directamente desde el archivo local
model = YOLO('./best.pt')
# Funci贸n para procesar la imagen con YOLO
def detectar_objetos(image):
# Convertir la imagen de entrada (Gradio) a formato OpenCV (BGR)
image_bgr = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
# Realiza la detecci贸n con YOLO directamente en la imagen
results = model.predict(source=image_bgr, conf=0.25, save=False)
# Dibuja las detecciones en la imagen
annotated_image = image_bgr.copy()
for box in results[0].boxes:
# Extraer coordenadas y clase
x1, y1, x2, y2 = map(int, box.xyxy[0])
cls = int(box.cls)
# Colores personalizados para las clases
if cls == 0: # Bueno
color = (0, 255, 0) # Verde
label = "Well"
elif cls == 1: #
color = (0, 0, 255) # Rojo
label = "Partially"
elif cls == 2: #
color = (255, 0, 0) # Azul
label = "bad"
else:
color = (255, 255, 255)
label = f"Class {cls}"
# Dibujar el cuadro y la etiqueta
cv2.rectangle(annotated_image, (x1, y1), (x2, y2), color, thickness=2)
cv2.putText(
annotated_image, label, (x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, thickness=1
)
# Convertir la imagen anotada de BGR a RGB para mostrar en Gradio
annotated_image_rgb = cv2.cvtColor(annotated_image, cv2.COLOR_BGR2RGB)
return annotated_image_rgb
# Crear la interfaz Gradio con ejemplos y dise帽o personalizado
examples = [["cacao_1.png"], ["cacao_2.jpg"]] # Aseg煤rate de que estos archivos est茅n en la misma carpeta que el script
iface = gr.Interface(
fn=detectar_objetos,
inputs=gr.Image(label="Upload Image"),
outputs=gr.Image(label="Image with Detected Objects"),
title="Fermentation Level Classification for Cocoa Beans",
examples=examples,
description="""
**Cacao Classes According to NTC1252:2021:**
- **a) Well-fermented:** Optimal fermentation process.
- **b) Partially fermented:** Incomplete fermentation process.
- **c) Non-fermented:** Lack of adequate fermentation.
**Explanation According to NTC1252:2021:** Here you can explain how the NTC1252:2021 norm applies to the classification of fermentation levels.
"""
)
# Ejecutar la aplicaci贸n
if __name__ == "__main__":
iface.launch()
|