Link to this sectionAumento de datos usando Ultralytics YOLO#
Link to this sectionIntroducción#
El aumento de datos es una técnica crucial en visión artificial que amplía artificialmente tu conjunto de datos de entrenamiento aplicando varias transformaciones a las imágenes existentes. Al entrenar modelos de deep learning como Ultralytics YOLO, el aumento de datos ayuda a mejorar la robustez del modelo, reduce el sobreajuste y mejora la generalización en escenarios del mundo real.
Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀
Link to this sectionPor qué es importante el aumento de datos#
El aumento de datos cumple múltiples propósitos críticos en el entrenamiento de modelos de visión artificial:
- Conjunto de datos ampliado: Al crear variaciones de imágenes existentes, puedes aumentar eficazmente el tamaño de tu conjunto de datos de entrenamiento sin recopilar datos nuevos.
- Generalización mejorada: Los modelos aprenden a reconocer objetos en diversas condiciones, volviéndose 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 un aumento adecuado suelen lograr una mejor precisión en los conjuntos de validación y prueba.
La implementación de Ultralytics YOLO proporciona un conjunto completo de técnicas de aumento, cada una de las cuales cumple propósitos específicos y contribuye al rendimiento del modelo de diferentes maneras. Esta guía explorará cada parámetro de aumento en detalle, ayudándote a comprender cuándo y cómo utilizarlos eficazmente en tus proyectos.
Link to this sectionEjemplos de configuraciones#
Puedes personalizar cada parámetro mediante la API de Python, 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)Link to this sectionUso de un archivo de configuración#
Puedes definir todos los parámetros de entrenamiento, incluidos los aumentos, en un archivo de configuración YAML (por ejemplo, train_custom.yaml). El parámetro mode solo es necesario al usar la CLI. Este nuevo archivo YAML sobrescribirá el predeterminado ubicado en el paquete ultralytics.
# 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 API de Python:
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")Link to this sectionAumentos del espacio de color#
Link to this sectionAjuste de tono (hsv_h)#
- Rango:
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, y el ajuste final se elige al azar entre-hsv_hyhsv_h. Por ejemplo, conhsv_h=0.3, el desplazamiento se selecciona aleatoriamente entre-0.3y0.3. Para valores superiores a0.5, el desplazamiento de tono da la vuelta a la rueda de color, por lo que los aumentos parecen iguales entre0.5y-0.5. - Propósito: Especialmente ú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 puede verse más amarillo bajo la luz solar intensa, pero más verdoso en interiores.
- Implementación de Ultralytics: RandomHSV
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionAjuste de saturación (hsv_s)#
- Rango:
0.0-1.0 - Predeterminado:
0.7 - Uso: Modifica la intensidad de los colores en la imagen. El hiperparámetro
hsv_sdefine la magnitud del desplazamiento, con el ajuste final elegido al azar entre-hsv_syhsv_s. Por ejemplo, conhsv_s=0.7, la intensidad se selecciona aleatoriamente entre-0.7y0.7. - Propósito: Ayuda a los modelos a manejar condiciones climáticas y configuraciones de cámara variables. Por ejemplo, una señal de tráfico roja puede verse muy viva en un día soleado, pero verse apagada y desteñida en condiciones de niebla.
- Implementación de Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionAjuste de brillo (hsv_v)#
- Rango:
0.0-1.0 - Predeterminado:
0.4 - Uso: Cambia el brillo de la imagen. El hiperparámetro
hsv_vdefine la magnitud del desplazamiento, con el ajuste final elegido al azar entre-hsv_vyhsv_v. Por ejemplo, conhsv_v=0.4, la intensidad se selecciona aleatoriamente entre-0.4y0.4. - Propósito: Esencial para entrenar modelos que necesitan funcionar en diferentes condiciones de iluminación. Por ejemplo, una manzana roja puede verse brillante bajo 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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionTransformaciones geométricas#
Link to this sectionRotación (degrees)#
- Rango:
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 al azar entre-degreesydegrees. Por ejemplo, condegrees=10.0, la rotación se selecciona aleatoriamente entre-10.0y10.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, lo que requiere que los modelos reconozcan objetos independientemente de su rotación.
- Implementación de Ultralytics: RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionTraslación (translate)#
- Rango:
0.0-1.0 - Predeterminado:
0.1 - Uso: Desplaza las imágenes horizontal y verticalmente mediante una fracción aleatoria del tamaño de la imagen. El hiperparámetro
translatedefine la magnitud del desplazamiento, con el ajuste final elegido al azar dos veces (una para cada eje) dentro del rango-translateytranslate. Por ejemplo, contranslate=0.5, la traslación se selecciona aleatoriamente entre-0.5y0.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 ante la posición del objeto. Por ejemplo, en aplicaciones de evaluación de daños en vehículos, las piezas del coche pueden aparecer completa o parcialmente en el encuadre según 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.
- Implementación de Ultralytics: RandomPerspective
- Nota: Por simplicidad, las traslaciones aplicadas a continuación son las mismas cada vez para ambos ejes
xey. Los valores-1.0y1.0no se muestran, ya que trasladarían la imagen completamente fuera del encuadre.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionEscala (scale)#
- Rango:
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 al azar entre1-scaley1+scale. Por ejemplo, conscale=0.5, la escala se selecciona aleatoriamente entre0.5y1.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.
- 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 superior a1.0, la imagen puede ser muy pequeña o invertida, ya que el factor de escala se elige al azar entre1-scaley1+scale. Por ejemplo, conscale=3.0, la escala se selecciona aleatoriamente entre-2.0y4.0. Si se elige un valor negativo, la imagen se invierte.
- El valor
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionCizallamiento (shear)#
- Rango:
-180a+180 - Predeterminado:
0 - Uso: Introduce una transformación geométrica que sesga la imagen a lo largo de los ejes x e y, desplazando eficazmente partes de la imagen en una dirección mientras se mantienen las líneas paralelas. El hiperparámetro
sheardefine el ángulo de cizallamiento, con el ajuste final elegido al azar entre-shearyshear. Por ejemplo, conshear=10.0, el cizallamiento se selecciona aleatoriamente entre-10y10en 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 ante 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.
- Implementación de Ultralytics: RandomPerspective
- Nota:
- Los valores de
shearpueden distorsionar rápidamente la imagen, por lo que se recomienda empezar con valores pequeños e ir aumentándolos 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 al cambiar sus ángulos manteniendo los lados opuestos paralelos.
- Los valores de
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionPerspectiva (perspective)#
- Rango:
0.0-0.001 - Predeterminado:
0 - Uso: Aplica una transformación de perspectiva completa a lo largo de los ejes x e y, simulando cómo aparecen los objetos cuando se ven desde diferentes profundidades o ángulos. El hiperparámetro
perspectivedefine la magnitud de la perspectiva, eligiéndose el ajuste final de forma aleatoria entre-perspectiveyperspective. Por ejemplo, conperspective=0.001, la perspectiva se selecciona aleatoriamente entre-0.001y0.001en el eje x, y se selecciona otro valor aleatorio independiente dentro del mismo rango en el eje y. - Propósito: La aumentación 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 implementaciones del mundo real.
- Implementación de Ultralytics: RandomPerspective
-0.001 | -0.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionVoltear arriba-abajo (flipud)#
- Rango:
0.0-1.0 - Predeterminado:
0 - Usage: Performs a vertical flip by inverting the image along the y-axis. This transformation mirrors the entire image upside-down but preserves all spatial relationships between objects. The flipud hyperparameter defines the probability of applying the transformation, with a value of
flipud=1.0ensuring that all images are flipped and a value offlipud=0.0disabling the transformation entirely. For example, withflipud=0.5, each image has a 50% chance of being flipped upside-down. - 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 recogerse y colocarse en varias orientaciones. El volteo vertical ayuda al modelo a reconocer objetos independientemente de su posición de arriba abajo.
- Implementación de Ultralytics: RandomFlip
flipud desactivado | flipud activado |
|---|---|
![]() | ![]() |
Link to this sectionVoltear izquierda-derecha (fliplr)#
- Rango:
0.0-1.0 - Predeterminado:
0.5 - Uso: Realiza un giro 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.0garantizando 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 se utiliza ampliamente en la detección de objetos, estimación de poses y reconocimiento facial para mejorar la robustez contra variaciones de izquierda a derecha. Por ejemplo, en la conducción autónoma, los vehículos y peatones pueden aparecer a cualquier lado de la carretera, y el volteo horizontal ayuda al modelo a reconocerlos igual de bien en ambas orientaciones.
- Implementación de Ultralytics: RandomFlip
fliplr desactivado | fliplr activado |
|---|---|
![]() | ![]() |
Link to this sectionIntercambio de canales BGR (bgr)#
- Rango:
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.0garantizando 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 bibliotecas de imágenes donde los formatos RGB y BGR pueden usarse 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 desactivado | bgr activado |
|---|---|
![]() | ![]() |
Link to this sectionMosaico (mosaic)#
- Rango:
0.0-1.0 - Predeterminado:
1 - Uso: Combina cuatro imágenes de entrenamiento en una. El hiperparámetro
mosaicdefine la probabilidad de aplicar la transformación, conmosaic=1.0garantizando 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 eficaz para mejorar la detección de objetos pequeños y la comprensión del contexto. Por ejemplo, en proyectos de conservación de la vida silvestre donde los animales pueden aparecer a varias distancias y escalas, la aumentación 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 muestras de entrenamiento diversas a partir de datos limitados.
- Implementación de Ultralytics: Mosaic
- Nota:
- Incluso si la aumentación
mosaichace que el modelo sea más robusto, también puede hacer que el proceso de entrenamiento sea más desafiante. - La aumentación
mosaicse puede desactivar cerca del final del entrenamiento estableciendoclose_mosaiccon el número de épocas antes de finalizar en las que debería desactivarse. Por ejemplo, siepochsse establece en200yclose_mosaicse establece en20, la aumentaciónmosaicse desactivará después de180épocas. Siclose_mosaicse establece en0, la aumentaciónmosaicestará 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 aumentación
mosaiccombina 4 imágenes elegidas aleatoriamente 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 aumentación
mosaic desactivado | mosaic activado |
|---|---|
![]() | ![]() |
Link to this sectionMixup (mixup)#
- Rango:
0.0-1.0 - Predeterminado:
0 - Uso: Mezcla dos imágenes y sus etiquetas con una probabilidad determinada. El hiperparámetro
mixupdefine la probabilidad de aplicar la transformación, conmixup=1.0garantizando 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 mediante la mezcla de imágenes de diferentes productos, enseñándole a identificar artículos incluso cuando están parcialmente visibles u oscurecidos por otros productos en estantes de tiendas concurridos.
- Implementación de Ultralytics: Mixup
- Nota:
- La proporción de
mixupes un valor aleatorio elegido de una distribución betanp.random.beta(32.0, 32.0), lo que significa que cada imagen contribuye aproximadamente un 50%, con ligeras variaciones.
- La proporción de
Primera imagen, mixup desactivado | Segunda imagen, mixup desactivado | mixup activado |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionCutMix (cutmix)#
- Rango:
0.0-1.0 - Predeterminado:
0 - Uso: Corta una región rectangular de una imagen y la pega en otra con una probabilidad dada. El hiperparámetro
cutmixdefine la probabilidad de aplicar la transformación, concutmix=1.0garantizando que todas las imágenes se sometan a esta transformación ycutmix=0.0desactivándola por completo. Por ejemplo, concutmix=0.5, cada imagen tiene un 50% de probabilidad de que una región sea reemplazada por un parche de otra imagen. - Propósito: Mejora el rendimiento del modelo al crear 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 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 píxel globalmente,
cutmixmantiene las intensidades de píxel 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 ninguna caja delimitadora (bounding box) existente. Además, solo se conservan las cajas delimitadoras que retienen al menos
0.1(10%) de su área original dentro de la región pegada. - Este umbral de área mínima de la caja delimitadora no se puede cambiar con la implementación actual y se establece en
0.1por defecto.
Primera imagen, cutmix desactivado | Segunda imagen, cutmix desactivado | cutmix activado |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionAumentaciones específicas para segmentación#
Link to this sectionCopy-Paste (copy_paste)#
- Rango:
0.0-1.0 - Predeterminado:
0 - Uso: Solo funciona para tareas de segmentación; esta aumentación copia objetos dentro o entre imágenes según una probabilidad especificada, controlada por
copy_paste_mode. El hiperparámetrocopy_pastedefine la probabilidad de aplicar la transformación, concopy_paste=1.0garantizando 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 de copiar y pegar puede aumentar artificialmente la aparición de estos defectos raros copiándolos de una imagen a otra, ayudando al modelo a aprender mejor estos casos poco representados sin necesidad de muestras defectuosas adicionales.
- Implementación de Ultralytics: CopyPaste
- Nota:
- Como se muestra en el gif a continuación, la aumentación
copy_pastese puede usar para copiar objetos de una imagen a otra. - Una vez que se copia un objeto, independientemente del
copy_paste_mode, su intersección sobre área (IoA) se calcula 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 de destino. Si solo uno de los IoA está por encima de0.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 se establece en
0.3por defecto.
- Como se muestra en el gif a continuación, la aumentación
copy_paste desactivado | copy_paste activado con copy_paste_mode=flip | Visualiza el proceso de copy_paste |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionModo Copy-Paste (copy_paste_mode)#
- Opciones:
'flip','mixup' - Predeterminado:
'flip' - Uso: Determina el método utilizado para la aumentación de copiar y pegar. Si se establece en
'flip', los objetos provienen de la misma imagen, mientras que'mixup'permite que los objetos se copien de diferentes imágenes. - Propósito: Permite flexibilidad en cómo se integran los objetos copiados en las imágenes de destino.
- 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ígono, 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 activado con copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionAumentaciones específicas para clasificación#
Link to this sectionAuto Augment (auto_augment)#
- Opciones:
'randaugment','autoaugment','augmix',None - Predeterminado:
'randaugment' - Uso: Aplica políticas de aumento automatizadas para la clasificación. La opción
'randaugment'utiliza RandAugment,'autoaugment'utiliza AutoAugment y'augmix'utiliza AugMix. Si lo estableces enNone, se desactiva el aumento automatizado. - Propósito: Optimiza estrategias de aumento automáticamente 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. Puedes seleccionar estas políticas existentes pero no puedes 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. Referencia al artículo de AutoAugment.
- RandAugment: Aplica una selección aleatoria de transformaciones con una magnitud uniforme. Este enfoque reduce la necesidad de una fase de búsqueda extensa, lo que lo hace computacionalmente más eficiente mientras 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 variaciones de imagen diversas a través de combinaciones aleatorias de transformaciones simples. Referencia al 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.
- Puedes consultar este artículo que compara los tres métodos en detalle.
Link to this sectionBorrado Aleatorio (erasing)#
- Rango:
0.0-0.9 - Predeterminado:
0.4 - Uso: Borra aleatoriamente partes de la imagen durante el entrenamiento de clasificación. El hiperparámetro
erasingdefine la probabilidad de aplicar la transformación, conerasing=0.9asegurando que casi todas las imágenes sean borradas yerasing=0.0desactivando la transformación. Por ejemplo, conerasing=0.5, cada imagen tiene un 50% de probabilidad de que se le borre una parte. - Propósito: Ayuda a los modelos a aprender características robustas y evita la dependencia excesiva de regiones específicas de la imagen. Por ejemplo, en sistemas de reconocimiento facial, el borrado aleatorio ayuda a los modelos a ser más robustos ante 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 forzar al modelo a identificar individuos utilizando múltiples características faciales en lugar de depender únicamente de rasgos distintivos que podrían estar ocultos.
- Implementación de Ultralytics: classify_augmentations()
- Nota:
- El aumento
erasingviene con hiperparámetros descale,ratioyvalueque no pueden cambiarse con la implementación actual. Sus valores predeterminados son(0.02, 0.33),(0.3, 3.3)y0, respectivamente, como se indica en la documentación de PyTorch. - El límite superior del hiperparámetro
erasingestá fijado en0.9para evitar aplicar la transformación a todas las imágenes.
- El aumento
erasing desactivado | erasing activado (ejemplo 1) | erasing activado (ejemplo 2) | erasing activado (ejemplo 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Link to this sectionCaracterísticas de Aumento Avanzadas#
Link to this sectionTransformaciones Albumentations personalizadas (augmentations)#
- Tipo:
listde transformaciones de Albumentations - Predeterminado:
None - Uso: Te permite proporcionar transformaciones personalizadas de Albumentations para el aumento de datos usando 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 de Albumentations predeterminadas.
- Propósito: Proporciona un control preciso sobre las estrategias de aumento de datos aprovechando la extensa biblioteca de transformaciones de Albumentations. Esto es especialmente útil cuando necesitas aumentos especializados más allá de las opciones integradas de YOLO, como ajustes de color avanzados, inyección de ruido o transformaciones específicas de dominio.
- 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 completamente las transformaciones de Albumentations predeterminadas. Los aumentos predeterminados de YOLO (comomosaic,hsv_h,hsv_s,degrees, etc.) permanecen activos y se aplican de forma independiente. - Compatibilidad con cuadros delimitadores: Ten cuidado al usar transformaciones espaciales (transformaciones que cambian la geometría de la imagen). Ultralytics maneja los ajustes de los cuadros delimitadores automáticamente, pero algunas transformaciones complejas pueden requerir 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: Añadir demasiados aumentos o usar 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 comunes:
- Imágenes médicas: Aplica transformaciones especializadas como deformaciones elásticas o distorsiones de cuadrícula para el aumento de imágenes de rayos X o MRI
- Imágenes aéreas/satelitales: Usa transformaciones optimizadas para perspectivas aéreas
- Condiciones de poca luz: Aplica ajustes de ruido y brillo para simular una iluminación difícil
- 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 es aplicable para tareas de clasificación (la clasificación utiliza una canalización de aumento diferente)
Para obtener más información sobre Albumentations y las transformaciones disponibles, visita la documentación oficial de Albumentations.
Link to this sectionFAQ#
Link to this sectionHay demasiados aumentos para elegir. ¿Cómo sé cuáles usar?#
Elegir los aumentos adecuados 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 ligeras variaciones en el color y el brillo. Los valores predeterminados para
hsv_h,hsv_syhsv_vson un punto de partida sólido. - Si el punto de vista de la cámara es coherente y no cambiará una vez implementado el modelo, probablemente puedas omitir transformaciones geométricas como
rotation,translation,scale,shearoperspective. Sin embargo, si el ángulo de la cámara puede variar y necesitas que el modelo sea más robusto, es mejor mantener estos aumentos. - Usa el aumento
mosaicsolo si tener objetos parcialmente ocluidos o múltiples objetos por imagen es aceptable y no cambia el valor de la etiqueta. Alternativamente, puedes mantenermosaicactivo pero aumentar el valor declose_mosaicpara desactivarlo antes en el proceso de entrenamiento.
En resumen: mantén las cosas simples. Comienza con un conjunto pequeño de aumentos y añade gradualmente más según sea necesario. El objetivo es mejorar la generalización y robustez del modelo, no complicar innecesariamente 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.
Link to this sectionAl iniciar un entrenamiento, veo una referencia a albumentations: Blur[...]. ¿Eso significa que Ultralytics YOLO ejecuta aumentos adicionales como el desenfoque?#
Si el paquete albumentations está instalado, Ultralytics aplica automáticamente un conjunto de aumentos de imagen adicionales utilizando este paquete. Estos aumentos se manejan internamente y no requieren 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 están activos los aumentos con una probabilidad p mayor que 0. Estos se aplican intencionadamente a frecuencias bajas para imitar artefactos visuales del mundo real, como el desenfoque o efectos de escala de grises.
También puedes proporcionar tus propias transformaciones personalizadas de Albumentations utilizando la API de Python. Consulta la sección Características de Aumento Avanzadas para obtener más detalles.
Link to this sectionAl iniciar un entrenamiento, no veo ninguna referencia a albumentations. ¿Por qué?#
Comprueba si el paquete albumentations 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.
Link to this section¿Cómo personalizo mis aumentos?#
You can customize augmentations by creating a custom dataset class and trainer. For example, you can replace the default Ultralytics classification augmentations with PyTorch's torchvision.transforms.Resize or other transforms. See the custom training example in the classification documentation for implementation details.
















































