Entrenar datos personalizados
馃摎 Esta gu铆a explica c贸mo entrenar tu propio conjunto de datos personalizado con YOLOv5 馃殌.
Antes de empezar
Clonar repo e instalar requirements.txt en a Python>=3.8.0 incluyendo PyTorch>=1.8. Los modelos y conjuntos de datos se descargan autom谩ticamente de la 煤ltimaversi贸n de YOLOv5 .
git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install
Entrenar con datos personalizados
La creaci贸n de un modelo personalizado para detectar objetos es un proceso iterativo que consiste en recopilar y organizar im谩genes, etiquetar los objetos de inter茅s, entrenar un modelo, desplegarlo en la naturaleza para realizar predicciones y, a continuaci贸n, utilizar ese modelo desplegado para recopilar ejemplos de casos extremos para repetirlos y mejorarlos.
Licencias
Ultralytics ofrece dos opciones de licencia:
- La licenciaAGPL-3.0 , una licencia de c贸digo abierto aprobada por la OSI ideal para estudiantes y aficionados.
- La licencia Enterprise para empresas que deseen incorporar nuestros modelos de IA a sus productos y servicios.
Para m谩s detalles, consulte Ultralytics Licensing.
YOLOv5 Los modelos deben entrenarse con datos etiquetados para aprender las clases de objetos de esos datos. Existen dos opciones para crear el conjunto de datos antes de empezar el entrenamiento:
Opci贸n 1: Crear un Roboflow Conjunto de datos
1.1 Recopilar im谩genes
Su modelo aprender谩 con el ejemplo. El entrenamiento con im谩genes similares a las que ver谩 en la naturaleza es de suma importancia. Lo ideal es recopilar una amplia variedad de im谩genes con la misma configuraci贸n (c谩mara, 谩ngulo, iluminaci贸n, etc.) con la que se desplegar谩 finalmente el proyecto.
Si esto no es posible, puede partir de un conjunto de datos p煤blico para entrenar su modelo inicial y, a continuaci贸n, muestrear im谩genes de la naturaleza durante la inferencia para mejorar su conjunto de datos y modelo de forma iterativa.
1.2 Crear etiquetas
Una vez que haya recopilado las im谩genes, tendr谩 que anotar los objetos de inter茅s para crear una verdad b谩sica a partir de la cual su modelo pueda aprender.
Roboflow Annotate es una sencilla herramienta basada en web para gestionar y etiquetar las im谩genes con tu equipo y exportarlas en el formato de anotaci贸n deYOLOv5.
1.3 Preparar el conjunto de datos para YOLOv5
Tanto si etiqueta sus im谩genes con Roboflow como si no, puede utilizarlo para convertir su conjunto de datos al formato YOLO , crear un archivo de configuraci贸n YAML YOLOv5 y alojarlo para importarlo en su script de entrenamiento.
Cree una cuenta gratuita en Roboflow y cargue su conjunto de datos en Public
etiquete las im谩genes no anotadas y, a continuaci贸n, genere y exporte una versi贸n de su conjunto de datos en YOLOv5 Pytorch
formato.
Nota: YOLOv5 realiza el aumento en l铆nea durante el entrenamiento, por lo que no recomendamos aplicar ning煤n paso de aumento en Roboflow para el entrenamiento con YOLOv5. Pero recomendamos aplicar los siguientes pasos de preprocesamiento:
- Orientaci贸n autom谩tica: para eliminar la orientaci贸n EXIF de las im谩genes.
- Redimensionar (Estirar) - al tama帽o cuadrado de entrada de su modelo (640x640 es el valor por defecto de YOLOv5 ).
La generaci贸n de una versi贸n le proporcionar谩 una instant谩nea de su conjunto de datos, por lo que siempre podr谩 volver atr谩s y comparar sus futuras ejecuciones de entrenamiento del modelo con 茅l, incluso si a帽ade m谩s im谩genes o cambia su configuraci贸n m谩s adelante.
Exportar en YOLOv5 Pytorch
y, a continuaci贸n, copie el fragmento en su script de entrenamiento o cuaderno para descargar su conjunto de datos.
Opci贸n 2: Crear un conjunto de datos manual
2.1 Crear dataset.yaml
COCO128 es un ejemplo de peque帽o conjunto de datos tutorial compuesto por las 128 primeras im谩genes de COCO train2017. Estas mismas 128 im谩genes se utilizan tanto para el entrenamiento como para la validaci贸n con el fin de verificar que nuestro proceso de entrenamiento es capaz de sobreajuste. data/coco128.yamlque se muestra a continuaci贸n, es el archivo de configuraci贸n del conjunto de datos que define 1) el directorio ra铆z del conjunto de datos path
y rutas relativas a train
/ val
/ test
directorios de im谩genes (o *.txt
con rutas de im谩genes) y 2) una clase names
diccionario:
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes (80 COCO classes)
names:
0: person
1: bicycle
2: car
# ...
77: teddy bear
78: hair drier
79: toothbrush
2.2 Crear etiquetas
Despu茅s de utilizar una herramienta de anotaci贸n para etiquetar tus im谩genes, exporta tus etiquetas a YOLO formatocon una *.txt
por imagen (si no hay objetos en la imagen, no hay *.txt
). En *.txt
son las especificaciones del archivo:
- Una fila por objeto
- Cada fila es
class x_center y_center width height
formato. - Las coordenadas de la casilla deben estar en xywh normalizado (de 0 a 1). Si sus casillas est谩n en p铆xeles, divida
x_center
ywidth
por ancho de imagen, yy_center
yheight
por la altura de la imagen. - Los n煤meros de clase tienen 铆ndice cero (empiezan por 0).
El archivo de etiquetas correspondiente a la imagen anterior contiene 2 personas (clase 0
) y un empate (clase 27
):
2.3 Organizar directorios
Organice sus im谩genes y etiquetas de tren y val seg煤n el ejemplo siguiente. YOLOv5 asume /coco128
est谩 dentro de un /datasets
directorio junto a el /yolov5
directorio. YOLOv5 localiza autom谩ticamente las etiquetas de cada imagen sustituyendo la 煤ltima instancia de /images/
en cada ruta de imagen con /labels/
. Por ejemplo:
3. Seleccione un modelo
Selecciona un modelo preentrenado para empezar a entrenar. Aqu铆 seleccionamos YOLOv5s, el segundo modelo m谩s peque帽o y r谩pido disponible. Consulta nuestra tabla L脡EME para ver una comparaci贸n completa de todos los modelos.
4. Tren
Entrenar un modelo YOLOv5s en COCO128 especificando el conjunto de datos, el tama帽o del lote, el tama帽o de la imagen y el preentrenamiento. --weights yolov5s.pt
(recomendado), o inicializado aleatoriamente --weights '' --cfg yolov5s.yaml
(no recomendado). Los pesos preentrenados se descargan autom谩ticamente de la base de datos 煤ltima versi贸n de YOLOv5.
Consejo
馃挕 A帽adir --cache ram
o --cache disk
para acelerar el entrenamiento (requiere importantes recursos de RAM/disco).
Consejo
馃挕 Entrena siempre a partir de un conjunto de datos local. Las unidades montadas o en red como Google Drive ser谩n muy lentas.
Todos los resultados del entrenamiento se guardan en runs/train/
con directorios de ejecuci贸n incrementales, es decir runs/train/exp2
, runs/train/exp3
etc. Para m谩s detalles, consulte la secci贸n Formaci贸n de nuestro cuaderno de tutoriales.
5. Visualice
Comet Registro y visualizaci贸n 馃専 NUEVO
Comet est谩 ahora totalmente integrado con YOLOv5. Siga y visualice las m茅tricas del modelo en tiempo real, guarde sus hiperpar谩metros, conjuntos de datos y puntos de control del modelo, y visualice las predicciones de su modelo con los paneles personalizados deComet . Comet se asegura de que nunca pierda el hilo de su trabajo y facilita el intercambio de resultados y la colaboraci贸n entre equipos de todos los tama帽os.
Empezar es f谩cil:
pip install comet_ml # 1. install
export COMET_API_KEY=<Your API Key> # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. train
Para obtener m谩s informaci贸n sobre todas las funciones de Comet compatibles con esta integraci贸n, consulte la p谩gina Comet Tutorial. Si desea m谩s informaci贸n sobre Comet, visite nuestra p谩gina web. documentaci贸n. Empieza probando el cuaderno Colab de Comet :
ClearML Registro y automatizaci贸n 馃専 NUEVO
ClearML est谩 completamente integrado en YOLOv5 para realizar un seguimiento de su experimentaci贸n, gestionar las versiones de los conjuntos de datos e incluso ejecutar remotamente las ejecuciones de entrenamiento. Para habilitar ClearML:
pip install clearml
- ejecute
clearml-init
para conectarse a un servidor ClearML
Obtendr谩s todas las grandes caracter铆sticas esperadas de un gestor de experimentos: actualizaciones en vivo, carga de modelos, comparaci贸n de experimentos, etc. pero ClearML tambi茅n rastrea los cambios no comprometidos y los paquetes instalados, por ejemplo. Gracias a esto ClearML Tasks (que es como llamamos a los experimentos) 隆tambi茅n son reproducibles en diferentes m谩quinas! Con s贸lo 1 l铆nea extra, podemos programar una tarea de entrenamiento YOLOv5 en una cola para ser ejecutada por cualquier n煤mero de ClearML Agentes (trabajadores).
Puede utilizar ClearML Data para versionar su conjunto de datos y luego pasarlo a YOLOv5 simplemente utilizando su ID 煤nico. Esto le ayudar谩 a realizar un seguimiento de sus datos sin m谩s complicaciones. Para m谩s informaci贸n, consulte el tutorial deClearML .
Registro local
Los resultados del entrenamiento se registran autom谩ticamente con Tensorboard y CSV registradores para runs/train
con un nuevo directorio de experimentos creado para cada nuevo entrenamiento como runs/train/exp2
, runs/train/exp3
etc.
Este directorio contiene estad铆sticas de entrenamiento y validaci贸n, mosaicos, etiquetas, predicciones y mosaicos aumentados, as铆 como m茅tricas y gr谩ficos que incluyen curvas de precisi贸n-recuperaci贸n (PR) y matrices de confusi贸n.
Archivo de resultados results.csv
se actualiza despu茅s de cada 茅pocay se representa como results.png
(abajo) una vez finalizado el entrenamiento. Tambi茅n puede trazar cualquier results.csv
manualmente:
from utils.plots import plot_results
plot_results("path/to/results.csv") # plot 'results.csv' as 'results.png'
Pr贸ximos pasos
Una vez que su modelo est谩 entrenado puede utilizar su mejor punto de control best.pt
a:
- Ejecute CLI o Python inferencia en nuevas im谩genes y v铆deos
- Validar la precisi贸n en las divisiones de entrenamiento, validaci贸n y prueba.
- Exportar a TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML y TensorRT formatos
- Evolucionar los hiperpar谩metros para mejorar el rendimiento
- Mejore su modelo tomando muestras de im谩genes del mundo real y a帽adi茅ndolas a su conjunto de datos.
Entornos compatibles
Ultralytics proporciona una serie de entornos listos para usar, cada uno de ellos preinstalado con dependencias esenciales como CUDACUDNN, Pythony PyTorchpara poner en marcha sus proyectos.
- Cuadernos gratuitos GPU:
- Google Nube: Gu铆a de inicio r谩pido de GCP
- Amazon: Gu铆a de inicio r谩pido de AWS
- Azure: Gu铆a de inicio r谩pido de AzureML
- Docker: Gu铆a de inicio r谩pido de Docker
Estado del proyecto
Este distintivo indica que todas las pruebas de integraci贸n continua (IC) deYOLOv5 GitHub Actions se han superado con 茅xito. Estas pruebas de IC comprueban rigurosamente la funcionalidad y el rendimiento de YOLOv5 en varios aspectos clave: formaci贸n, validaci贸n, inferencia, exportaci贸n y puntos de referencia. Garantizan un funcionamiento coherente y fiable en macOS, Windows y Ubuntu, con pruebas realizadas cada 24 horas y en cada nueva confirmaci贸n.
PREGUNTAS FRECUENTES
驴C贸mo entreno YOLOv5 en mi conjunto de datos personalizado?
El entrenamiento de YOLOv5 en un conjunto de datos personalizado implica varios pasos:
- Prepare su conjunto de datos: Recopile y etiquete las im谩genes. Utilice herramientas como Roboflow para organizar los datos y exportarlos en formatoYOLOv5 .
- Configuraci贸n del entorno: Clona el repositorio YOLOv5 e instala las dependencias:
- Crear configuraci贸n de conjunto de datos: Escribe un
dataset.yaml
que define las rutas tren/val y los nombres de las clases. - Entrenar el modelo:
驴Qu茅 herramientas puedo utilizar para anotar mi conjunto de datos YOLOv5 ?
Puede utilizar Roboflow Annotate, una intuitiva herramienta basada en web para etiquetar im谩genes. Admite la colaboraci贸n en equipo y exporta en formato YOLOv5 . Tras recopilar las im谩genes, utilice Roboflow para crear y gestionar las anotaciones de forma eficaz. Otras opciones son herramientas como LabelImg y CVAT para anotaciones locales.
驴Por qu茅 deber铆a utilizar Ultralytics HUB para formar a mis modelos YOLO ?
Ultralytics HUB ofrece una plataforma integral de formaci贸n, despliegue y gesti贸n de modelos YOLO sin necesidad de grandes conocimientos de codificaci贸n. Entre las ventajas de utilizar Ultralytics HUB se incluyen:
- F谩cil formaci贸n de modelos: Simplifica el proceso de formaci贸n con entornos preconfigurados.
- Gesti贸n de datos: Gestiona sin esfuerzo conjuntos de datos y control de versiones.
- Supervisi贸n en tiempo real: Integra herramientas como Comet para el seguimiento y la visualizaci贸n de m茅tricas en tiempo real.
- Colaboraci贸n: Ideal para proyectos en equipo con recursos compartidos y f谩cil gesti贸n.
驴C贸mo convierto mis datos anotados al formato YOLOv5 ?
Para convertir datos anotados al formato YOLOv5 utilizando Roboflow:
- Cargue su conjunto de datos en un espacio de trabajo Roboflow .
- Etiquetar las im谩genes si no est谩n ya etiquetadas.
- Generar y exportar el conjunto de datos en
YOLOv5 Pytorch
formato. Aseg煤rese de que se aplican pasos de preprocesamiento como la orientaci贸n autom谩tica y el cambio de tama帽o (estiramiento) al tama帽o de entrada cuadrado (por ejemplo, 640x640). - Descargue el conjunto de datos e int茅grelo en su script de entrenamiento YOLOv5 .
驴Cu谩les son las opciones de licencia para utilizar YOLOv5 en aplicaciones comerciales?
Ultralytics ofrece dos opciones de licencia:
- AGPL-3.0 Licencia: Una licencia de c贸digo abierto apta para uso no comercial, ideal para estudiantes y aficionados.
- Licencia para empresas: Dise帽ada para empresas que desean integrar YOLOv5 en productos y servicios comerciales. Para obtener informaci贸n detallada, visite nuestra p谩gina de licencias.
Para m谩s detalles, consulte nuestra gu铆a sobre licenciasUltralytics .