Ir para o conteúdo

Aumento de Dados usando Ultralytics YOLO

Exemplo de Aumentos de Imagem

Introdução

Aumento de dados é uma técnica crucial em visão computacional que expande artificialmente o seu conjunto de dados de treino, aplicando várias transformações às 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.



Assista: Como usar Mosaic, MixUp e mais Aumentos de Dados para ajudar os Modelos Ultralytics YOLO a generalizar melhor 🚀

Por que a Aumentação de Dados é Importante

O aumento de dados serve a múltiplos propósitos críticos no treinamento de modelos de visão computacional:

  • Dataset Expandido: Ao criar variações de imagens existentes, você pode aumentar efetivamente o tamanho do seu dataset de treinamento sem coletar novos dados.
  • Generalização Aprimorada: Os modelos aprendem a reconhecer objetos sob várias condições, tornando-os mais robustos em aplicações do mundo real.
  • Redução do Overfitting: Ao introduzir variabilidade nos dados de treino, os modelos são menos propensos a memorizar características específicas da imagem.
  • Desempenho Aprimorado: Modelos treinados com aumento adequado normalmente alcançam melhor precisão em conjuntos de validação e teste.

A implementação do Ultralytics YOLO fornece um conjunto abrangente de técnicas de aumento, cada uma servindo a propósitos específicos e contribuindo para o desempenho do modelo de diferentes maneiras. Este guia explorará cada parâmetro de aumento em detalhes, ajudando você a entender quando e como usá-los de forma eficaz em seus projetos.

Configurações de Exemplo

Você pode personalizar cada parâmetro usando a API Python, a interface de linha de comando (CLI) ou um arquivo 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("yolo11n.pt")

# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)

# Training without any augmentations (disabled values omitted for clarity)
model.train(
    data="coco.yaml",
    epochs=100,
    hsv_h=0.0,
    hsv_s=0.0,
    hsv_v=0.0,
    translate=0.0,
    scale=0.0,
    fliplr=0.0,
    mosaic=0.0,
    erasing=0.0,
    auto_augment=None,
)

# Training with custom Albumentations transforms (Python API only)
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)
# Training with custom augmentation parameters
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 hsv_h=0.03 hsv_s=0.6 hsv_v=0.5

Usando um arquivo de configuração

Você pode definir todos os parâmetros de treinamento, incluindo aumentos, em um arquivo de configuração YAML (por exemplo, train_custom.yaml). O argumento mode parâmetro só é necessário ao utilizar a CLI. Este novo ficheiro YAML irá, então, substituir o padrão localizado em ultralytics package.

# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo11n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5

Em seguida, inicie o treinamento com a API Python:

Exemplo de Treinamento

from ultralytics import YOLO

# Load a COCO-pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Train the model with custom configuration
model.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolo detect train model="yolo11n.pt" cfg=train_custom.yaml

Aumentos de Espaço de Cores

Ajuste de Matiz (hsv_h)

  • Intervalo: 0.0 - 1.0
  • Padrão: 0.015
  • Utilização: Desloca as cores da imagem, preservando as suas relações. O hsv_h hiperparâmetro 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 dentro de-0.3 para 0.3. Para valores acima de 0.5, a mudança de matiz envolve a roda de cores, e é por isso que os aumentos parecem os mesmos entre 0.5 e -0.5.
  • Objetivo: Particularmente útil para cenários ao ar livre onde as condições de iluminação podem afetar drasticamente a aparência do objeto. Por exemplo, uma banana pode parecer mais amarela sob a luz do sol brilhante, mas mais esverdeada em ambientes fechados.
  • Implementação da Ultralytics: RandomHSV
-0.5-0.250.00.250.5
hsv_h_-0.5_augmentationhsv_h_-0.25_augmentationaugmentation_identityaumento hsv_h_0.25hsv_h_-0.5_augmentation

Ajuste de Saturação (hsv_s)

  • Intervalo: 0.0 - 1.0
  • Padrão: 0.7
  • Utilização: Modifica a intensidade das cores na imagem. O hsv_s hiperparâmetro 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 dentro de-0.7 para 0.7.
  • Objetivo: Ajuda os modelos a lidar com diferentes condições meteorológicas e configurações de câmara. Por exemplo, um sinal de trânsito vermelho pode parecer muito vívido num dia ensolarado, mas parecer baço e desbotado em condições de nevoeiro.
  • Implementação da Ultralytics: RandomHSV
-1.0-0.50.00.51.0
aumento hsv_s_-1aumento hsv_s_-0.5augmentation_identityaumento hsv_s_0.5aumento hsv_s_1

Ajuste de Brilho (hsv_v)

  • Intervalo: 0.0 - 1.0
  • Padrão: 0.4
  • Utilização: Altera o brilho da imagem. O hsv_v hiperparâmetro 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 dentro de-0.4 para 0.4.
  • Objetivo: 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 da Ultralytics: RandomHSV
-1.0-0.50.00.51.0
aumento hsv_v_-1aumento hsv_v_-0.5augmentation_identityaumento hsv_v_0.5aumento hsv_v_1

Transformações Geométricas

Rotação (degrees)

  • Intervalo: 0.0 para 180
  • Padrão: 0.0
  • Utilização: Roda as imagens aleatoriamente dentro do intervalo especificado. O degrees hiperparâmetro 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 dentro de-10.0 para 10.0.
  • Objetivo: Crucial para aplicações onde os objetos podem aparecer em diferentes orientações. Por exemplo, em imagens aéreas de drones, 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 da Ultralytics: RandomPerspective
-180-900.090180
degrees_-180_augmentationdegrees_-90_augmentationaugmentation_identitydegrees_90_augmentationdegrees_180_augmentation

Translação (translate)

  • Intervalo: 0.0 - 1.0
  • Padrão: 0.1
  • Utilização: Desloca as imagens horizontal e verticalmente por uma fração aleatória do tamanho da imagem. O translate hiperparâmetro define a magnitude do deslocamento, com o ajuste final escolhido duas vezes (uma para cada eixo) dentro do intervalo -translate e translate. Por exemplo, com translate=0.5, a translação é selecionada aleatoriamente dentro de-0.5 para 0.5 no eixo x, e outro valor aleatório independente é selecionado dentro do mesmo intervalo no eixo y.
  • Objetivo: Ajuda os modelos a aprender a detetar objetos parcialmente visíveis e melhora a robustez à posição do objeto. Por exemplo, em aplicações de avaliação de danos em veículos, as peças do carro podem aparecer total ou parcialmente no quadro, dependendo da posição e distância do fotógrafo, o aumento da tradução ensinará o modelo a reconhecer estas características, independentemente da sua integridade ou posição.
  • Implementação da Ultralytics: RandomPerspective
  • Nota: Para simplificar, as traduções aplicadas abaixo são as mesmas de cada vez para ambos x e y eixos. Valores -1.0 e 1.0não são mostrados, pois traduziriam a imagem completamente para fora do frame.
-0.5-0.250.00.250.5
translate_-0.5_augmentationtranslate_-0.25_augmentationaugmentation_identitytranslate_0.25_augmentationtranslate_0.5_augmentation

Escala (scale)

  • Intervalo: ≥0.0
  • Padrão: 0.5
  • Utilização: Redimensiona as imagens por um fator aleatório dentro do intervalo especificado. O scale hiperparâmetro define o fator de escala, com o ajuste final escolhido aleatoriamente entre 1-scale e 1+scale. Por exemplo, com scale=0.5, o escalonamento é selecionado aleatoriamente dentro de0.5 para 1.5.
  • Objetivo: Permite que os modelos lidem 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 da Ultralytics: RandomPerspective
  • Nota:
    • O valor -1.0 não é mostrado, pois faria a imagem desaparecer, enquanto 1.0 simplesmente resulta em um zoom de 2x.
    • Os valores exibidos na tabela abaixo são os aplicados através do hiperparâmetro scale, não o fator de escala final.
    • Se scale é maior que 1.0, a imagem pode ser muito pequena ou invertida, pois o fator de escala é escolhido aleatoriamente entre 1-scale e 1+scale. Por exemplo, com scale=3.0, o escalonamento é selecionado aleatoriamente dentro de-2.0 para 4.0. Se um valor negativo for escolhido, a imagem é invertida.
-0.5-0.250.00.250.5
scale_-0.5_augmentationscale_-0.25_augmentationaugmentation_identityscale_0.25_augmentationscale_0.5_augmentation

Cisalhamento (shear)

  • Intervalo: -180 para +180
  • Padrão: 0.0
  • Utilização: Introduz uma transformação geométrica que distorce a imagem ao longo dos eixos x e y, deslocando efetivamente partes da imagem numa direção, mantendo as linhas paralelas. O shear hiperparâmetro 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 dentro de-10 para 10 no eixo x, e outro valor aleatório independente é selecionado dentro do mesmo intervalo no eixo y.
  • Objetivo: Ajuda os modelos a generalizar as 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âmaras não perpendiculares. A aplicação do aumento de shear garante que o modelo aprende a reconhecer objetos apesar de tais distorções enviesadas.
  • Implementação da Ultralytics: RandomPerspective
  • Nota:
    • shear valores podem distorcer rapidamente a imagem, por isso é recomendável 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 alterando os seus ângulos, mantendo os lados opostos paralelos.
-10-50.0510
cisalhamento_-10_aumentocisalhamento_-5_aumentoaugmentation_identitycisalhamento_5_aumentocisalhamento_10_aumento

Perspectiva (perspective)

  • Intervalo: 0.0 - 0.001
  • Padrão: 0.0
  • Utilização: Aplica uma transformação de perspectiva completa ao longo do eixo x e do eixo y, simulando como os objetos aparecem quando vistos de diferentes profundidades ou ângulos. O perspective hiperparâmetro 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 para 0.001 no eixo x, e outro valor aleatório independente é selecionado dentro do mesmo intervalo no eixo y.
  • Objetivo: O aumento de perspetiva é crucial para lidar com mudanças extremas de ponto de vista, especialmente em cenários onde os objetos aparecem encurtados ou distorcidos devido a mudanças de perspetiva. Por exemplo, na deteção de objetos baseada em drones, edifícios, estradas e veículos podem aparecer esticados ou comprimidos, dependendo da inclinação e altitude do drone. Ao aplicar transformações de perspetiva, os modelos aprendem a reconhecer objetos apesar destas distorções induzidas pela perspetiva, melhorando a sua robustez em implementações no mundo real.
  • Implementação da Ultralytics: RandomPerspective
-0.001-0.00050.00.00050.001
perspective_-0.001_augmentationperspective_-0.0005_augmentationaugmentation_identityaumento_de_perspectiva_0.0005aumento_de_perspectiva_0.001

Inverter de Cima para Baixo (flipud)

  • Intervalo: 0.0 - 1.0
  • Padrão: 0.0
  • Utilização: Executa uma inversão vertical invertendo a imagem ao longo do eixo y. Esta transformação espelha toda a imagem de cabeça para baixo, mas preserva todas as relações espaciais entre os objetos. O hiperparâmetro flipud define a probabilidade de aplicar a transformação, com um valor de flipud=1.0 garantindo que todas as imagens sejam invertidas e um valor de flipud=0.0 desativando a transformação completamente. Por exemplo, com flipud=0.5, cada imagem tem 50% de chance de ser invertida de cima para baixo.
  • Objetivo: Útil para cenários onde os objetos podem aparecer de cabeça para baixo. Por exemplo, em sistemas de visão robótica, os objetos em esteiras transportadoras ou braços robóticos podem ser recolhidos e colocados em várias orientações. O espelhamento vertical ajuda o modelo a reconhecer objetos independentemente do seu posicionamento de cima para baixo.
  • Implementação da Ultralytics: RandomFlip
flipud desativadoflipud em
augmentation_identityflipud_on_augmentation

Inverter Esquerda-Direita (fliplr)

  • Intervalo: 0.0 - 1.0
  • Padrão: 0.5
  • Utilização: Executa uma inversão horizontal espelhando a imagem ao longo do eixo x. Esta transformação troca os lados esquerdo e direito, mantendo a consistência espacial, o que ajuda o modelo a generalizar para objetos que aparecem em orientações espelhadas. O fliplr hiperparâmetro 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 da esquerda para a direita.
  • Objetivo: O espelhamento horizontal é amplamente utilizado na deteção de objetos, estimativa de pose e reconhecimento facial para melhorar a robustez contra variações esquerda-direita. Por exemplo, na condução autónoma, veículos e peões podem aparecer em ambos os lados da estrada, e o espelhamento horizontal ajuda o modelo a reconhecê-los igualmente bem em ambas as orientações.
  • Implementação da Ultralytics: RandomFlip
fliplr desativadofliplr em
augmentation_identityfliplr_on_augmentation

Troca de Canal BGR (bgr)

  • Intervalo: 0.0 - 1.0
  • Padrão: 0.0
  • Utilização: Troca os canais de cor de uma imagem de RGB para BGR, alterando a ordem em que as cores são representadas. O bgr hiperparâmetro define a probabilidade de aplicar a transformação, com bgr=1.0 garantindo que todas as imagens passem pela troca de canais e bgr=0.0 desativando-o. 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âmaras e bibliotecas de imagem onde os 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 treino.
  • Implementação da Ultralytics: Format
bgr desativadobgr em
augmentation_identitybgr_on_augmentation

Mosaic (mosaic)

  • Intervalo: 0.0 - 1.0
  • Padrão: 1.0
  • Utilização: Combina quatro imagens de treino numa só. O mosaic hiperparâmetro 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 outras três imagens.
  • Objetivo: Altamente eficaz para melhorar a deteçã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, o aumento de mosaico ajuda o modelo a aprender a reconhecer a mesma espécie em diferentes tamanhos, oclusões parciais e contextos ambientais, criando artificialmente amostras de treino diversificadas a partir de dados limitados.
  • Implementação da Ultralytics: Mosaic
  • Nota:
    • Mesmo que o mosaic o aumento de dados torna o modelo mais robusto, também pode tornar o processo de treino mais desafiador.
    • O mosaic o aumento de dados pode ser desativado perto do final do treino definindo close_mosaic para o número de épocas antes da conclusão, quando deve ser desligado. Por exemplo, se epochs é definido como 200 e close_mosaic é definido como 20, a função mosaic o aumento de dados será desativado após 180 épocas. Se close_mosaic é definido como 0, a função mosaic o aumento de dados será ativado para todo o processo de treino.
    • O centro do mosaico gerado é determinado usando valores aleatórios e pode estar dentro ou fora da imagem.
    • A implementação atual do mosaic o aumento de dados 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 desativadomosaic em
augmentation_identitymosaic_on_augmentation

Mixup (mixup)

  • Intervalo: 0.0 - 1.0
  • Padrão: 0.0
  • Utilização: Mistura duas imagens e seus rótulos com uma determinada probabilidade. O mixup hiperparâmetro 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 retalho, o mixup ajuda o modelo a aprender recursos mais robustos, misturando 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:
    • O mixup ratio é um valor aleatório escolhido de um np.random.beta(32.0, 32.0) distribuição beta, o que significa que cada imagem contribui com aproximadamente 50%, com ligeiras variações.
Primeira imagem, mixup desativadoSegunda imagem, mixup desativadomixup em
augmentation_mixup_identity_1augmentation_mixup_identity_2mixup_on_augmentation

CutMix (cutmix)

  • Intervalo: 0.0 - 1.0
  • Padrão: 0.0
  • Utilização: Corta uma região retangular de uma imagem e cola-a noutra imagem com uma determinada probabilidade. O cutmix hiperparâmetro 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-o completamente. Por exemplo, com cutmix=0.5, cada imagem tem 50% de chance de ter uma região substituída por um patch de outra imagem.
  • Objetivo: Melhora o desempenho do modelo, criando cenários de oclusão realistas, mantendo a integridade dos recursos locais. Por exemplo, em sistemas de condução autónoma, o cutmix ajuda o modelo a aprender a reconhecer veículos ou peões, mesmo quando estão parcialmente ocluídos por outros objetos, melhorando a precisão da deteçã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 de corte são determinados aleatoriamente para cada aplicação.
    • Ao contrário do mixup, que mistura os valores dos pixels globalmente, cutmix mantém as intensidades de pixel originais dentro das regiões de corte, preservando as características locais.
    • Uma região é colada na imagem de destino apenas se não se sobrepuser a nenhuma caixa delimitadora existente. Além disso, apenas as caixas delimitadoras que mantém pelo menos 0.1 (10%) de sua área original dentro da região colada são preservados.
    • Este limite mínimo de área da caixa delimitadora não pode ser alterado com a implementação atual e está definido para 0.1 por padrão.
Primeira imagem, cutmix desativadoSegunda imagem, cutmix desativadocutmix em
augmentation_cutmix_identity_1augmentation_cutmix_identity_2cutmix_on_augmentation

Aumentos Específicos de Segmentação

Copiar e Colar (copy_paste)

  • Intervalo: 0.0 - 1.0
  • Padrão: 0.0
  • Utilização: Funciona apenas para tarefas de segmentação, este aumento copia objetos dentro ou entre imagens com base numa probabilidade especificada, controlada pelo copy_paste_mode. O copy_paste hiperparâmetro 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âncias e classes de objetos raros. Por exemplo, na deteção de defeitos industriais, onde certos tipos de defeitos aparecem infrequentemente, o aumento de copiar e colar pode aumentar artificialmente a ocorrência destes defeitos raros, copiando-os de uma imagem para outra, ajudando o modelo a aprender melhor estes casos sub-representados sem necessitar de amostras defeituosas adicionais.
  • Implementação da Ultralytics: CopyPaste
  • Nota:
    • Como ilustrado no GIF abaixo, o copy_paste o aumento de dados pode ser usado para copiar objetos de uma imagem para outra.
    • Uma vez que um objeto é copiado, independentemente do copy_paste_mode, sua Intersecção sobre Área (IoA) é computada com todos os objetos da imagem de origem. Se todos os IoA estiverem abaixo 0.3 (30%), o objeto é colado na imagem de destino. Se apenas um dos IoA estiver acima 0.3, o objeto não é colado na imagem de destino.
    • O limite de IoA não pode ser alterado com a implementação atual e está definido para 0.3 por padrão.
copy_paste desativadocopy_paste ativado com copy_paste_mode=flipVisualize o copy_paste processo
augmentation_identitycopy_paste_on_augmentationcopy_paste_augmentation_gif_demo

Modo Copiar e Colar (copy_paste_mode)

  • Opções: 'flip', 'mixup'
  • Padrão: 'flip'
  • Utilização: Determina o método usado para copy-paste aumento de dados. Se definido para 'flip', os objetos vêm da mesma imagem, enquanto 'mixup' permite que objetos sejam copiados de diferentes imagens.
  • 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 IoA é o mesmo para ambos copy_paste_mode, mas a forma como os objetos são copiados é diferente.
    • Dependendo do tamanho da imagem, os objetos podem, por vezes, ser copiados parcial ou totalmente para fora do frame.
    • Dependendo da qualidade das anotações do polígono, os objetos copiados podem ter ligeiras variações de forma em comparação com os originais.
Imagem de referênciaImagem escolhida para copy_pastecopy_paste ativado com copy_paste_mode=mixup
augmentation_mixup_identity_2augmentation_identitycopy_paste_mode_mixup_augmentation

Aumentos Específicos de Classificação

Aumento Automático (auto_augment)

  • Opções: 'randaugment', 'autoaugment', 'augmix', None
  • Padrão: 'randaugment'
  • Utilização: Aplica políticas de aumento automatizadas para classificação. O 'randaugment' option usa RandAugment, 'autoaugment' usa AutoAugment, e 'augmix' usa AugMix. Definindo para None desativa o aumento automatizado.
  • Propósito: Otimiza automaticamente as estratégias de aumento 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 conjuntos de dados como ImageNet, CIFAR10 e SVHN. Os usuários podem selecionar essas políticas existentes, mas não podem treinar novas políticas dentro do Torchvision. Para descobrir estratégias de aumento ideais para conjuntos de dados específicos, bibliotecas externas ou implementações personalizadas seriam necessárias. Referência ao artigo AutoAugment.
    • RandAugment: Aplica uma seleção aleatória de transformações com magnitude uniforme. Esta abordagem reduz a necessidade de uma fase de pesquisa extensa, tornando-a mais eficiente em termos computacionais, ao mesmo tempo que melhora a robustez do modelo. Referência ao artigo do 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. Consulte o artigo do AugMix.
  • Implementação da Ultralytics: classify_augmentations()
  • Nota:
    • Essencialmente, a principal diferença entre os três métodos é a forma 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.

Apagamento Aleatório (erasing)

  • Intervalo: 0.0 - 0.9
  • Padrão: 0.4
  • Utilização: Apaga aleatoriamente porções da imagem durante o treino de classificação. O erasing hiperparâmetro 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 recursos robustos 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 tornarem-se mais robustos a oclusões parciais, como óculos de sol, máscaras faciais ou outros objetos que possam cobrir parcialmente as características faciais. Isto melhora o desempenho no mundo real, forçando o modelo a identificar indivíduos usando múltiplas características faciais, em vez de depender apenas de características distintivas que possam estar obscurecidas.
  • Implementação da Ultralytics: classify_augmentations()
  • Nota:
    • O erasing o aumento de dados vem com um scale, ratio, e value hiperparâmetros que não podem ser alterados com o implementação atual. Seus valores padrão são (0.02, 0.33), (0.3, 3.3), e 0, respectivamente, conforme declarado no PyTorch documentação.
    • O limite superior do erasing o hiperparâmetro é definido como 0.9 para evitar aplicar a transformação a todas as imagens.
erasing desativadoerasing ativado (exemplo 1)erasing ativado (exemplo 2)erasing ativado (exemplo 3)
augmentation_identityerasing_ex1_augmentationerasing_ex2_augmentationerasing_ex3_augmentation

Caraterísticas avançadas de aumento

Transformações de albumentações personalizadas (augmentations)

  • Tipo: list de transformações de Albumentações
  • Padrão: None
  • Utilização: Permite-lhe fornecer transformações personalizadas de Albumentations para aumentar os dados utilizando a API Python . Este parâmetro aceita uma lista de objectos de transformação de Albumentations que serão aplicados durante o treino em vez das transformações de Albumentations predefinidas.
  • Objetivo: Fornece um controlo refinado sobre as estratégias de aumento de dados, tirando partido da extensa biblioteca de transformações Albumentations. Isto é particularmente útil quando necessita de ampliações especializadas para além das opções YOLO incorporadas, tais como ajustes de cor avançados, injeção de ruído ou transformações específicas do domínio.
  • Implementação doUltralytics: Albumentações

Exemplo de albumentações personalizadas

import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Define custom Albumentations transforms
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
    A.CLAHE(clip_limit=4.0, p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
]

# Train with custom Albumentations transforms
model.train(
    data="coco8.yaml",
    epochs=100,
    augmentations=custom_transforms,  # Pass custom transforms
    imgsz=640,
)
import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Define advanced custom Albumentations transforms with specific parameters
advanced_transforms = [
    A.OneOf(
        [
            A.MotionBlur(blur_limit=7, p=1.0),
            A.MedianBlur(blur_limit=7, p=1.0),
            A.GaussianBlur(blur_limit=7, p=1.0),
        ],
        p=0.3,
    ),
    A.OneOf(
        [
            A.GaussNoise(var_limit=(10.0, 50.0), p=1.0),
            A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
        ],
        p=0.2,
    ),
    A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, brightness_by_max=True, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
    A.CoarseDropout(
        max_holes=8, max_height=32, max_width=32, min_holes=1, min_height=8, min_width=8, fill_value=0, p=0.2
    ),
]

# Train with advanced custom transforms
model.train(
    data="coco8.yaml",
    epochs=100,
    augmentations=advanced_transforms,
    imgsz=640,
)

Pontos-chave:

  • Apenas APIPython : Atualmente, as transformações de albumentações personalizadas são suportadas apenas pela API Python . Elas não podem ser especificadas por meio de arquivos de configuração CLI ou YAML.
  • Substitui as transformações predefinidas: Quando fornece transformações personalizadas através do augmentations substituem completamente as transformações predefinidas de Albumentations. As ampliações YOLO predefinidas (como mosaic, hsv_h, hsv_s, degrees, etc.) permanecem activos e são aplicados independentemente.
  • Compatibilidade de caixa delimitadora: Tenha cuidado ao usar transformações espaciais (transformações que alteram a geometria da imagem). Ultralytics lida com ajustes de caixa delimitadora automaticamente, 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ções sobre o desempenho: Adicionar demasiados aumentos ou utilizar transformações computacionalmente dispendiosas pode tornar a formação mais lenta. Comece com um conjunto pequeno e monitorize a velocidade de treino.

Casos de utilização comuns:

  • Imagiologia médica: Aplicar transformações especializadas, como deformações elásticas ou distorções de grelha para aumentar a imagem de raios X ou de ressonância magnética
  • Imagens aéreas/satélite: Utilizar transformações optimizadas para perspectivas aéreas
  • Condições de pouca luz: Aplique ajustes de ruído e brilho para simular uma iluminação difícil
  • Inspeção industrial: Adicione padrões semelhantes a defeitos ou variações de textura para aplicações de controlo de qualidade

Notas de compatibilidade:

  • Requer Albumentations versão 1.0.3 ou superior
  • Compatível com todas as tarefas de deteção e segmentação YOLO
  • Não aplicável a tarefas de classificação (a classificação utiliza uma conduta de aumento diferente)

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

FAQ

Existem muitas aumentações para escolher. Como sei quais usar?

A escolha dos aumentos certos depende do seu caso de uso e conjunto de dados específicos. 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 bom ponto de partida.
  • Se o ponto de vista da câmera for consistente e não mudar uma vez que o modelo for implementado, você provavelmente pode pular transformações geométricas como rotation, translation, scale, shear, ou perspective. No entanto, se o ângulo da câmera pode variar, e você precisa que o modelo seja mais robusto, é melhor manter esses aumentos.
  • Use o comando mosaic aumento de dados apenas se tiver objetos parcialmente ocluídos ou vários objetos por imagem for aceitável e não alterar o valor do rótulo. Alternativamente, pode manter mosaic ativo, mas aumente o close_mosaic valor para desativá-lo mais cedo no processo de treinamento.

Resumindo: mantenha a simplicidade. Comece com um pequeno conjunto de aumentos e adicione gradualmente mais conforme necessário. O objetivo é melhorar a generalização e a robustez do modelo, não complicar demais 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á em produção.

Ao iniciar um treinamento, vejo um albumentations: Blur[...] referência. Isso significa que o Ultralytics YOLO executa aumento de dados adicional, como blurring?

Se o albumentations pacote está instalado, o Ultralytics aplica automaticamente um conjunto de aumentos de imagem extra utilizando-o. Estes aumentos são tratados internamente e não requerem configuração adicional.

Você pode encontrar a lista completa de transformações aplicadas em nosso 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. Estes são aplicados propositadamente em baixas frequências para imitar artefatos visuais do mundo real, como efeitos de desfoque ou escala de cinza.

Também pode fornecer as suas próprias transformações de Albumentations personalizadas utilizando a API Python . Consulte a secção Funcionalidades de aumento avançadas para obter mais detalhes.

Ao iniciar um treinamento, não vejo nenhuma referência a albumentations. Por quê?

Verifique se o albumentations pacote está instalado. Caso contrário, pode instalá-lo executando pip install albumentations. Uma vez instalado, o pacote deve ser detectado e utilizado automaticamente pela Ultralytics.

Como personalizo meus aumentos?

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



📅C riado há 7 meses ✏️ Atualizado há 10 dias
picsalexRizwanMunawarglenn-jocheronuralpszrmiles-deans-ultralyticsLaughing-qartzuros

Comentários