Meet YOLO26: next-gen vision AI.

Link to this sectionAumento de dados usando Ultralytics YOLO#

YOLO data augmentation examples showing original and augmented images for training

Link to this sectionIntrodução#

Aumento de dados é uma técnica crucial em visão computacional que expande artificialmente o teu conjunto de dados de treino ao aplicar várias transformações a imagens existentes. Ao treinar modelos de deep learning como o Ultralytics YOLO, o aumento de dados ajuda a melhorar a robustez do modelo, reduz o overfitting e melhora a generalização para cenários do mundo real.



Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀

Link to this sectionPorque é que o Aumento de Dados é Importante#

O aumento de dados serve vários propósitos críticos no treino de modelos de visão computacional:

  • Conjunto de Dados Expandido: Ao criar variações de imagens existentes, podes aumentar eficazmente o tamanho do teu conjunto de dados de treino sem recolher novos dados.
  • Generalização Melhorada: Os modelos aprendem a reconhecer objetos sob várias condições, tornando-se mais robustos em aplicações do mundo real.
  • Overfitting Reduzido: Ao introduzir variabilidade nos dados de treino, os modelos têm menos probabilidade de memorizar características específicas das imagens.
  • Desempenho Aprimorado: Modelos treinados com o aumento adequado normalmente alcançam melhor precisão em conjuntos de validação e teste.

A implementação do Ultralytics YOLO oferece um conjunto abrangente de técnicas de aumento, cada uma servindo propósitos específicos e contribuindo para o desempenho do modelo de formas diferentes. Este guia explorará cada parâmetro de aumento detalhadamente, ajudando-te a entender quando e como usá-los eficazmente nos teus projetos.

Link to this sectionConfigurações de Exemplo#

Podes personalizar cada parâmetro usando a API Python, a interface de linha de comando (CLI) ou um ficheiro de configuração. Abaixo estão exemplos de como configurar o aumento de dados em cada método.

Exemplos de Configuração
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 sectionUsando um ficheiro de configuração#

Podes definir todos os parâmetros de treino, incluindo aumentos, num ficheiro de configuração YAML (por exemplo, train_custom.yaml). O parâmetro mode só é necessário ao usar a CLI. Este novo ficheiro YAML substituirá o predefinido localizado no pacote 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.5

Depois, inicia o treino com a API Python:

Exemplo de Treinamento
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 de Espaço de Cor#

Link to this sectionAjuste de Matiz (hsv_h)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 0.015
  • Uso: Desloca as cores da imagem mantendo as suas relações. O hiperparâmetro hsv_h define a magnitude do deslocamento, com o ajuste final escolhido aleatoriamente entre -hsv_h e hsv_h. Por exemplo, com hsv_h=0.3, o deslocamento é selecionado aleatoriamente entre -0.3 e 0.3. Para valores acima de 0.5, o deslocamento de matiz contorna a roda de cores, e é por isso que os aumentos parecem os mesmos entre 0.5 e -0.5.
  • Propósito: Particularmente útil para cenários ao ar livre onde as condições de iluminação podem afetar drasticamente a aparência dos objetos. Por exemplo, uma banana pode parecer mais amarela sob luz solar intensa, mas mais esverdeada em ambientes fechados.
  • Implementação do Ultralytics: RandomHSV
-0.5-0.250.00.250.5
Aumento de deslocamento de matiz -0.5Aumento de deslocamento de matiz -0.25Imagem original sem aumentoAumento de deslocamento de matiz 0.25Aumento de deslocamento de matiz -0.5

Link to this sectionAjuste de Saturação (hsv_s)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 0.7
  • Uso: Modifica a intensidade das cores na imagem. O hiperparâmetro hsv_s define a magnitude do deslocamento, com o ajuste final escolhido aleatoriamente entre -hsv_s e hsv_s. Por exemplo, com hsv_s=0.7, a intensidade é selecionada aleatoriamente entre -0.7 e 0.7.
  • Propósito: Ajuda os modelos a lidar com condições meteorológicas variáveis e definições de câmara. Por exemplo, um sinal de trânsito vermelho pode parecer muito vívido num dia de sol, mas parecer baço e desbotado em condições de nevoeiro.
  • Implementação do Ultralytics: RandomHSV
-1.0-0.50.00.51.0
Aumento de saturação -1.0 em escala de cinzentosAumento de saturação -0.5Imagem original sem aumentoAumento de saturação 0.5Aumento de saturação 1.0 vívida

Link to this sectionAjuste de Brilho (hsv_v)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 0.4
  • Uso: Altera o brilho da imagem. O hiperparâmetro hsv_v define a magnitude do deslocamento, com o ajuste final escolhido aleatoriamente entre -hsv_v e hsv_v. Por exemplo, com hsv_v=0.4, a intensidade é selecionada aleatoriamente entre -0.4 e 0.4.
  • Propósito: Essencial para treinar modelos que precisam de funcionar em diferentes condições de iluminação. Por exemplo, uma maçã vermelha pode parecer brilhante à luz do sol, mas muito mais escura na sombra.
  • Implementação do Ultralytics: RandomHSV
-1.0-0.50.00.51.0
Aumento de brilho -1.0 escuroAumento de brilho -0.5Imagem original sem aumentoAumento de brilho 0.5Aumento de brilho 1.0 brilhante

Link to this sectionTransformações Geométricas#

Link to this sectionRotação (degrees)#

  • Intervalo: 0.0 a 180
  • Predefinição: 0
  • Uso: Roda as imagens aleatoriamente dentro do intervalo especificado. O hiperparâmetro degrees define o ângulo de rotação, com o ajuste final escolhido aleatoriamente entre -degrees e degrees. Por exemplo, com degrees=10.0, a rotação é selecionada aleatoriamente entre -10.0 e 10.0.
  • Propósito: Crucial para aplicações onde os objetos podem aparecer em diferentes orientações. Por exemplo, em imagens de drones aéreos, os veículos podem estar orientados em qualquer direção, exigindo que os modelos reconheçam os objetos independentemente da sua rotação.
  • Implementação do Ultralytics: RandomPerspective
-180-900.090180
Aumento de rotação -180 grausAumento de rotação -90 grausImagem original sem aumentoAumento de rotação 90 grausAumento de rotação 180 graus

Link to this sectionTranslação (translate)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 0.1
  • Uso: Desloca as imagens horizontal e verticalmente por uma fração aleatória do tamanho da imagem. O hiperparâmetro translate define a magnitude do deslocamento, com o ajuste final escolhido aleatoriamente duas vezes (uma para cada eixo) dentro do intervalo -translate a translate. Por exemplo, com translate=0.5, a translação é selecionada aleatoriamente entre -0.5 e 0.5 no eixo x, e outro valor aleatório independente é selecionado no mesmo intervalo no eixo y.
  • Propósito: Ajuda os modelos a aprender a detetar objetos parcialmente visíveis e melhora a robustez em relação à posição do objeto. Por exemplo, em aplicações de avaliação de danos em veículos, peças de automóveis podem aparecer total ou parcialmente no enquadramento, dependendo da posição e distância do fotógrafo; o aumento de translação ensinará o modelo a reconhecer estas características independentemente da sua completude ou posição.
  • Implementação do Ultralytics: RandomPerspective
  • Nota: Para simplificar, as translações aplicadas abaixo são as mesmas sempre para ambos os eixos x e y. Os valores -1.0 e 1.0 não são mostrados, pois traduziriam a imagem completamente para fora do enquadramento.
-0.5-0.250.00.250.5
Aumento de deslocamento de translação -0.5Aumento de deslocamento de translação -0.25Imagem original sem aumentoAumento de deslocamento de translação 0.25Aumento de deslocamento de translação 0.5

Link to this sectionEscala (scale)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 0.5
  • Uso: Redimensiona as imagens por um fator aleatório dentro do intervalo especificado. O hiperparâmetro scale define o fator de escala, com o ajuste final escolhido aleatoriamente entre 1-scale e 1+scale. Por exemplo, com scale=0.5, a escala é selecionada aleatoriamente entre 0.5 e 1.5.
  • Propósito: Permite aos modelos lidar com objetos a diferentes distâncias e tamanhos. Por exemplo, em aplicações de condução autónoma, os veículos podem aparecer a várias distâncias da câmara, exigindo que o modelo os reconheça independentemente do seu tamanho.
  • Implementação do Ultralytics: RandomPerspective
  • Nota:
    • O valor -1.0 não é mostrado pois faria a imagem desaparecer, enquanto 1.0 resulta simplesmente num zoom de 2x.
    • Os valores exibidos na tabela abaixo são aqueles aplicados através do hiperparâmetro scale, não o fator de escala final.
    • Se scale for maior que 1.0, a imagem pode ficar muito pequena ou invertida, uma vez que o fator de escala é escolhido aleatoriamente entre 1-scale e 1+scale. Por exemplo, com scale=3.0, a escala é selecionada aleatoriamente entre -2.0 e 4.0. Se for escolhido um valor negativo, a imagem é invertida.
-0.5-0.250.00.250.5
Aumento de zoom out de escala 0.5xAumento de zoom out de escala 0.75xImagem original sem aumentoAumento de zoom in de escala 1.25xAumento de zoom in de escala 1.5x

Link to this sectionCisalhamento (shear)#

  • Intervalo: -180 a +180
  • Predefinição: 0
  • Uso: Introduz uma transformação geométrica que distorce a imagem ao longo dos eixos x e y, deslocando eficazmente partes da imagem numa direção enquanto mantém as linhas paralelas. O hiperparâmetro shear define o ângulo de cisalhamento, com o ajuste final escolhido aleatoriamente entre -shear e shear. Por exemplo, com shear=10.0, o cisalhamento é selecionado aleatoriamente entre -10 e 10 no eixo x, e outro valor aleatório independente é selecionado no mesmo intervalo no eixo y.
  • Propósito: Ajuda os modelos a generalizar para variações nos ângulos de visão causadas por ligeiras inclinações ou pontos de vista oblíquos. Por exemplo, na monitorização de tráfego, objetos como carros e sinais de trânsito podem parecer inclinados devido a colocações de câmara não perpendiculares. Aplicar o aumento de cisalhamento garante que o modelo aprende a reconhecer objetos apesar dessas distorções.
  • Implementação do Ultralytics: RandomPerspective
  • Nota:
    • Os valores de shear podem distorcer rapidamente a imagem, por isso recomenda-se começar com valores pequenos e aumentá-los gradualmente.
    • Ao contrário das transformações de perspetiva, o cisalhamento não introduz profundidade ou pontos de fuga, mas distorce a forma dos objetos ao alterar os seus ângulos, mantendo os lados opostos paralelos.
-10-50.0510
Aumento de cisalhamento de -10 grausAumento de cisalhamento de -5 grausImagem original sem aumentoAumento de cisalhamento de 5 grausAumento de cisalhamento de 10 graus

Link to this sectionPerspectiva (perspective)#

  • Intervalo: 0.0 - 0.001
  • Predefinição: 0
  • Utilização: Aplica uma transformação de perspectiva completa ao longo dos eixos x e y, simulando como os objetos aparecem quando vistos de diferentes profundidades ou ângulos. O hiperparâmetro perspective define a magnitude da perspectiva, com o ajuste final escolhido aleatoriamente entre -perspective e perspective. Por exemplo, com perspective=0.001, a perspectiva é selecionada aleatoriamente dentro de -0.001 a 0.001 no eixo x, e outro valor aleatório independente é selecionado dentro da mesma faixa no eixo y.
  • Objetivo: A aumentação de perspectiva é crucial para lidar com mudanças extremas de ponto de vista, especialmente em cenários onde os objetos parecem encurtados ou distorcidos devido a mudanças de perspectiva. Por exemplo, em detecção de objetos baseada em drones, edifícios, estradas e veículos podem parecer esticados ou comprimidos dependendo da inclinação e altitude do drone. Ao aplicar transformações de perspectiva, os modelos aprendem a reconhecer objetos apesar dessas distorções induzidas pela perspectiva, melhorando sua robustez em implementações no mundo real.
  • Implementação do Ultralytics: RandomPerspective
-0.001-0.00050.00.00050.001
Transformação de perspectiva -0.001Transformação de perspectiva -0.0005Imagem original sem aumentoTransformação de perspectiva 0.0005Transformação de perspectiva 0.001

Link to this sectionInversão Vertical (flipud)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 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.0 ensuring that all images are flipped and a value of flipud=0.0 disabling the transformation entirely. For example, with flipud=0.5, each image has a 50% chance of being flipped upside-down.
  • Objetivo: Útil para cenários onde os objetos podem aparecer de cabeça para baixo. Por exemplo, em sistemas de visão robótica, objetos em esteiras transportadoras ou braços robóticos podem ser coletados e colocados em várias orientações. A inversão vertical ajuda o modelo a reconhecer objetos independentemente do seu posicionamento vertical.
  • Implementação da Ultralytics: RandomFlip
flipud desligadoflipud ligado
Imagem original sem aumentaçãoAumentação de inversão vertical ativada

Link to this sectionInversão Horizontal (fliplr)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 0.5
  • Utilização: Realiza uma inversão horizontal espelhando a imagem ao longo do eixo x. Esta transformação troca os lados esquerdo e direito enquanto mantém a consistência espacial, o que ajuda o modelo a generalizar para objetos que aparecem em orientações espelhadas. O hiperparâmetro fliplr define a probabilidade de aplicar a transformação, com um valor de fliplr=1.0 garantindo que todas as imagens sejam invertidas e um valor de fliplr=0.0 desativando a transformação completamente. Por exemplo, com fliplr=0.5, cada imagem tem 50% de chance de ser invertida horizontalmente.
  • Objetivo: A inversão horizontal é amplamente usada em detecção de objetos, estimativa de pose e reconhecimento facial para melhorar a robustez contra variações esquerda-direita. Por exemplo, em direção autônoma, veículos e pedestres podem aparecer em qualquer lado da estrada, e a inversão horizontal ajuda o modelo a reconhecê-los igualmente bem em ambas as orientações.
  • Implementação da Ultralytics: RandomFlip
fliplr desligadofliplr ligado
Imagem original sem aumentaçãoAumentação de inversão horizontal ativada

Link to this sectionTroca de Canal BGR (bgr)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 0
  • Utilização: Troca os canais de cor de uma imagem de RGB para BGR, alterando a ordem na qual as cores são representadas. O hiperparâmetro bgr define a probabilidade de aplicar a transformação, com bgr=1.0 garantindo que todas as imagens passem pela troca de canal e bgr=0.0 desativando-a. Por exemplo, com bgr=0.5, cada imagem tem 50% de chance de ser convertida de RGB para BGR.
  • Objetivo: Aumenta a robustez a diferentes ordenações de canais de cor. Por exemplo, ao treinar modelos que devem funcionar em vários sistemas de câmera e bibliotecas de imagem onde formatos RGB e BGR podem ser usados de forma inconsistente, ou ao implementar modelos em ambientes onde o formato de cor de entrada pode diferir dos dados de treinamento.
  • Implementação da Ultralytics: Format
bgr desligadobgr ligado
Imagem original sem aumentaçãoAumentação de troca de canal BGR

Link to this sectionMosaico (mosaic)#

  • Intervalo: 0.0 - 1.0
  • Padrão: 1
  • Utilização: Combina quatro imagens de treinamento em uma. O hiperparâmetro mosaic define a probabilidade de aplicar a transformação, com mosaic=1.0 garantindo que todas as imagens sejam combinadas e mosaic=0.0 desativando a transformação. Por exemplo, com mosaic=0.5, cada imagem tem 50% de chance de ser combinada com três outras imagens.
  • Objetivo: Altamente eficaz para melhorar a detecção de pequenos objetos e a compreensão do contexto. Por exemplo, em projetos de conservação da vida selvagem onde os animais podem aparecer a várias distâncias e escalas, a aumentação de mosaico ajuda o modelo a aprender a reconhecer a mesma espécie através de diferentes tamanhos, oclusões parciais e contextos ambientais, criando artificialmente diversas amostras de treinamento a partir de dados limitados.
  • Implementação da Ultralytics: Mosaic
  • Nota:
    • Mesmo que a aumentação mosaic torne o modelo mais robusto, ela também pode tornar o processo de treinamento mais desafiador.
    • A aumentação mosaic pode ser desativada perto do final do treinamento definindo close_mosaic para o número de épocas antes da conclusão em que ela deve ser desligada. Por exemplo, se epochs estiver definido como 200 e close_mosaic como 20, a aumentação mosaic será desativada após 180 épocas. Se close_mosaic estiver definido como 0, a aumentação mosaic ficará ativada durante todo o processo de treinamento.
    • O centro do mosaico gerado é determinado usando valores aleatórios, e pode estar dentro ou fora da imagem.
    • A implementação atual da aumentação mosaic combina 4 imagens escolhidas aleatoriamente do conjunto de dados. Se o conjunto de dados for pequeno, a mesma imagem pode ser usada várias vezes no mesmo mosaico.
mosaic desligadomosaic ligado
Imagem original sem aumentaçãoAumentação de mosaico de 4 imagens ativada

Link to this sectionMixup (mixup)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 0
  • Utilização: Mistura duas imagens e seus rótulos com uma determinada probabilidade. O hiperparâmetro mixup define a probabilidade de aplicar a transformação, com mixup=1.0 garantindo que todas as imagens sejam misturadas e mixup=0.0 desativando a transformação. Por exemplo, com mixup=0.5, cada imagem tem 50% de chance de ser misturada com outra imagem.
  • Objetivo: Melhora a robustez do modelo e reduz o overfitting. Por exemplo, em sistemas de reconhecimento de produtos de varejo, o mixup ajuda o modelo a aprender características mais robustas ao misturar imagens de diferentes produtos, ensinando-o a identificar itens mesmo quando estão parcialmente visíveis ou obscurecidos por outros produtos em prateleiras de lojas lotadas.
  • Implementação da Ultralytics: Mixup
  • Nota:
    • A proporção mixup é um valor aleatório escolhido de uma distribuição beta np.random.beta(32.0, 32.0), o que significa que cada imagem contribui aproximadamente 50%, com pequenas variações.
Primeira imagem, mixup desligadoSegunda imagem, mixup desligadomixup ligado
Primeira imagem para mistura MixUpSegunda imagem para mistura MixUpAumentação de mistura MixUp ativada

Link to this sectionCutMix (cutmix)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 0
  • Utilização: Recorta uma região retangular de uma imagem e a cola em outra imagem com uma determinada probabilidade. O hiperparâmetro cutmix define a probabilidade de aplicar a transformação, com cutmix=1.0 garantindo que todas as imagens passem por esta transformação e cutmix=0.0 desativando-a completamente. Por exemplo, com cutmix=0.5, cada imagem tem 50% de chance de ter uma região substituída por um recorte de outra imagem.
  • Objetivo: Aumenta o desempenho do modelo ao criar cenários de oclusão realistas enquanto mantém a integridade dos recursos locais. Por exemplo, em sistemas de direção autônoma, o cutmix ajuda o modelo a aprender a reconhecer veículos ou pedestres mesmo quando estão parcialmente obscurecidos por outros objetos, melhorando a precisão da detecção em ambientes complexos do mundo real com objetos sobrepostos.
  • Implementação da Ultralytics: CutMix
  • Nota:
    • O tamanho e a posição da região recortada são determinados aleatoriamente para cada aplicação.
    • Diferente do mixup, que mistura valores de pixel globalmente, o cutmix mantém as intensidades originais dos pixels dentro das regiões recortadas, preservando as características locais.
    • Uma região é colada na imagem de destino apenas se não se sobrepor a nenhuma caixa delimitadora existente. Além disso, apenas as caixas delimitadoras que mantêm pelo menos 0.1 (10%) da sua área original dentro da região colada são preservadas.
    • Este limite mínimo de área da caixa delimitadora não pode ser alterado na implementação atual e está definido como 0.1 por padrão.
Primeira imagem, cutmix desligadoSegunda imagem, cutmix desligadocutmix ligado
Primeira imagem para CutMixSegunda imagem para CutMixAumentação de CutMix ativada

Link to this sectionAumentações específicas para segmentação#

Link to this sectionCopy-Paste (copy_paste)#

  • Intervalo: 0.0 - 1.0
  • Predefinição: 0
  • Utilização: Funciona apenas para tarefas de segmentação, esta aumentação copia objetos dentro ou entre imagens com base em uma probabilidade especificada, controlada pelo copy_paste_mode. O hiperparâmetro copy_paste define a probabilidade de aplicar a transformação, com copy_paste=1.0 garantindo que todas as imagens sejam copiadas e copy_paste=0.0 desativando a transformação. Por exemplo, com copy_paste=0.5, cada imagem tem 50% de chance de ter objetos copiados de outra imagem.
  • Objetivo: Particularmente útil para tarefas de segmentação de instância e classes de objetos raros. Por exemplo, na detecção de defeitos industriais onde certos tipos de defeitos aparecem com pouca frequência, a aumentação de copy-paste pode aumentar artificialmente a ocorrência desses defeitos raros copiando-os de uma imagem para outra, ajudando o modelo a aprender melhor esses casos sub-representados sem exigir amostras defeituosas adicionais.
  • Implementação da Ultralytics: CopyPaste
  • Nota:
    • Como retratado no gif abaixo, a aumentação copy_paste pode ser usada para copiar objetos de uma imagem para outra.
    • Uma vez que um objeto é copiado, independentemente do copy_paste_mode, sua Interseção sobre Área (IoA) é calculada com todos os objetos da imagem de origem. Se toda a IoA estiver abaixo de 0.3 (30%), o objeto é colado na imagem de destino. Se apenas uma das IoA estiver acima de 0.3, o objeto não é colado na imagem de destino.
    • O limite de IoA não pode ser alterado na implementação atual e está definido como 0.3 por padrão.
copy_paste desligadocopy_paste ligado com copy_paste_mode=flipVisualize o processo copy_paste
Imagem original sem aumentaçãoAumentação de copy-paste ativadaDemonstração animada da aumentação de copy-paste

Link to this sectionModo Copy-Paste (copy_paste_mode)#

  • Opções: 'flip', 'mixup'
  • Padrão: 'flip'
  • Utilização: Determina o método usado para a aumentação de copy-paste. Se definido como 'flip', os objetos vêm da mesma imagem, enquanto 'mixup' permite que objetos sejam copiados de imagens diferentes.
  • Objetivo: Permite flexibilidade na forma como os objetos copiados são integrados nas imagens de destino.
  • Implementação da Ultralytics: CopyPaste
  • Nota:
    • O princípio de IoA é o mesmo para ambos os copy_paste_mode, mas a maneira como os objetos são copiados é diferente.
    • Dependendo do tamanho da imagem, os objetos podem, às vezes, ser copiados parcialmente ou inteiramente fora do quadro.
    • Dependendo da qualidade das anotações poligonais, os objetos copiados podem ter pequenas variações de forma em comparação com os originais.
Imagem de referênciaImagem escolhida para copy_pastecopy_paste ligado com copy_paste_mode=mixup
Segunda imagem para mistura MixUpImagem original sem aumentaçãoCopy-paste com modo MixUp

Link to this sectionAumentações específicas para classificação#

Link to this sectionAuto Aumentação (auto_augment)#

  • Opções: 'randaugment', 'autoaugment', 'augmix', None
  • Padrão: 'randaugment'
  • Uso: Aplica políticas de aumento automatizadas para classificação. A opção 'randaugment' usa RandAugment, 'autoaugment' usa AutoAugment e 'augmix' usa AugMix. Definir como None desativa o aumento automatizado.
  • Objetivo: Otimiza estratégias de aumento automaticamente para tarefas de classificação. As diferenças são as seguintes:
    • AutoAugment: Este modo aplica políticas de aumento predefinidas aprendidas a partir de datasets como ImageNet, CIFAR10 e SVHN. Você pode selecionar essas políticas existentes, mas não pode treinar novas dentro do Torchvision. Para descobrir estratégias de aumento ideais para datasets específicos, seriam necessárias bibliotecas externas ou implementações personalizadas. Referência ao artigo sobre AutoAugment.
    • RandAugment: Aplica uma seleção aleatória de transformações com magnitude uniforme. Esta abordagem reduz a necessidade de uma fase de busca extensa, tornando-a computacionalmente mais eficiente enquanto ainda aumenta a robustez do modelo. Referência ao artigo sobre RandAugment.
    • AugMix: AugMix é um método de aumento de dados que melhora a robustez do modelo criando diversas variações de imagem através de combinações aleatórias de transformações simples. Referência ao artigo sobre AugMix.
  • Implementação da Ultralytics: classify_augmentations()
  • Nota:
    • Essencialmente, a principal diferença entre os três métodos é a maneira como as políticas de aumento são definidas e aplicadas.
    • Você pode consultar este artigo que compara os três métodos em detalhes.

Link to this sectionApagamento Aleatório (erasing)#

  • Intervalo: 0.0 - 0.9
  • Predefinição: 0.4
  • Uso: Apaga aleatoriamente porções da imagem durante o treinamento de classificação. O hiperparâmetro erasing define a probabilidade de aplicar a transformação, com erasing=0.9 garantindo que quase todas as imagens sejam apagadas e erasing=0.0 desativando a transformação. Por exemplo, com erasing=0.5, cada imagem tem 50% de chance de ter uma porção apagada.
  • Objetivo: Ajuda os modelos a aprender características robustas e evita a dependência excessiva de regiões específicas da imagem. Por exemplo, em sistemas de reconhecimento facial, o apagamento aleatório ajuda os modelos a se tornarem mais robustos a oclusões parciais, como óculos de sol, máscaras faciais ou outros objetos que possam cobrir parcialmente as características faciais. Isso melhora o desempenho no mundo real ao forçar o modelo a identificar indivíduos usando múltiplas características faciais em vez de depender apenas de características distintivas que podem estar obscurecidas.
  • Implementação da Ultralytics: classify_augmentations()
  • Nota:
    • O aumento erasing vem com hiperparâmetros scale, ratio e value que não podem ser alterados com a implementação atual. Seus valores padrão são (0.02, 0.33), (0.3, 3.3) e 0, respectivamente, conforme declarado na documentação do PyTorch.
    • O limite superior do hiperparâmetro erasing é definido como 0.9 para evitar a aplicação da transformação a todas as imagens.
erasing desativadoerasing ativado (exemplo 1)erasing ativado (exemplo 2)erasing ativado (exemplo 3)
Imagem original sem aumentoExemplo de apagamento aleatório 1Exemplo de apagamento aleatório 2Exemplo de apagamento aleatório 3

Link to this sectionRecursos Avançados de Aumento#

Link to this sectionTransformações Personalizadas do Albumentations (augmentations)#

  • Tipo: list de transformações do Albumentations
  • Padrão: None
  • Uso: Permite fornecer transformações personalizadas do Albumentations para aumento de dados usando a API Python. Este parâmetro aceita uma lista de objetos de transformação do Albumentations que serão aplicados durante o treinamento em vez das transformações padrão do Albumentations.
  • Objetivo: Proporciona controle refinado sobre estratégias de aumento de dados aproveitando a extensa biblioteca de transformações do Albumentations. Isso é particularmente útil quando você precisa de aumentos especializados além das opções integradas do YOLO, como ajustes avançados de cor, injeção de ruído ou transformações específicas de domínio.
  • Implementação da Ultralytics: Albumentations
Exemplo de Albumentations Personalizado
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,
)

Pontos Principais:

  • Apenas API Python: Transformações personalizadas do Albumentations são atualmente suportadas apenas através da API Python. Elas não podem ser especificadas via CLI ou arquivos de configuração YAML.
  • Substitui Transformações Padrão: Quando você fornece transformações personalizadas através do parâmetro augmentations, elas substituem completamente as transformações padrão do Albumentations. Os aumentos padrão do YOLO (como mosaic, hsv_h, hsv_s, degrees, etc.) permanecem ativos e são aplicados de forma independente.
  • Compatibilidade com Bounding Box: Tenha cuidado ao usar transformações espaciais (transformações que alteram a geometria da imagem). A Ultralytics lida automaticamente com ajustes de caixas delimitadoras, mas algumas transformações complexas podem exigir configuração adicional.
  • Biblioteca Extensa: O Albumentations oferece mais de 70 transformações diferentes. Explore a documentação do Albumentations para descobrir todas as opções disponíveis.
  • Consideração de Desempenho: Adicionar muitos aumentos ou usar transformações computacionalmente caras pode tornar o treinamento mais lento. Comece com um conjunto pequeno e monitore a velocidade de treinamento.

Casos de Uso Comuns:

  • Imagens Médicas: Aplique transformações especializadas como deformações elásticas ou distorções de grade para aumento de imagens de raio-X ou ressonância magnética
  • Imagens Aéreas/de Satélite: Use transformações otimizadas para perspectivas aéreas
  • Condições de Baixa Luz: Aplique ajustes de ruído e brilho para simular iluminação desafiadora
  • Inspeção Industrial: Adicione padrões semelhantes a defeitos ou variações de textura para aplicações de controle de qualidade

Notas de Compatibilidade:

  • Requer a versão 1.0.3 ou superior do Albumentations
  • Compatível com todas as tarefas de detecção e segmentação do YOLO
  • Não aplicável a tarefas de classificação (a classificação usa um pipeline de aumento diferente)

Para obter mais informações sobre o Albumentations e as transformações disponíveis, visite a documentação oficial do Albumentations.

Link to this sectionFAQ#

Link to this sectionExistem muitos aumentos para escolher. Como sei quais usar?#

Escolher os aumentos certos depende do seu caso de uso específico e dataset. Aqui estão algumas diretrizes gerais para ajudá-lo a decidir:

  • Na maioria dos casos, pequenas variações de cor e brilho são benéficas. Os valores padrão para hsv_h, hsv_s e hsv_v são um ponto de partida sólido.
  • Se o ponto de vista da câmera for consistente e não mudar após o modelo ser implantado, você provavelmente pode pular transformações geométricas como rotation, translation, scale, shear ou perspective. No entanto, se o ângulo da câmera puder variar e você precisar que o modelo seja mais robusto, é melhor manter esses aumentos.
  • Use o aumento mosaic apenas se ter objetos parcialmente ocluídos ou múltiplos objetos por imagem for aceitável e não alterar o valor do rótulo. Alternativamente, você pode manter o mosaic ativo, mas aumentar o valor de close_mosaic para desativá-lo mais cedo no processo de treinamento.

Em resumo: mantenha as coisas simples. Comece com um conjunto pequeno de aumentos e gradualmente adicione mais conforme necessário. O objetivo é melhorar a generalização e robustez do modelo, não complicar o processo de treinamento. Além disso, certifique-se de que os aumentos que você aplica reflitam a mesma distribuição de dados que seu modelo encontrará na produção.

Link to this sectionAo iniciar um treinamento, vejo uma referência albumentations: Blur[...]. Isso significa que o Ultralytics YOLO executa aumentos adicionais como desfoque?#

Se o pacote albumentations estiver instalado, a Ultralytics aplica automaticamente um conjunto de aumentos de imagem extras usando-o. Esses aumentos são tratados internamente e não exigem configuração adicional.

Você pode encontrar a lista completa de transformações aplicadas em nossa documentação técnica, bem como em nosso guia de integração do Albumentations. Observe que apenas os aumentos com uma probabilidade p maior que 0 estão ativos. Eles são aplicados intencionalmente em baixas frequências para imitar artefatos visuais do mundo real, como desfoque ou efeitos em tons de cinza.

Você também pode fornecer suas próprias transformações personalizadas do Albumentations usando a API Python. Veja a seção Recursos Avançados de Aumento para mais detalhes.

Link to this sectionAo iniciar um treinamento, não vejo nenhuma referência ao albumentations. Por quê?#

Verifique se o pacote albumentations está instalado. Se não, você pode instalá-lo executando pip install albumentations. Uma vez instalado, o pacote deve ser automaticamente detectado e usado pela Ultralytics.

Link to this sectionComo personalizo meus aumentos?#

Você pode personalizar aumentos criando uma classe de dataset e um treinador personalizados. Por exemplo, você pode substituir os aumentos de classificação padrão da Ultralytics por torchvision.transforms.Resize do PyTorch ou outras transformações. Veja o exemplo de treinamento personalizado na documentação de classificação para detalhes de implementação.

Comentários