El reconocimiento de imágenes de YOLOv8 es sobresaliente, pero entrenar al modelo es una tarea importante que no debes pasar por alto.

YOLOv8 es un algoritmo de detección de objetos en tiempo real que se usa ampliamente en el campo de la detección de objetos. Es parte de la serie You Only Look Once (YOLO) desarrollada por Ultralytics. El algoritmo rastrea, detecta, segmenta instancias, estima poses y clasifica objetos en imágenes y videos. Su objetivo es ser más rápido y más preciso que sus algoritmos predecesores.

Usar YOLOv8 en conjuntos de datos experimentales como CIFAR-10 y CIFAR-100 suele ser más fácil para proyectos de prueba de concepto (POC) que en conjuntos de datos del mundo real que requieren conjuntos de datos personalizados.

Este tutorial lo guiará a través de los pasos necesarios para entrenar YOLOv8 en datos personalizados.

Configuración del entorno de Python

Comience instalando el entorno de desarrollo para el proyecto, siguiendo las instrucciones a continuación.

  1. Vaya a la terminal y cree un nuevo directorio llamado yolov8proyecto:
    proyecto mkdir yolov8
  2. Navegue hasta el directorio del proyecto y crear un entorno virtual:
    cd yolov8project
    python -m venv env
  3. Luego, active el entorno virtual.
    # en ventanas
    env/Scripts/activar

    # En Linux/macOS
    origen env/bin/activar

    Para ejecutar su código, debe instalar Ultralytics, una biblioteca para la detección de objetos y la segmentación de imágenes. También es una dependencia de YOLOv8. Instalarlo usando pipa ejecutando el siguiente comando.
    pip instalar ultralíticos
  4. Este comando instala el modelo preentrenado de YOLOv8, yolov8n.pt. Pruebe el modelo ejecutando los siguientes comandos para realizar una detección con pesos previamente entrenados en su imagen o video elegido respectivamente usando YOLOv8.
    #detección de imagen
    yolo task=detect mode=predict model=yolov8n.pt source="ruta/a/imagen.png"

    #detección de vídeo
    yolo task=detect mode=predict model=yolov8n.pt source="path/to/video.mp4"

    Si todo funciona perfectamente, los resultados estarán disponibles en el yolov8proyecto directorio en el corre/detecta/exp subdirectorio.

Preparación de su conjunto de datos personalizado

Los pasos para preparar su conjunto de datos personalizado incluyen la recopilación de datos, el etiquetado de datos y la división de datos (entrenamiento, prueba, validación).

Recopilación de datos

Este es el proceso de recopilar un conjunto de imágenes que tienen los objetos que desea detectar. Asegúrese de usar imágenes de alta calidad, enfocadas y que los objetos sean claramente visibles. Puede usar una variedad de herramientas para recopilar imágenes, como Google Images, Flickr o su propia cámara. Si no tiene un conjunto de datos de imagen, utilice el conjunto de datos de la imagenes abiertas base de datos. Este artículo utilizará la imagen de seguridad del sitio de construcción conjunto de datos de Kaggle.

Etiquetado de datos

Después de recopilar sus imágenes, debe etiquetarlas. Esto significa identificar los objetos en cada imagen y sus cuadros delimitadores. Hay varias herramientas disponibles para ayudarlo a etiquetar sus datos, como LabelImg, CVAT y flujo de robo. Todas estas herramientas son de uso gratuito.

Dividir los datos

Para entrenar modelos de aprendizaje automático, debe dividir sus datos en conjuntos de entrenamiento y prueba. Intente usar una proporción de división del 70 % al 30 % cuando use grandes cantidades de datos. De lo contrario, apéguese al 80%-20% para evitar sobreajustar o desadaptar su modelo.

Usar carpetas divididas, para dividir aleatoriamente sus datos en los conjuntos de entrenamiento, prueba y validación con la relación de división deseada.

Configuración de YOLOv8 para su conjunto de datos

Después de etiquetar sus datos, proceda a configurar YOLOv8 para su conjunto de datos personalizado. Esto implica crear un archivo de configuración que especifique lo siguiente:

  • La ruta a tus datos de entrenamiento.
  • La ruta a sus datos de validación.
  • El número de clases que desea detectar.

Cree un archivo config.yaml para almacenar la configuración:

camino:(conjunto de datosdirectoriocamino)
tren:(trenconjunto de datoscarpetacamino)
prueba:(pruebaconjunto de datoscarpetacamino)
válido:(validaciónconjunto de datoscarpetacamino)

# Clases
Carolina del Norte:5# reemplazar basado en el número de clases de su conjunto de datos

# Nombres de clases
# reemplazar todos los nombres de clase con los nombres de sus propias clases
nombres:['clase 1','clase 2','clase3','clase4','clase5']

Crear el archivo de configuración es una forma útil de estructurar y almacenar los parámetros cruciales para su modelo de visión artificial. Asegúrese de actualizar el archivo config.yaml de acuerdo con la naturaleza y estructura de su conjunto de datos.

Asegúrese de utilizar las rutas correctas para sus conjuntos de datos, ya que el entrenamiento del modelo se basa completamente en el archivo de configuración.

Entrenamiento de YOLOv8 en datos personalizados

Una vez que cree el archivo de configuración, comience a entrenar YOLOv8. Utilice la herramienta de línea de comandos YOLOv8 para entrenar su modelo. La herramienta de línea de comandos toma varios parámetros, como la ruta al archivo de configuración, el número de épocas y el tamaño de la imagen de la siguiente manera:

yolo task=detect mode=train model=yolov8n.pt data=path/to/config.yaml epochs=10 imgsz=640

Hay varias partes en este comando.

tarea establece el tipo de tarea: detectar, segmentar o clasificar. modo representa una acción: entrenar, predecir, val, exportar, rastrear o comparar. modelo es el modelo a utilizar, en este caso, yolov8n.pt. También puede usar yolov8s/yolov8l/yolov8x.

épocas representa el número de rondas de entrenamiento (10). imgsz representa el tamaño de la imagen (640). El tamaño de la imagen siempre debe establecerse en un múltiplo de 32.

Aquí hay un ejemplo de la salida que puede esperar:

El tiempo utilizado para el entrenamiento depende del tamaño de su conjunto de datos, la cantidad de épocas y la cantidad de clases que desea detectar. Una vez que se complete el proceso de entrenamiento, tendrá un modelo YOLOv8 entrenado que usará para detectar objetos en imágenes y videos.

Después de completar el entrenamiento, haga inferencias con los nuevos pesos, best.pt

yolo task=detect mode=predict model="runs/train/weights/best.pt" source="image.png"

Navegar a la carreras/tren/exp/pesos/mejor.pt directorio para acceder a los pesos entrenados personalizados. YOLOv8 habrá almacenado la imagen predicha en el corre/detecta/exp subdirectorio.

Evaluación del rendimiento del modelo

Puede evaluar el rendimiento del modelo YOLOv8 utilizando el siguiente comando que evalúa el modelo en un conjunto de imágenes de prueba:

yolo val model=yolov8n.pt data=path/to/config.yaml batch=1 imgsz=640

Los resultados esperados son los siguientes:

El proceso de evaluación generará varias métricas, como precisión, recuperación y puntaje F1. La métrica de precisión mide el porcentaje de objetos que se detectan correctamente. La métrica de recuperación mide el porcentaje de objetos que YOLOv8 detecta. La puntuación F1 es un promedio ponderado de las métricas de precisión y recuperación.

Implementación de su modelo YOLOv8 personalizado

Pruebe el rendimiento de su modelo YOLOv8.

yolo detectar predecir model=path/to/best.pt source='path/to/image.jpg'

La salida es la siguiente:

Luego, guarde los pesos del modelo en un archivo.

yolo exportar modelo=ruta/a/mejor.pt formato=onnx

Use el archivo para cargar el modelo en su aplicación y utilícelo para detectar objetos en tiempo real. Si implementa el modelo en un servicio de almacenamiento en la nube, use el servicio en la nube para detectar objetos en imágenes y videos que están en el servicio.

YOLOv8 para llevar

El equipo de Ultralytics ha mejorado continuamente los modelos de la serie YOLO. Esto los ha convertido en líderes de la industria en tecnología de detección de objetos y en el campo de la visión artificial.

El YOLOv8 es un modelo mejorado que puede usar para manejar muchos tipos de proyectos de visión por computadora.