Ir al contenido

Consejos para obtener los mejores resultados de entrenamiento

📚 Esta guía explica cómo producir los mejores resultados de mAP y entrenamiento con YOLOv5 🚀.

La mayoría de las veces se pueden obtener buenos resultados sin cambiar los modelos ni la configuración de entrenamiento, siempre que el conjunto de datos sea lo suficientemente grande y esté bien etiquetado. Si al principio no obtienes buenos resultados, hay pasos que puedes dar para mejorar, pero siempre recomendamos a los usuarios que primero entrenen con todos los ajustes predeterminados antes de considerar cualquier cambio. Esto ayuda a establecer una línea de base de rendimiento y a detectar áreas de mejora.

Si tiene preguntas sobre los resultados de su entrenamiento le recomendamos que facilite la máxima información posible si espera una respuesta útil, incluyendo gráficos de resultados (pérdidas de tren, pérdidas de val, P, R, mAP), curva PR, matriz de confusiónmosaicos de entrenamiento, resultados de las pruebas e imágenes estadísticas del conjunto de datos, como labels.png. Todas ellas se encuentran en project/name directorio, normalmente yolov5/runs/train/exp.

A continuación hemos elaborado una guía completa para los usuarios que deseen obtener los mejores resultados en sus cursos de formación en YOLOv5 .

Conjunto de datos

  • Imágenes por clase. ≥ 1500 imágenes por clase recomendadas
  • Instancias por clase. ≥ 10000 instancias (objetos etiquetados) por clase recomendadas.
  • Variedad de imágenes. Debe ser representativa del entorno desplegado. Para casos de uso en el mundo real, recomendamos imágenes de diferentes horas del día, diferentes estaciones, diferentes condiciones meteorológicas, diferentes iluminaciones, diferentes ángulos, diferentes fuentes (extraídas de Internet, recopiladas localmente, diferentes cámaras), etc.
  • Coherencia de las etiquetas. Todas las instancias de todas las clases en todas las imágenes deben estar etiquetadas. El etiquetado parcial no funcionará.
  • Precisión de las etiquetas. Las etiquetas deben encerrar estrechamente cada objeto. No debe haber espacio entre un objeto y su cuadro delimitador. No debe faltar ninguna etiqueta en ningún objeto.
  • Verificación de etiquetas. Ver train_batch*.jpg en el arranque del tren para verificar que sus etiquetas aparecen correctamente, es decir, ver ejemplo mosaico.
  • Imágenes de fondo. Las imágenes de fondo son imágenes sin objetos que se añaden a un conjunto de datos para reducir los falsos positivos (FP). Recomendamos entre un 0 y un 10% de imágenes de fondo para ayudar a reducir los FP (COCO tiene 1000 imágenes de fondo como referencia, un 1% del total). No se requieren etiquetas para las imágenes de fondo.

Análisis COCO

Selección de modelos

Los modelos más grandes como YOLOv5x y YOLOv5x6 producirán mejores resultados en casi todos los casos, pero tienen más parámetros, requieren más memoria CUDA para entrenarse y son más lentos de ejecutar. Para implantaciones móviles recomendamos YOLOv5s/m, para implantaciones en la nube recomendamos YOLOv5l/x. Consulta nuestra tabla LÉEME para ver una comparación completa de todos los modelos.

YOLOv5 Modelos

  • Partir de los pesos preentrenados. Recomendado para conjuntos de datos pequeños y medianos (es decir. COV, VisDrone, GlobalWheat). Pase el nombre del modelo a la --weights argumento. Los modelos se descargan automáticamente del última versión de YOLOv5.
python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • Empezar de cero. Recomendado para grandes conjuntos de datos (por ejemplo COCO, Objetos365, OIv6). Pasa el YAML de la arquitectura del modelo que te interesa, junto con un --weights '' argumento:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

Ajustes de formación

Antes de modificar nada, entrena primero con la configuración por defecto para establecer una línea base de rendimiento. Puede encontrar una lista completa de los ajustes de train.py en el argparser de train.py.

  • Épocas. Empiece con 300 épocas. Si se sobreajusta pronto, puede reducir las épocas. Si no se produce sobreajuste después de 300 épocas, entrene durante más tiempo, es decir, 600, 1200, etc. épocas.
  • Tamaño de la imagen. COCO se entrena con una resolución nativa de --img 640aunque debido a la gran cantidad de objetos pequeños en el conjunto de datos puede beneficiarse de un entrenamiento a resoluciones más altas como --img 1280. Si hay muchos objetos pequeños, los conjuntos de datos personalizados se beneficiarán de un entrenamiento a resolución nativa o superior. Los mejores resultados de inferencia se obtienen a --img como se realizó el entrenamiento, es decir, si se entrena a --img 1280 también debe comprobar y detectar en --img 1280.
  • Tamaño del lote. Utilice el mayor --batch-size que permita su hardware. Los lotes pequeños producen estadísticas batchnorm deficientes y deben evitarse.
  • Hiperparámetros. Los hiperparámetros por defecto están en hip.rasca-baja.yaml. Recomendamos entrenar primero con los hiperparámetros por defecto antes de pensar en modificar ninguno. En general, aumentar los hiperparámetros de aumento reducirá y retrasará el sobreajuste, permitiendo entrenamientos más largos y un mAP final más alto. La reducción de los hiperparámetros de aumento del componente de pérdida como hyp['obj'] ayudará a reducir el sobreajuste en esos componentes de pérdida específicos. Para obtener un método automatizado de optimización de estos hiperparámetros, consulte nuestro Tutorial de evolución de hiperparámetros.

Lecturas complementarias

Si quieres saber más, un buen lugar para empezar es la "Receta para el entrenamiento de redes neuronales" de Karpathy, que tiene grandes ideas para el entrenamiento que se aplican ampliamente a todos los dominios de ML: https://karpathy.github.io/2019/04/25/recipe/

Buena suerte 🍀 ¡y avísanos si tienes alguna otra duda!

Creado hace 1 año ✏️ Actualizado hace 2 meses

Comentarios