Saltar al contenido

Consejos para obtener los mejores resultados de entrenamiento

馃摎 Esta gu铆a explica c贸mo obtener 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 los ajustes de entrenamiento, siempre que tu conjunto de datos sea 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 tienes preguntas sobre los resultados de tu entrenamiento te recomendamos que facilites la m谩xima informaci贸n posible si esperas una respuesta 煤til, incluidos los gr谩ficos de resultados (train losses, val losses, P, R, mAP), la curva PR, la matriz de confusi贸n, los mosaicos de entrenamiento, los resultados de las pruebas y las im谩genes estad铆sticas del conjunto de datos, como labels.png. Todas ellas se encuentran en tu 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 entrenamientos 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 distintas horas del d铆a, distintas estaciones, distintas condiciones meteorol贸gicas, distintas iluminaciones, distintos 谩ngulos, distintas fuentes (extra铆das de Internet, recogidas localmente, distintas 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. A ning煤n objeto debe faltarle una etiqueta.
  • Verificaci贸n de la etiqueta. Ver train_batch*.jpg en el arranque del tren para verificar que tus 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 del modelo

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 o medianos (es decir. COV, VisDrone, GlobalWheat). Pasa el nombre del modelo a la funci贸n --weights argumento. Los modelos se descargan autom谩ticamente de 煤ltima versi贸n de YOLOv5.
python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • Empieza de cero. Recomendado para grandes conjuntos de datos (es decir COCO, Objetos365, OIv6). Pasa el YAML de la arquitectura del modelo que te interesa, junto con un vac铆o --weights '' argumento:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

Ajustes de entrenamiento

Antes de modificar nada, entrena primero con los ajustes por defecto para establecer una l铆nea de base de rendimiento. Puedes encontrar una lista completa de los ajustes de train.py en el argparser train.py.

  • 脡pocas. Empieza con 300 茅pocas. Si se sobreajusta pronto, puedes reducir las 茅pocas. Si no se produce sobreajuste despu茅s de 300 茅pocas, entrena durante m谩s tiempo, es decir, 600, 1200, etc. 茅pocas.
  • Tama帽o de la imagen. COCO 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 del entrenamiento con resoluciones m谩s altas, como --img 1280. Si hay muchos objetos peque帽os, los conjuntos de datos personalizados se beneficiar谩n del entrenamiento a resoluci贸n nativa o superior. Los mejores resultados de inferencia se obtienen a la misma --img a la que se realiz贸 el entrenamiento, es decir, si entrenas a --img 1280 tambi茅n debes comprobar y detectar en --img 1280.
  • Tama帽o del lote. Utiliza la mayor --batch-size que permita tu hardware. Los tama帽os de lote peque帽os producen estad铆sticas batchnorm pobres y deben evitarse.
  • Hiperpar谩metros. Los hiperpar谩metros por defecto est谩n en hip.rasca-baja.yaml. Te recomendamos que entrenes 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. Reducir 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, consulta nuestro Tutorial de evoluci贸n de hiperpar谩metros.

Otras lecturas

Si quieres saber m谩s, un buen lugar para empezar es la "Receta para entrenar 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 pregunta!



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (4), Burhan-Q (1)

Comentarios