Aumento de datos usando Ultralytics YOLO
Introducción
Las técnicas de es una técnica crucial en visión artificial que expande artificialmente tu conjunto de datos de entrenamiento aplicando varias transformaciones a las imágenes existentes. Al entrenar deep learning modelos como Ultralytics YOLO, el aumento de datos ayuda a mejorar la robustez del modelo, reduce el sobreajuste y mejora la generalización a escenarios del mundo real.
Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀
Por qué es importante el aumento de datos
El aumento de datos cumple múltiples propósitos críticos al entrenar modelos de visión artificial:
- Conjunto de datos expandido: Al crear variaciones de las imágenes existentes, puedes aumentar efectivamente el tamaño de tu conjunto de datos de entrenamiento sin recopilar nuevos datos.
- Generalización mejorada: Los modelos aprenden a reconocer objetos bajo diversas condiciones, haciéndolos 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 las imágenes.
- Rendimiento mejorado: Los modelos entrenados con el aumento adecuado generalmente logran un mejor precisión en conjuntos de validación y prueba.
La implementación de Ultralytics YOLO proporciona un conjunto integral de técnicas de aumento, cada una cumpliendo propósitos específicos y contribuyendo al rendimiento del modelo de diferentes maneras. Esta guía explorará cada parámetro de aumento en detalle, ayudándote a entender cuándo y cómo usarlos de manera efectiva en tus proyectos.
Configuraciones de ejemplo
Puedes personalizar cada parámetro usando la Python API, la interfaz de línea de comandos (CLI) o un archivo de configuración. A continuación, verás ejemplos de cómo configurar el aumento de datos en cada método.
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.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)Usando un archivo de configuración
Puedes definir todos los parámetros de entrenamiento, incluyendo los aumentos, en un archivo de configuración YAML (p. ej., train_custom.yaml). El parámetro mode solo es necesario al usar la CLI. Este nuevo archivo YAML sobrescribirá el predeterminado ubicado en el ultralytics paquete.
# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo26n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5Luego inicia el entrenamiento con la Python API:
from ultralytics import YOLO
# Load a COCO-pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Train the model with custom configuration
model.train(cfg="train_custom.yaml")Aumentos de espacio de color
Ajuste de tono (hsv_h)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
0.015 - Uso: Desplaza los colores de la imagen preservando sus relaciones. El hiperparámetro
hsv_hdefine 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.3a0.3. Para valores por encima de0.5, el desplazamiento de tono envuelve la rueda de colores, es por eso que los aumentos se ven igual 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 del objeto. Por ejemplo, un plátano podría verse más amarillo bajo la luz del sol brillante pero más verdoso en interiores.
- La implementación de Ultralytics: RandomHSV
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ajuste de saturación (hsv_s)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
0.7 - Uso: Modifica la intensidad de los colores en la imagen. El
hsv_sdefine 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.7a0.7. - Propósito: Ayuda a los modelos a manejar condiciones climáticas cambiantes y configuraciones de cámara. Por ejemplo, una señal de tráfico roja podría parecer muy vívida en un día soleado pero verse apagada y desteñida en condiciones de niebla.
- La implementación de Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ajuste de brillo (hsv_v)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
0.4 - Uso: Cambia el brillo de la imagen. El
hsv_vdefine 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.4a0.4. - Propósito: Esencial para entrenar modelos que necesitan desempeñarse en diferentes condiciones de iluminación. Por ejemplo, una manzana roja podría verse brillante bajo la luz del sol pero mucho más oscura en la sombra.
- La implementación de Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Transformaciones geométricas
Rotación (degrees)
- Tareas Soportadas:
0.0a180 - Predeterminado:
0 - Uso: Rota las imágenes aleatoriamente dentro del rango especificado. El hiperparámetro
degreesdefine 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.0a10.0. - Propósito: Crucial para aplicaciones donde los objetos pueden aparecer en diferentes orientaciones. Por ejemplo, en imágenes de drones aéreos, los vehículos pueden estar orientados en cualquier dirección, requiriendo que los modelos reconozcan objetos independientemente de su rotación.
- La implementación de Ultralytics: RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Traslación (translate)
- Tareas Soportadas:
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 hiperparámetro
translatedefine 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.5a0.5en el eje x, y se selecciona otro valor aleatorio independiente dentro del mismo rango en el eje y. - Propósito: Ayuda a los modelos a aprender a detectar objetos parcialmente visibles y mejora la robustez respecto a la posición del objeto. Por ejemplo, en aplicaciones de evaluación de daños en vehículos, las partes del coche pueden aparecer completa o parcialmente en el encuadre dependiendo de la posición y distancia del fotógrafo; el aumento de traslación enseñará al modelo a reconocer estas características independientemente de su integridad o posición.
- La implementación de Ultralytics: RandomPerspective
- Nota: Para simplificar, las traslaciones aplicadas a continuación son las mismas cada vez para ambos
xyyejes. Los 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)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
0.5 - Uso: Cambia el tamaño de las imágenes mediante un factor aleatorio dentro del rango especificado. El hiperparámetro
scaledefine el factor de escala, con el ajuste final elegido aleatoriamente entre1-scaley1+scale. Por ejemplo, conscale=0.5, la escala se selecciona aleatoriamente dentro de0.5a1.5. - Propósito: Permite a los modelos manejar 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.
- La 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 a continuación son los aplicados 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 invertida, ya que el factor de escala se elige aleatoriamente entre1-scaley1+scale. Por ejemplo, conscale=3.0, la escala se selecciona aleatoriamente dentro de-2.0a4.0. Si se elige un valor negativo, la imagen se invierte.
- El valor
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Cizallamiento (Shear) (shear)
- Tareas Soportadas:
-180a+180 - Predeterminado:
0 - Uso: Introduce una transformación geométrica que sesga la imagen tanto a lo largo del eje x como del eje y, desplazando efectivamente partes de la imagen en una dirección mientras se mantienen líneas paralelas. El hiperparámetro
sheardefine el ángulo de cizallamiento, con el ajuste final elegido aleatoriamente entre-shearyshear. Por ejemplo, conshear=10.0, el cizallamiento se selecciona aleatoriamente dentro de-10a10en el eje x, y se selecciona otro valor aleatorio independiente dentro del mismo rango en el eje y. - Propósito: Ayuda a los modelos a generalizar a variaciones en los ángulos de visión causadas por ligeras inclinaciones o puntos de vista oblicuos. Por ejemplo, en el control de tráfico, objetos como coches y señales de tráfico pueden aparecer inclinados debido a colocaciones de cámara no perpendiculares. Aplicar el aumento de cizallamiento asegura que el modelo aprenda a reconocer objetos a pesar de tales distorsiones sesgadas.
- La implementación de Ultralytics: RandomPerspective
- Nota:
shearlos valores pueden distorsionar rápidamente la imagen, por lo que se recomienda empezar con valores pequeños e incrementarlos 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 los lados opuestos paralelos.
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Perspectiva (perspective)
- Tareas Soportadas:
0.0-0.001 - Predeterminado:
0 - Uso: Aplica una transformación de perspectiva completa tanto a lo largo del eje x como del eje y, simulando cómo aparecen los objetos cuando se ven desde diferentes profundidades o ángulos. El hiperparámetro
perspectivedefine 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.001a0.001en el eje x, y se selecciona otro valor aleatorio independiente dentro del mismo rango en el eje y. - Propósito: El aumento de perspectiva es crucial para manejar cambios extremos de punto de vista, especialmente en escenarios donde los objetos aparecen acortados o distorsionados debido a cambios de perspectiva. Por ejemplo, en la detección de objetos basada en drones, los edificios, carreteras y vehículos pueden aparecer estirados o comprimidos dependiendo de la inclinación y altitud del dron. Al aplicar transformaciones de perspectiva, los modelos aprenden a reconocer objetos a pesar de estas distorsiones inducidas por la perspectiva, mejorando su robustez en despliegues del mundo real.
- La implementación de Ultralytics: RandomPerspective
-0.001 | -0.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Voltear arriba-abajo (flipud)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
0 - Uso: Realiza un volteo vertical invirtiendo la imagen a lo largo del eje y. Esta transformación refleja toda la imagen boca abajo pero preserva 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 ser volteada boca abajo. - Propósito: Útil para escenarios donde los objetos pueden aparecer boca abajo. 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.
- La implementación de Ultralytics: RandomFlip
flipud apagado | flipud encendido |
|---|---|
![]() | ![]() |
Voltear izquierda-derecha (fliplr)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
0.5 - Uso: Realiza un volteo horizontal reflejando la imagen a lo largo del eje x. Esta transformación intercambia los lados izquierdo y derecho mientras mantiene la consistencia espacial, lo que ayuda al modelo a generalizar a objetos que aparecen en orientaciones reflejadas. El hiperparámetro
fliplrdefine 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 ser volteada de izquierda a derecha. - Propósito: El volteo horizontal es ampliamente utilizado en la detección de objetos, estimación de pose y reconocimiento facial para mejorar la robustez contra variaciones izquierda-derecha. Por ejemplo, en la conducción autónoma, vehículos y peatones pueden aparecer en cualquier lado de la carretera, y el volteo horizontal ayuda al modelo a reconocerlos igualmente bien en ambas orientaciones.
- La implementación de Ultralytics: RandomFlip
fliplr apagado | fliplr encendido |
|---|---|
![]() | ![]() |
Intercambio de canales BGR (bgr)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
0 - Uso: Intercambia los canales de color de una imagen de RGB a BGR, alterando el orden en el que se representan los colores. El hiperparámetro
bgrdefine 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 ante diferentes ordenamientos de canales de color. Por ejemplo, al entrenar modelos que deben funcionar en varios sistemas de cámaras y librerías de procesamiento de imágenes donde los formatos RGB y BGR pueden utilizarse de forma inconsistente, o al desplegar modelos en entornos donde el formato de color de entrada pueda diferir del de los datos de entrenamiento.
- La implementación de Ultralytics: Formato
bgr apagado | bgr encendido |
|---|---|
![]() | ![]() |
Mosaic (mosaic)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
1 - Uso: Combina cuatro imágenes de entrenamiento en una. La
mosaicdefine 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: Altamente efectiva para mejorar la detección de objetos pequeños y la comprensión del contexto. Por ejemplo, en proyectos de conservación de fauna donde los animales pueden aparecer a diversas distancias y escalas, la aumentación Mosaic ayuda al modelo a aprender a reconocer la misma especie a través de diferentes tamaños, oclusiones parciales y contextos ambientales creando artificialmente muestras de entrenamiento diversas a partir de datos limitados.
- La implementación de Ultralytics: Mosaic
- Nota:
- Incluso si la
mosaicaumentación hace que el modelo sea más robusto, también puede hacer que el proceso de entrenamiento sea más desafiante. - El método
mosaicaumentación se puede desactivar cerca del final del entrenamiento configurandoclose_mosaical número de épocas antes de finalizar en las que debe desactivarse. Por ejemplo, siepochsse establece en200yclose_mosaicse establece en20, lamosaicaumentación se desactivará después de180épocas. Siclose_mosaicse establece en0, lamosaicaumentación estará habilitada durante todo el proceso de entrenamiento. - El centro del mosaico generado se determina usando valores aleatorios y puede estar dentro o fuera de la imagen.
- La implementación actual de la
mosaicaumentación combina 4 imágenes elegidas al azar del conjunto de datos. Si el conjunto de datos es pequeño, la misma imagen puede usarse varias veces en el mismo mosaico.
- Incluso si la
mosaic apagado | mosaic encendido |
|---|---|
![]() | ![]() |
Mixup (mixup)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
0 - Uso: Mezcla dos imágenes y sus etiquetas con una probabilidad dada. La
mixupdefine 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 ser mezclada con otra imagen. - Propósito: Mejora la robustez del modelo y reduce el sobreajuste. Por ejemplo, en 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 artículos incluso cuando están parcialmente visibles u ocultos por otros productos en estantes de tiendas concurridos.
- La implementación de Ultralytics: Mixup
- Nota:
- El método
mixupla proporción es un valor aleatorio elegido de unanp.random.beta(32.0, 32.0)distribución beta, lo que significa que cada imagen contribuye aproximadamente al 50%, con ligeras variaciones.
- El método
Primera imagen, mixup apagado | Segunda imagen, mixup apagado | mixup encendido |
|---|---|---|
![]() | ![]() | ![]() |
CutMix (cutmix)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
0 - Uso: Recorta una región rectangular de una imagen y la pega sobre otra imagen con una probabilidad dada. La
cutmixdefine la probabilidad de aplicar la transformación, concutmix=1.0asegurando que todas las imágenes se sometan a esta transformación ycutmix=0.0desactivándola completamente. Por ejemplo, concutmix=0.5, cada imagen tiene un 50% de probabilidad de tener una región reemplazada con un parche de otra imagen. - Propósito: Mejora el rendimiento del modelo creando escenarios de oclusión realistas mientras mantiene la integridad de las características locales. Por ejemplo, en 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, mejorando la precisión de la detección en entornos complejos del mundo real con objetos superpuestos.
- La implementación de Ultralytics: CutMix
- Nota:
- El tamaño y la posición de la región recortada 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 recortadas, preservando las características locales. - Una región se pega en la imagen objetivo solo si no se superpone con ninguna BBox existente. Además, solo se conservan las BBox que retienen al menos
0.1(10%) de su área original dentro de la región pegada. - Este umbral mínimo de área de BBox no se puede cambiar con la implementación actual y se establece en
0.1por defecto.
Primera imagen, cutmix apagado | Segunda imagen, cutmix apagado | cutmix encendido |
|---|---|---|
![]() | ![]() | ![]() |
Aumentaciones específicas para segmentación
Copy-Paste (copy_paste)
- Tareas Soportadas:
0.0-1.0 - Predeterminado:
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 la
copy_paste_mode. Lacopy_pastedefine 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 tener objetos copiados de otra imagen. - Propósito: Particularmente útil para tareas de segmentación de instancias y clases de objetos raros. Por ejemplo, en la detección de defectos industriales donde ciertos tipos de defectos aparecen con poca frecuencia, la aumentación copy-paste puede aumentar artificialmente la ocurrencia de estos defectos raros copiándolos de una imagen a otra, ayudando al modelo a aprender mejor estos casos infrarrepresentados sin requerir muestras defectuosas adicionales.
- La implementación de Ultralytics: CopyPaste
- Nota:
- Como se muestra en el gif a continuación, la
copy_pasteaumentación se puede usar para copiar objetos de una imagen a otra. - Una vez que se copia un objeto, independientemente de la
copy_paste_mode, se calcula su IoA con todos los objetos de la imagen fuente. Si todos los IoA están por debajo de0.3(30%), el objeto se pega en la imagen objetivo. Si solo uno de los IoA está por encima de0.3, el objeto no se pega en la imagen objetivo. - 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, la
copy_paste apagado | copy_paste con copy_paste_mode=flip | Visualiza el copy_paste proceso |
|---|---|---|
![]() | ![]() | ![]() |
Modo Copy-Paste (copy_paste_mode)
- Opciones:
'flip','mixup' - Predeterminado:
'flip' - Uso: Determina el método utilizado para copy-paste aumentación. 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 cómo se integran los objetos copiados en las imágenes objetivo.
- La implementación de Ultralytics: CopyPaste
- Nota:
- El principio de 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 de IoA es el mismo para ambos
| Imagen de referencia | Imagen elegida para copy_paste | copy_paste con copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Aumentaciones específicas para clasificación
Auto Augment (auto_augment)
- Opciones:
'randaugment','autoaugment','augmix',None - Predeterminado:
'randaugment' - Uso: Aplica políticas de aumentación automatizadas para clasificación. La
'randaugment'opción usa RandAugment,'autoaugment'usa AutoAugment y'augmix'usa AugMix. Establecer enNonedesactiva la aumentación automatizada. - 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 aumentación predefinidas aprendidas de conjuntos de datos como ImageNet, CIFAR10 y SVHN. Los usuarios pueden seleccionar estas políticas existentes pero no pueden entrenar otras nuevas dentro de Torchvision. Para descubrir estrategias de aumentación óptimas para conjuntos de datos específicos, serían necesarias librerías externas o implementaciones personalizadas. Referencia al 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 extensa, haciéndolo más eficiente desde el punto de vista computacional mientras sigue mejorando la robustez del modelo. Referencia al artículo de RandAugment.
- AugMix: AugMix es un método de aumentación de datos que mejora la robustez del modelo creando diversas variaciones de imagen mediante combinaciones aleatorias de transformaciones simples. Referencia al artículo de AugMix.
- La implementación de Ultralytics: classify_augmentations()
- Nota:
- Esencialmente, la diferencia principal entre los tres métodos es la forma en que se definen y aplican las políticas de aumentación.
- Puedes consultar este artículo que compara los tres métodos en detalle.
Random Erasing (erasing)
- Tareas Soportadas:
0.0-0.9 - Predeterminado:
0.4 - Uso: Borra aleatoriamente partes de la imagen durante el entrenamiento de clasificación. La
erasingdefine 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 una parte sea borrada. - Propósito: Ayuda a los modelos a aprender características robustas y evita una dependencia excesiva de regiones específicas de la imagen. Por ejemplo, en los sistemas de reconocimiento facial, el borrado aleatorio ayuda a que los modelos sean más robustos frente a oclusiones parciales como gafas de sol, mascarillas 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 los individuos usando múltiples características faciales en lugar de depender únicamente de rasgos distintivos que podrían estar ocultos.
- La implementación de Ultralytics: classify_augmentations()
- Nota:
- El método
erasingla aumentación viene con unscale,ratio, yvaluehiperparámetros que no se pueden cambiar con la implementación actual. Sus valores predeterminados son(0.02, 0.33),(0.3, 3.3), y0, respectivamente, tal como se indica en PyTorch documentación. - El límite superior del
erasinghiperparámetro se establece en0.9para evitar aplicar la transformación a todas las imágenes.
- El método
erasing apagado | erasing en (ejemplo 1) | erasing en (ejemplo 2) | erasing en (ejemplo 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Características avanzadas de aumentación
Transformaciones personalizadas de Albumentations (augmentations)
- Tipo:
listde transformaciones de Albumentations - Predeterminado:
None - Uso: Te permite proporcionar transformaciones personalizadas de Albumentations para la aumentación 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.
- Propósito: Proporciona un control detallado sobre las estrategias de aumentación de datos al aprovechar la extensa biblioteca de transformaciones de Albumentations. Esto es particularmente útil cuando necesitas aumentaciones especializadas más allá de las opciones integradas de YOLO, como ajustes de color avanzados, inyección de ruido o transformaciones específicas del dominio.
- La implementación de Ultralytics: Albumentations
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.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,
)Puntos clave:
- Solo API de Python: Las transformaciones personalizadas de Albumentations actualmente solo son compatibles a través de la API de Python. No se pueden especificar mediante la CLI o archivos de configuración YAML.
- Reemplaza las transformaciones predeterminadas: Cuando proporcionas transformaciones personalizadas a través del parámetro
augmentations, estas reemplazan por completo las transformaciones predeterminadas de Albumentations. Las aumentaciones predeterminadas de YOLO (comomosaic,hsv_h,hsv_s,degrees, etc.) permanecen activas y se aplican de forma independiente. - Compatibilidad con BBox: Ten cuidado al usar transformaciones espaciales (transformaciones que cambian la geometría de la imagen). Ultralytics gestiona los ajustes de los cuadros delimitadores automáticamente, pero algunas transformaciones complejas pueden requerir una configuración adicional.
- Biblioteca extensa: Albumentations ofrece más de 70 transformaciones diferentes. Explora la documentación de Albumentations para descubrir todas las opciones disponibles.
- Consideración de rendimiento: Agregar demasiadas aumentaciones o usar transformaciones computacionalmente costosas puede ralentizar el entrenamiento. Empieza con un conjunto pequeño y monitoriza la velocidad de entrenamiento.
Casos de uso comunes:
- Imágenes médicas: Aplica transformaciones especializadas como deformaciones elásticas o distorsiones de cuadrícula para la aumentación de imágenes de rayos X o MRI
- Imágenes aéreas/satelitales: Usa transformaciones optimizadas para perspectivas cenitales
- Condiciones de poca luz: Aplica ajustes de ruido y brillo para simular condiciones de iluminación desafiantes
- Inspección industrial: Añade patrones similares a defectos o variaciones de textura para aplicaciones de control de calidad
Notas de compatibilidad:
- Requiere la versión 1.0.3 o superior de Albumentations
- Compatible con todas las tareas de detección y segmentación de YOLO
- No aplicable para tareas de clasificación (la clasificación utiliza un proceso de aumentación diferente)
Para obtener más información sobre Albumentations y las transformaciones disponibles, visita 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 tu caso de uso específico y de tu conjunto de datos. Aquí tienes algunas pautas generales para ayudarte a decidir:
- En la mayoría de los casos, son beneficiosas las variaciones leves en color y brillo. 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 esté desplegado, probablemente puedas omitir las transformaciones geométricas como
rotation,translation,scale,shear, operspective. Sin embargo, si el ángulo de la cámara puede variar y necesitas que el modelo sea más robusto, es mejor mantener estas aumentaciones. - Usa el comando
mosaicsolo la aumentación si es aceptable tener objetos parcialmente ocluidos o múltiples objetos por imagen y esto no cambia el valor de la etiqueta. Alternativamente, puedes mantenermosaicactiva, pero aumenta elclose_mosaicvalor para desactivarla antes en el proceso de entrenamiento.
En resumen: mantén las cosas simples. Comienza con un conjunto pequeño de aumentaciones y añade más gradualmente 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 las aumentaciones que apliques reflejen la misma distribución de datos que encontrará tu modelo en producción.
Al comenzar un entrenamiento, veo una referencia a albumentations: Blur[...]. ¿Significa eso que Ultralytics YOLO ejecuta aumentación adicional como desenfoque?
Si el albumentations paquete está instalado, Ultralytics aplica automáticamente un conjunto de aumentaciones de imagen adicionales usándolo. Estas aumentaciones se gestionan internamente y no requieren ninguna configuración adicional.
Puedes encontrar la lista completa de transformaciones aplicadas en nuestra documentación técnica, así como en nuestra guía de integración de Albumentations. Ten en cuenta que solo las aumentaciones con una probabilidad p mayor que 0 están activas. Estas se aplican deliberadamente a bajas frecuencias para imitar artefactos visuales del mundo real, como efectos de desenfoque o escala de grises.
También puedes proporcionar tus propias transformaciones personalizadas de Albumentations usando la API de Python. Consulta la Características avanzadas de aumentación para más detalles.
Al comenzar un entrenamiento, no veo ninguna referencia a albumentations. ¿Por qué?
Comprueba si el albumentations paquete está instalado. Si no es así, puedes instalarlo ejecutando pip install albumentations. Una vez instalado, el paquete debería ser detectado y utilizado automáticamente por Ultralytics.
¿Cómo personalizo mis aumentaciones?
Puedes personalizar las aumentaciones creando una clase de conjunto de datos y un entrenador personalizados. Por ejemplo, puedes reemplazar las aumentaciones de clasificación predeterminadas de Ultralytics con torchvision.transforms.Resize de PyTorch u otras transformaciones. Consulta el ejemplo de entrenamiento personalizado en la documentación de clasificación para obtener detalles sobre la implementación.
















































