¡Detecta lo que tú quieras! 🤖 Crea tu propio DETECTOR DE OBJETOS personalizado con YOLOv11

Por Administrador

¡Hola, hola, Omesitos! En el último post y video sobre Ultralytics vimos como utilizar los modelos preentrenados de YOLO11 para la detección de objetos, los cuales fueron entrenados con el COCO Dataset, el cual contiene 80 clases, pero ha surgido la pregunta: ¿Qué pasa si deseamos detectar objetos que estén fuera de estas 80 categorías?. Pues si tú también tienes esta duda, ¡este post es para ti! Hoy aprenderás a entrenar tu propio modelo YOLOv11 personalizado, usando tus propios objetos. Vamos a usar Ultralytics, Roboflow y Google Colab. Así que… ¡vamos a por ello! 

🧠 ¿Cómo crear tu propio modelo personalizado de detección de objetos con YOLOv11?

En este tutorial trabajamos con Ultralytics, Roboflow y Google Colab para crear un modelo de detección que pueda reconocer nuestros propios objetos. A continuación, te comparto el código base que se explicó en el video.

📌 Nota importante: Esta sección contiene únicamente la programación empleada. Si deseas una explicación paso a paso con mayor detalle, no olvides revisar el video completo disponible en el canal.

1.  Instalación de librerías necesarias 🛠️

!pip install roboflow ultralytics

2. Descarga de dataset personalizado desde Roboflow 🗂️

from roboflow import Roboflow

rf = Roboflow(api_key="YOUR-API-KEY")  # ⚠️ Reemplaza con tu propia API KEY
project = rf.workspace("gabysol").project("custom_object_detector_yolo11")
version = project.version(1)
dataset = version.download("yolov11")

3. Carga del modelo base YOLOv11 de Ultralytics 🤖

from ultralytics import YOLO
model = YOLO("yolo11s.pt")

4. Entrenamiento del modelo personalizado 🤖🏋️

data_path = "/content/custom_object_detector_yolo11-1/data.yaml"
results = model.train(data=data_path,
                      epochs=15,
                      imgsz=640)

5. ¡A hacer predicciones! 🤖

# Cargamos el modelo ya entrenado
custom_model = YOLO("/content/runs/detect/train/weights/best.pt")

# Realizamos predicciones sobre algunas imágenes
res = custom_model("/content/custom_object_detector_yolo11-1/test/images")

# Visualizamos los resultados de las detecciones
res[6].show()

🎥 Bonus: Prueba tu modelo en video en vivo (Webcam)

from ultralytics import YOLO
import cv2

# Cargamos el modelo YOLO
model = YOLO("best.pt")

# Cargamos el video de entrada
#video_path = "./Inputs/people_walking.mp4"
cap = cv2.VideoCapture(0)

while cap.isOpened():
    # Leemos el frame del video
    ret, frame = cap.read()
    if not ret:
        break

    # Realizamos la inferencia de YOLO sobre el frame
    results = model(frame)

    # Extraemos los resultados
    annotated_frame = results[0].plot()
    #print(annotated_frame)

    # Visualizamos los resultados
    cv2.imshow("YOLO Inference", annotated_frame)

    # El ciclo se rompe al presionar "Esc"
    if cv2.waitKey(1) & 0xFF == 27:
        break

cap.release()
cv2.destroyAllWindows()

💡 Recomendaciones para entrenar un detector de objetos personalizado

A continuación, quisiera compartirte algunos consejos para llevar a cabo el entrenamiento de modelos personalizados, como el que realizamos en esta práctica:

  • Recuerda que entre más imágenes (de los objetos) utilices para entrenar el modelo, este será más robusto.
  • Al momento de crear el dataset, no olvides capturar fotos desde distintos ángulos, con diferentes iluminaciones y en fondos variados.
  • Asegúrate de colocar los objetos en entornos similares a donde serán detectados.
  • Experimenta para mejorar:
    • Cambia el número de epochs y observa cómo evoluciona el rendimiento.
    • Prueba con diferentes modelos base (yolo11n, yolo11s, yolo11m, etc.) según tus necesidades y capacidad computacional.

Y eso ha sido todo por este post, Omesitos. 😊
Espero que te haya sido útil y que te animes a crear tu propio detector de objetos con YOLOv11.
Si quieres ver el proceso paso a paso y en acción, no te olvides de visitar el video completo en el canal. 🎥
¡Cuídate mucho y nos vemos en el siguiente tutorial!