Aumento de datos utilizando Ultralytics YOLO

Introducción
La ampliación de datos es una técnica crucial en la visión artificial que expande artificialmente su conjunto de datos de entrenamiento aplicando varias transformaciones a las imágenes existentes. Al entrenar modelos de aprendizaje profundo como Ultralytics YOLO, la ampliación de datos ayuda a mejorar la robustez del modelo, reduce el sobreajuste y mejora la generalización a escenarios del mundo real.
Ver: Cómo usar Mosaic, MixUp y más Aumentos de Datos para ayudar a los modelos YOLO de Ultralytics a generalizar mejor 🚀
Por qué es importante el aumento de datos
El aumento de datos tiene múltiples propósitos críticos en el entrenamiento de modelos de visión artificial:
- Conjunto de datos ampliado: Al crear variaciones de las imágenes existentes, puede aumentar eficazmente el tamaño de su conjunto de datos de entrenamiento sin recopilar nuevos datos.
- Generalización mejorada: Los modelos aprenden a reconocer objetos en diversas condiciones, lo que los hace más robustos en aplicaciones del mundo real.
- Reducción del sobreajuste: Al introducir variabilidad en los datos de entrenamiento, es menos probable que los modelos memoricen características específicas de la imagen.
- Rendimiento mejorado: Los modelos entrenados con un aumento adecuado suelen lograr una mejor precisión en los conjuntos de validación y prueba.
La implementación de YOLO de Ultralytics proporciona un conjunto completo de técnicas de aumento de datos, cada una con propósitos específicos y que contribuyen al rendimiento del modelo de diferentes maneras. Esta guía explorará cada parámetro de aumento en detalle, ayudándole a comprender cuándo y cómo utilizarlos eficazmente en sus proyectos.
Ejemplos de configuraciones
Puede personalizar cada parámetro utilizando la API de python, la interfaz de línea de comandos (CLI) o un archivo de configuración. A continuación, se muestran ejemplos de cómo configurar el aumento de datos en cada método.
Ejemplos de configuración
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)
# Training without any augmentations (disabled values omitted for clarity)
model.train(
data="coco.yaml",
epochs=100,
hsv_h=0.0,
hsv_s=0.0,
hsv_v=0.0,
translate=0.0,
scale=0.0,
fliplr=0.0,
mosaic=0.0,
erasing=0.0,
auto_augment=None,
)
# Training with custom Albumentations transforms (Python API only)
custom_transforms = [
A.Blur(blur_limit=7, p=0.5),
A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)
# Training with custom augmentation parameters
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 hsv_h=0.03 hsv_s=0.6 hsv_v=0.5
Usar un archivo de configuración
Puede definir todos los parámetros de entrenamiento, incluidas las aumentaciones, en un archivo de configuración YAML (por ejemplo, train_custom.yaml). El mode parámetro solo es necesario cuando se utiliza la CLI. Este nuevo archivo YAML anulará entonces el predeterminado ubicado en el ultralytics paquete.
# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo11n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5
A continuación, lanza el entrenamiento con la API de Python:
Ejemplo de entrenamiento
from ultralytics import YOLO
# Load a COCO-pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Train the model with custom configuration
model.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolo detect train model="yolo11n.pt" cfg=train_custom.yaml
Aumentos del espacio de color
Ajuste de Tono (hsv_h)
- Rango:
0.0-1.0 - Predeterminado:
0.015 - Uso: Desplaza los colores de la imagen manteniendo sus relaciones. El
hsv_hEl hiperparámetro define la magnitud del desplazamiento, con el ajuste final elegido aleatoriamente entre-hsv_hyhsv_h. Por ejemplo, conhsv_h=0.3, el desplazamiento se selecciona aleatoriamente dentro de-0.3a datos0.3. Para valores superiores a0.5, el cambio de tono se envuelve alrededor de la rueda de colores, por eso las aumentaciones se ven iguales entre0.5y-0.5. - Propósito: Particularmente útil para escenarios al aire libre donde las condiciones de iluminación pueden afectar drásticamente la apariencia de los objetos. Por ejemplo, un plátano puede verse más amarillo bajo la luz brillante del sol, pero más verdoso en interiores.
- Implementación de Ultralytics: RandomHSV
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ajuste de saturación (hsv_s)
- Rango:
0.0-1.0 - Predeterminado:
0.7 - Uso: Modifica la intensidad de los colores en la imagen. El
hsv_sEl hiperparámetro define la magnitud del desplazamiento, con el ajuste final elegido aleatoriamente entre-hsv_syhsv_s. Por ejemplo, conhsv_s=0.7, la intensidad se selecciona aleatoriamente dentro de-0.7a datos0.7. - Propósito: Ayuda a los modelos a manejar diferentes condiciones climáticas y configuraciones de cámara. Por ejemplo, una señal de tráfico roja puede aparecer muy vívida en un día soleado, pero verse apagada y descolorida en condiciones de niebla.
- Implementación de Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ajuste de brillo (hsv_v)
- Rango:
0.0-1.0 - Predeterminado:
0.4 - Uso: Cambia el brillo de la imagen. El
hsv_vEl hiperparámetro define la magnitud del desplazamiento, con el ajuste final elegido aleatoriamente entre-hsv_vyhsv_v. Por ejemplo, conhsv_v=0.4, la intensidad se selecciona aleatoriamente dentro de-0.4a datos0.4. - Propósito: Esencial para entrenar modelos que necesitan funcionar en diferentes condiciones de iluminación. Por ejemplo, una manzana roja puede verse brillante a la luz del sol, pero mucho más oscura a la sombra.
- Implementación de Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Transformaciones geométricas
Rotación (degrees)
- Rango:
0.0a datos180 - Predeterminado:
0.0 - Uso: Rota las imágenes aleatoriamente dentro del rango especificado. El
degreesel hiperparámetro define el ángulo de rotación, con el ajuste final elegido aleatoriamente entre-degreesydegrees. Por ejemplo, condegrees=10.0, la rotación se selecciona aleatoriamente dentro de-10.0a datos10.0. - Propósito: Crucial para aplicaciones donde los objetos pueden aparecer en diferentes orientaciones. Por ejemplo, en imágenes aéreas de drones, los vehículos pueden estar orientados en cualquier dirección, lo que requiere que los modelos reconozcan los objetos independientemente de su rotación.
- Implementación de Ultralytics: RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Traslación (translate)
- Rango:
0.0-1.0 - Predeterminado:
0.1 - Uso: Desplaza las imágenes horizontal y verticalmente por una fracción aleatoria del tamaño de la imagen. El
translateEl hiperparámetro define la magnitud del desplazamiento, con el ajuste final elegido aleatoriamente dos veces (una para cada eje) dentro del rango-translateytranslate. Por ejemplo, contranslate=0.5, la traslación se selecciona aleatoriamente dentro de-0.5a datos0.5en el eje x, y se selecciona otro valor aleatorio independiente dentro del mismo intervalo en el eje y. - Propósito: Ayuda a los modelos a aprender a detectar objetos parcialmente visibles y mejora la robustez a la posición del objeto. Por ejemplo, en las aplicaciones de evaluación de daños en vehículos, las piezas del coche pueden aparecer total o parcialmente en el encuadre dependiendo de la posición y la distancia del fotógrafo, el aumento de la traslación enseñará al modelo a reconocer estas características independientemente de su integridad o posición.
- Implementación de Ultralytics: RandomPerspective
- Nota: Para simplificar, las traslaciones aplicadas a continuación son las mismas cada vez para ambos
xyyejes. Valores-1.0y1.0no se muestran, ya que traducirían la imagen completamente fuera del encuadre.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Escala (scale)
- Rango: ≥
0.0 - Predeterminado:
0.5 - Uso: Cambia el tamaño de las imágenes por un factor aleatorio dentro del rango especificado. El
scaleEl hiperparámetro define el factor de escala, con el ajuste final elegido aleatoriamente entre1-scaley1+scale. Por ejemplo, conscale=0.5, el escalado se selecciona aleatoriamente dentro de0.5a datos1.5. - Propósito: Permite que los modelos manejen objetos a diferentes distancias y tamaños. Por ejemplo, en aplicaciones de conducción autónoma, los vehículos pueden aparecer a varias distancias de la cámara, lo que requiere que el modelo los reconozca independientemente de su tamaño.
- Implementación de Ultralytics: RandomPerspective
- Nota:
- El valor
-1.0no se muestra, ya que haría desaparecer la imagen, mientras que1.0simplemente resulta en un zoom de 2x. - Los valores mostrados en la tabla siguiente son los que se aplican a través del hiperparámetro
scale, no el factor de escala final. - Si
scalees mayor que1.0, la imagen puede ser muy pequeña o volteada, ya que el factor de escala se elige aleatoriamente entre1-scaley1+scale. Por ejemplo, conscale=3.0, el escalado se selecciona aleatoriamente dentro de-2.0a datos4.0. Si se elige un valor negativo, la imagen se invierte.
- El valor
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Cizalladura (shear)
- Rango:
-180a datos+180 - Predeterminado:
0.0 - Uso: Introduce una transformación geométrica que sesga la imagen a lo largo de los ejes x e y, desplazando efectivamente partes de la imagen en una dirección mientras mantiene las líneas paralelas. El
shearEl hiperparámetro define el ángulo de cizalladura, con el ajuste final elegido aleatoriamente entre-shearyshear. Por ejemplo, conshear=10.0, el shear se selecciona aleatoriamente dentro de-10a datos10en el eje x, y se selecciona otro valor aleatorio independiente dentro del mismo intervalo en el eje y. - Propósito: Ayuda a los modelos a generalizar las variaciones en los ángulos de visión causadas por ligeras inclinaciones o puntos de vista oblicuos. Por ejemplo, en la monitorización del tráfico, los objetos como los coches y las señales de tráfico pueden aparecer inclinados debido a la colocación no perpendicular de la cámara. La aplicación del aumento de corte garantiza que el modelo aprenda a reconocer los objetos a pesar de tales distorsiones sesgadas.
- Implementación de Ultralytics: RandomPerspective
- Nota:
shearlos valores pueden distorsionar rápidamente la imagen, por lo que se recomienda comenzar con valores pequeños y aumentarlos gradualmente.- A diferencia de las transformaciones de perspectiva, el cizallamiento no introduce profundidad ni puntos de fuga, sino que distorsiona la forma de los objetos cambiando sus ángulos mientras mantiene paralelos los lados opuestos.
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Perspectiva (perspective)
- Rango:
0.0-0.001 - Predeterminado:
0.0 - Uso: Aplica una transformación de perspectiva completa a lo largo del eje x y el eje y, simulando cómo aparecen los objetos cuando se ven desde diferentes profundidades o ángulos. El
perspectiveel hiperparámetro define la magnitud de la perspectiva, con el ajuste final elegido aleatoriamente entre-perspectiveyperspective. Por ejemplo, conperspective=0.001, la perspectiva se selecciona aleatoriamente dentro de-0.001a datos0.001en el eje x, y se selecciona otro valor aleatorio independiente dentro del mismo intervalo en el eje y. - Propósito: El aumento de perspectiva es crucial para manejar cambios extremos en el punto de vista, especialmente en escenarios donde los objetos aparecen escorzados o distorsionados debido a cambios de perspectiva. Por ejemplo, en la detección de objetos basada en drones, los edificios, las carreteras y los vehículos pueden aparecer estirados o comprimidos dependiendo de la inclinación y la altitud del dron. Al aplicar transformaciones de perspectiva, los modelos aprenden a reconocer objetos a pesar de estas distorsiones inducidas por la perspectiva, lo que mejora su robustez en implementaciones del mundo real.
- Implementación de Ultralytics: RandomPerspective
-0.001 | -0.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Volteo Arriba-Abajo (flipud)
- Rango:
0.0-1.0 - Predeterminado:
0.0 - Uso: Realiza un volteo vertical invirtiendo la imagen a lo largo del eje y. Esta transformación espeja toda la imagen de arriba abajo, pero conserva todas las relaciones espaciales entre los objetos. El hiperparámetro flipud define la probabilidad de aplicar la transformación, con un valor de
flipud=1.0asegurando que todas las imágenes se volteen y un valor deflipud=0.0desactivando la transformación por completo. Por ejemplo, conflipud=0.5, cada imagen tiene un 50% de probabilidad de voltearse de arriba abajo. - Propósito: Útil para escenarios donde los objetos pueden aparecer al revés. Por ejemplo, en sistemas de visión robótica, los objetos en cintas transportadoras o brazos robóticos pueden ser recogidos y colocados en varias orientaciones. El volteo vertical ayuda al modelo a reconocer objetos independientemente de su posicionamiento de arriba hacia abajo.
- Implementación de Ultralytics: RandomFlip
flipud apagado | flipud en |
|---|---|
![]() | ![]() |
Volteo Izquierda-Derecha (fliplr)
- Rango:
0.0-1.0 - Predeterminado:
0.5 - Uso: Realiza un volteo horizontal espejando la imagen a lo largo del eje x. Esta transformación intercambia los lados izquierdo y derecho manteniendo la consistencia espacial, lo que ayuda al modelo a generalizar a objetos que aparecen en orientaciones espejadas. El
fliplrel hiperparámetro define la probabilidad de aplicar la transformación, con un valor defliplr=1.0asegurando que todas las imágenes se volteen y un valor defliplr=0.0desactivando la transformación por completo. Por ejemplo, confliplr=0.5, cada imagen tiene un 50% de probabilidad de voltearse de izquierda a derecha. - Propósito: El volteo horizontal se utiliza ampliamente en la detección de objetos, la estimación de la pose y el reconocimiento facial para mejorar la robustez contra las variaciones izquierda-derecha. Por ejemplo, en la conducción autónoma, los vehículos y los peatones pueden aparecer a ambos lados de la carretera, y el volteo horizontal ayuda al modelo a reconocerlos igualmente bien en ambas orientaciones.
- Implementación de Ultralytics: RandomFlip
fliplr apagado | fliplr en |
|---|---|
![]() | ![]() |
Intercambio de canales BGR (bgr)
- Rango:
0.0-1.0 - Predeterminado:
0.0 - Uso: Intercambia los canales de color de una imagen de RGB a BGR, alterando el orden en que se representan los colores. El
bgrel hiperparámetro define la probabilidad de aplicar la transformación, conbgr=1.0asegurando que todas las imágenes se sometan al intercambio de canales ybgr=0.0desactivándolo. Por ejemplo, conbgr=0.5, cada imagen tiene un 50% de probabilidad de ser convertida de RGB a BGR. - Propósito: Aumenta la robustez a diferentes ordenamientos de canales de color. Por ejemplo, al entrenar modelos que deben funcionar en varios sistemas de cámaras y bibliotecas de imágenes donde los formatos RGB y BGR pueden utilizarse de forma inconsistente, o al implementar modelos en entornos donde el formato de color de entrada podría diferir de los datos de entrenamiento.
- Implementación de Ultralytics: Format
bgr apagado | bgr en |
|---|---|
![]() | ![]() |
Mosaico (mosaic)
- Rango:
0.0-1.0 - Predeterminado:
1.0 - Uso: Combina cuatro imágenes de entrenamiento en una. El
mosaicel hiperparámetro define la probabilidad de aplicar la transformación, conmosaic=1.0asegurando que todas las imágenes se combinen ymosaic=0.0desactivando la transformación. Por ejemplo, conmosaic=0.5, cada imagen tiene un 50% de probabilidad de combinarse con otras tres imágenes. - Propósito: Muy eficaz para mejorar la detección de objetos pequeños y la comprensión del contexto. Por ejemplo, en los proyectos de conservación de la vida silvestre, donde los animales pueden aparecer a varias distancias y escalas, el aumento de mosaico ayuda al modelo a aprender a reconocer la misma especie en diferentes tamaños, oclusiones parciales y contextos ambientales mediante la creación artificial de diversas muestras de entrenamiento a partir de datos limitados.
- Implementación de Ultralytics: Mosaic
- Nota:
- Incluso si el
mosaicel aumento de datos hace que el modelo sea más robusto, también puede hacer que el proceso de entrenamiento sea más desafiante. - El
mosaicel aumento de datos se puede desactivar cerca del final del entrenamiento configurandoclose_mosaical número de épocas antes de la finalización en que debe desactivarse. Por ejemplo, siepochsestá establecido en200yclose_mosaicestá establecido en20, lamosaicel aumento de datos se desactivará después de180épocas. Siclose_mosaicestá establecido en0, lamosaicel aumento de datos se habilitará durante todo el proceso de entrenamiento. - El centro del mosaico generado se determina utilizando valores aleatorios y puede estar dentro o fuera de la imagen.
- La implementación actual del
mosaicel aumento de datos combina 4 imágenes seleccionadas aleatoriamente del conjunto de datos. Si el conjunto de datos es pequeño, la misma imagen puede utilizarse varias veces en el mismo mosaico.
- Incluso si el
mosaic apagado | mosaic en |
|---|---|
![]() | ![]() |
Mixup (mixup)
- Rango:
0.0-1.0 - Predeterminado:
0.0 - Uso: Mezcla dos imágenes y sus etiquetas con una probabilidad dada. El
mixupel hiperparámetro define la probabilidad de aplicar la transformación, conmixup=1.0asegurando que todas las imágenes se mezclen ymixup=0.0desactivando la transformación. Por ejemplo, conmixup=0.5, cada imagen tiene un 50% de probabilidad de mezclarse con otra imagen. - Propósito: Mejora la robustez del modelo y reduce el sobreajuste. Por ejemplo, en los sistemas de reconocimiento de productos minoristas, mixup ayuda al modelo a aprender características más robustas al mezclar imágenes de diferentes productos, enseñándole a identificar los artículos incluso cuando están parcialmente visibles u ocultos por otros productos en estantes de tiendas abarrotadas.
- Implementación de Ultralytics: Mixup
- Nota:
- El
mixupratio es un valor aleatorio escogido de unnp.random.beta(32.0, 32.0)distribución beta, lo que significa que cada imagen contribuye aproximadamente en un 50%, con ligeras variaciones.
- El
Primera imagen, mixup apagado | Segunda imagen, mixup apagado | mixup en |
|---|---|---|
![]() | ![]() | ![]() |
CutMix (cutmix)
- Rango:
0.0-1.0 - Predeterminado:
0.0 - Uso: Recorta una región rectangular de una imagen y la pega en otra imagen con una probabilidad dada. El
cutmixel hiperparámetro define la probabilidad de aplicar la transformación, concutmix=1.0asegurando que todas las imágenes se sometan a esta transformación ycutmix=0.0desactivándolo por completo. Por ejemplo, concutmix=0.5, cada imagen tiene un 50% de probabilidad de que una región sea reemplazada con un parche de otra imagen. - Propósito: Mejora el rendimiento del modelo al crear escenarios de oclusión realistas mientras se mantiene la integridad de las características locales. Por ejemplo, en los sistemas de conducción autónoma, cutmix ayuda al modelo a aprender a reconocer vehículos o peatones incluso cuando están parcialmente ocluidos por otros objetos, lo que mejora la precisión de la detección en entornos complejos del mundo real con objetos superpuestos.
- Implementación de Ultralytics: CutMix
- Nota:
- El tamaño y la posición de la región de corte se determinan aleatoriamente para cada aplicación.
- A diferencia de mixup, que mezcla los valores de los píxeles globalmente,
cutmixmantiene las intensidades de píxeles originales dentro de las regiones cortadas, preservando las características locales. - Una región se pega en la imagen de destino solo si no se superpone con ningún bounding box existente. Además, solo los bounding boxes que conservan al menos
0.1(10%) de su área original dentro de la región pegada se conservan. - Este umbral mínimo de área del cuadro delimitador no se puede cambiar con la implementación actual y está establecido en
0.1por defecto.
Primera imagen, cutmix apagado | Segunda imagen, cutmix apagado | cutmix en |
|---|---|---|
![]() | ![]() | ![]() |
Aumentos Específicos de Segmentación
Copiar-Pegar (copy_paste)
- Rango:
0.0-1.0 - Predeterminado:
0.0 - Uso: Solo funciona para tareas de segmentación; esta aumentación copia objetos dentro o entre imágenes basándose en una probabilidad especificada, controlada por el
copy_paste_mode. Elcopy_pasteel hiperparámetro define la probabilidad de aplicar la transformación, concopy_paste=1.0asegurando que todas las imágenes se copien ycopy_paste=0.0desactivando la transformación. Por ejemplo, concopy_paste=0.5, cada imagen tiene un 50% de probabilidad de que se copien objetos de otra imagen. - Propósito: Particularmente útil para tareas de segmentación de instancias y clases de objetos raras. Por ejemplo, en la detección de defectos industriales, donde ciertos tipos de defectos aparecen con poca frecuencia, el aumento de datos mediante copiar y pegar puede aumentar artificialmente la aparición de estos defectos raros copiándolos de una imagen a otra, lo que ayuda al modelo a aprender mejor estos casos subrepresentados sin necesidad de muestras defectuosas adicionales.
- Implementación de Ultralytics: CopyPaste
- Nota:
- Como se muestra en el GIF a continuación, el
copy_pasteel aumento de datos se puede utilizar para copiar objetos de una imagen a otra. - Una vez que se copia un objeto, independientemente de
copy_paste_mode, su Intersección sobre Área (IoA) se calcula con todos los objetos de la imagen de origen. Si todos los IoA están por debajo de0.3(30%), el objeto se pega en la imagen de destino. Si solo uno de los IoA está por encima0.3, el objeto no se pega en la imagen de destino. - El umbral de IoA no se puede cambiar con la implementación actual y está establecido en
0.3por defecto.
- Como se muestra en el GIF a continuación, el
copy_paste apagado | copy_paste encendido con copy_paste_mode=flip | Visualizar el copy_paste proceso |
|---|---|---|
![]() | ![]() | ![]() |
Modo Copiar-Pegar (copy_paste_mode)
- Opciones:
'flip','mixup' - Predeterminado:
'flip' - Uso: Determina el método utilizado para copiar-pegar aumento de datos. Si se establece en
'flip', los objetos provienen de la misma imagen, mientras que'mixup'permite copiar objetos de diferentes imágenes. - Propósito: Permite flexibilidad en la forma en que los objetos copiados se integran en las imágenes de destino.
- Implementación de Ultralytics: CopyPaste
- Nota:
- El principio IoA es el mismo para ambos
copy_paste_mode, pero la forma en que se copian los objetos es diferente. - Dependiendo del tamaño de la imagen, los objetos a veces pueden copiarse parcial o totalmente fuera del marco.
- Dependiendo de la calidad de las anotaciones de polígonos, los objetos copiados pueden tener ligeras variaciones de forma en comparación con los originales.
- El principio IoA es el mismo para ambos
| Imagen de referencia | Imagen elegida para copy_paste | copy_paste encendido con copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Aumentos específicos de la clasificación
Aumento automático (auto_augment)
- Opciones:
'randaugment','autoaugment','augmix',None - Predeterminado:
'randaugment' - Uso: Aplica políticas de aumento automatizadas para la clasificación. El
'randaugment'opción utiliza RandAugment,'autoaugment'utiliza AutoAugment, y'augmix'usa AugMix. Estableciendo aNonedesactiva el aumento automatizado. - Propósito: Optimiza automáticamente las estrategias de aumentación para tareas de clasificación. Las diferencias son las siguientes:
- AutoAugment: Este modo aplica políticas de aumento predefinidas aprendidas de conjuntos de datos como ImageNet, CIFAR10 y SVHN. Los usuarios pueden seleccionar estas políticas existentes, pero no pueden entrenar nuevas dentro de Torchvision. Para descubrir estrategias de aumento óptimas para conjuntos de datos específicos, serían necesarias bibliotecas externas o implementaciones personalizadas. Consulte el artículo de AutoAugment.
- RandAugment: Aplica una selección aleatoria de transformaciones con magnitud uniforme. Este enfoque reduce la necesidad de una fase de búsqueda exhaustiva, lo que lo hace más eficiente computacionalmente al tiempo que mejora la robustez del modelo. Referencia al artículo de RandAugment.
- AugMix: AugMix es un método de aumento de datos que mejora la robustez del modelo creando diversas variaciones de imágenes a través de combinaciones aleatorias de transformaciones simples. Consulte el artículo de AugMix.
- Implementación de Ultralytics: classify_augmentations()
- Nota:
- Esencialmente, la principal diferencia entre los tres métodos es la forma en que se definen y aplican las políticas de aumento.
- Puede consultar este artículo que compara los tres métodos en detalle.
Borrado Aleatorio (erasing)
- Rango:
0.0-0.9 - Predeterminado:
0.4 - Uso: Borra aleatoriamente porciones de la imagen durante el entrenamiento de clasificación. El
erasingel hiperparámetro define la probabilidad de aplicar la transformación, conerasing=0.9asegurando que casi todas las imágenes se borren yerasing=0.0desactivando la transformación. Por ejemplo, conerasing=0.5, cada imagen tiene un 50% de probabilidad de que se borre una porción. - Propósito: Ayuda a los modelos a aprender características robustas y evita la dependencia excesiva de regiones de imagen específicas. Por ejemplo, en los sistemas de reconocimiento facial, el borrado aleatorio ayuda a los modelos a ser más robustos a las oclusiones parciales como gafas de sol, máscaras faciales u otros objetos que podrían cubrir parcialmente los rasgos faciales. Esto mejora el rendimiento en el mundo real al obligar al modelo a identificar a las personas utilizando múltiples características faciales en lugar de depender únicamente de características distintivas que podrían estar ocultas.
- Implementación de Ultralytics: classify_augmentations()
- Nota:
- El
erasingel aumento de datos viene con unscale,ratio, yvalueHiperparámetros que no se pueden cambiar con el implementación actual. Sus valores predeterminados son(0.02, 0.33),(0.3, 3.3), y0, respectivamente, como se indica en PyTorch documentación. - El límite superior de la
erasingEl hiperparámetro está establecido en0.9para evitar aplicar la transformación a todas las imágenes.
- El
erasing apagado | erasing encendido (ejemplo 1) | erasing encendido (ejemplo 2) | erasing encendido (ejemplo 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Funciones avanzadas de aumento
Albumentaciones personalizadas Transformaciones (augmentations)
- Tipo:
listde transformaciones de Albumentaciones - Predeterminado:
None - Utilización: Permite proporcionar transformaciones de Albumentations personalizadas para el aumento de datos utilizando la API de Python . Este parámetro acepta una lista de objetos de transformación de Albumentations que se aplicarán durante el entrenamiento en lugar de las transformaciones predeterminadas de Albumentations.
- Finalidad: Proporciona un control preciso sobre las estrategias de aumento de datos aprovechando la amplia biblioteca de transformaciones de Albumentations. Esto resulta especialmente útil cuando se necesitan aumentos especializados más allá de las opciones YOLO incorporadas, como ajustes de color avanzados, inyección de ruido o transformaciones específicas de dominio.
- Aplicación deUltralytics: Albumentations
Ejemplo de documentación personalizada
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Define custom Albumentations transforms
custom_transforms = [
A.Blur(blur_limit=7, p=0.5),
A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
A.CLAHE(clip_limit=4.0, p=0.5),
A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
]
# Train with custom Albumentations transforms
model.train(
data="coco8.yaml",
epochs=100,
augmentations=custom_transforms, # Pass custom transforms
imgsz=640,
)
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Define advanced custom Albumentations transforms with specific parameters
advanced_transforms = [
A.OneOf(
[
A.MotionBlur(blur_limit=7, p=1.0),
A.MedianBlur(blur_limit=7, p=1.0),
A.GaussianBlur(blur_limit=7, p=1.0),
],
p=0.3,
),
A.OneOf(
[
A.GaussNoise(var_limit=(10.0, 50.0), p=1.0),
A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
],
p=0.2,
),
A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, brightness_by_max=True, p=0.5),
A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
A.CoarseDropout(
max_holes=8, max_height=32, max_width=32, min_holes=1, min_height=8, min_width=8, fill_value=0, p=0.2
),
]
# Train with advanced custom transforms
model.train(
data="coco8.yaml",
epochs=100,
augmentations=advanced_transforms,
imgsz=640,
)
Puntos clave:
- Sólo APIPython : Las transformaciones personalizadas de Albumentations sólo se admiten actualmente a través de la API de Python . No se pueden especificar a través de archivos de configuración CLI o YAML.
- Sustituye las transformaciones por defecto: Cuando proporcione transformaciones personalizadas a través del
augmentationssustituyen completamente a las transformaciones por defecto de Albumentations. Los aumentos por defecto de YOLO (comomosaic,hsv_h,hsv_s,degreesetc.) permanecen activas y se aplican independientemente. - Compatibilidad con Bounding Box: Tenga cuidado al utilizar transformaciones espaciales (transformaciones que cambian la geometría de la imagen). Ultralytics gestiona automáticamente los ajustes de los cuadros delimitadores, pero algunas transformaciones complejas pueden requerir una configuración adicional.
- Amplia biblioteca: Albumentations ofrece más de 70 transformaciones diferentes. Explore la documentación de Albumentations para descubrir todas las opciones disponibles.
- Consideración del rendimiento: Añadir demasiados aumentos o utilizar transformaciones costosas desde el punto de vista computacional puede ralentizar el entrenamiento. Empieza con un conjunto pequeño y controla la velocidad de entrenamiento.
Casos de uso común:
- Imágenes médicas: Aplique transformaciones especializadas como deformaciones elásticas o distorsiones de rejilla para el aumento de imágenes de rayos X o resonancia magnética.
- Imágenes aéreas/satelitales: Utiliza transformaciones optimizadas para perspectivas aéreas
- Condiciones de poca luz: Aplica ajustes de ruido y brillo para simular una iluminación complicada.
- Inspección industrial: Añada patrones con defectos o variaciones de textura para aplicaciones de control de calidad.
Notas de compatibilidad:
- Requiere Albumentations versión 1.0.3 o superior
- Compatible con todas las tareas de detección y segmentación YOLO
- No es aplicable a las tareas de clasificación (la clasificación utiliza un proceso de aumento diferente).
Para más información sobre Albumentations y las transformaciones disponibles, visite la documentación oficial de Albumentations.
Preguntas frecuentes
Hay demasiadas aumentaciones para elegir. ¿Cómo sé cuáles usar?
Elegir las aumentaciones adecuadas depende de su caso de uso y conjunto de datos específicos. Aquí hay algunas pautas generales para ayudarle a decidir:
- En la mayoría de los casos, las ligeras variaciones en el color y el brillo son beneficiosas. Los valores predeterminados para
hsv_h,hsv_s, yhsv_vson un buen punto de partida. - Si el punto de vista de la cámara es consistente y no cambiará una vez que el modelo se implemente, es probable que pueda omitir transformaciones geométricas como
rotation,translation,scale,shear, operspective. Sin embargo, si el ángulo de la cámara puede variar y necesita que el modelo sea más robusto, es mejor mantener estos aumentos. - Utilice el
mosaicaumento de datos solo si tener objetos parcialmente ocluidos o múltiples objetos por imagen es aceptable y no cambia el valor de la etiqueta. Alternativamente, puede mantenermosaicactivos pero aumentan elclose_mosaicvalor para desactivarlo antes en el proceso de entrenamiento.
En resumen: mantenlo simple. Comienza con un pequeño conjunto de aumentos y añade gradualmente más según sea necesario. El objetivo es mejorar la generalización y la robustez del modelo, no complicar demasiado el proceso de entrenamiento. Además, asegúrate de que los aumentos que apliques reflejen la misma distribución de datos que tu modelo encontrará en producción.
Cuando se inicia un entrenamiento, se ve un albumentations: Blur[...] ¿Referencia? ¿Significa eso que Ultralytics YOLO ejecuta aumentación adicional como el desenfoque?
Si el albumentations paquete está instalado, Ultralytics aplica automáticamente un conjunto de aumentos de imagen adicionales al usarlo. Estos aumentos se gestionan internamente y no requieren configuración adicional.
Puede encontrar la lista completa de transformaciones aplicadas en nuestro documentación técnica, así como en nuestro Guía de integración de Albumentations. Tenga en cuenta que solo los aumentos con una probabilidad p mayor que 0 están activas. Estas se aplican a propósito a bajas frecuencias para imitar artefactos visuales del mundo real, como efectos de desenfoque o escala de grises.
También puede proporcionar sus propias transformaciones personalizadas de Albumentations utilizando la API de Python . Consulte la sección Funciones avanzadas de aumento para obtener más detalles.
Cuando inicio un entrenamiento, no veo ninguna referencia a albumentations. ¿Por qué?
Comprueba si el albumentations paquete está instalado. Si no lo está, puede instalarlo ejecutando pip install albumentations. Una vez instalado, el paquete debe ser detectado y utilizado automáticamente por Ultralytics.
¿Cómo personalizo mis aumentos?
Puede personalizar las aumentaciones creando una clase de conjunto de datos y un entrenador personalizados. Por ejemplo, puede reemplazar las aumentaciones de clasificación predeterminadas de Ultralytics con torchvision.transforms.Resize de PyTorch u otras transformaciones. Consulte el ejemplo de entrenamiento personalizado en la documentación de clasificación para obtener detalles sobre la implementación.
















































