Saltar para o conteúdo

Aumento de dados utilizando Ultralytics YOLO

Exemplo de ampliações de imagem

Introdução

O aumento de dados é uma técnica crucial na visão computacional que expande artificialmente seu conjunto de dados de treinamento aplicando várias transformações às imagens existentes. Ao treinar modelos de aprendizagem profunda como o Ultralytics YOLO, o aumento de dados ajuda a melhorar a robustez do modelo, reduz o sobreajuste e melhora a generalização para cenários do mundo real.

Porque é que a ampliação de dados é importante

O aumento de dados serve vários objectivos críticos na formação de modelos de visão por computador:

  • Conjunto de dados alargado: Ao criar variações de imagens existentes, pode aumentar efetivamente o tamanho do conjunto de dados de treino sem recolher novos dados.
  • Generalização melhorada: Os modelos aprendem a reconhecer objectos em várias condições, tornando-os mais robustos em aplicações do mundo real.
  • Redução do sobreajuste: Ao introduzir variabilidade nos dados de treino, os modelos têm menos probabilidades de memorizar caraterísticas específicas da imagem.
  • Desempenho melhorado: Os modelos treinados com o aumento adequado atingem normalmente uma melhor precisão nos conjuntos de validação e teste.

A implementação do Ultralytics YOLO fornece um conjunto abrangente de técnicas de aumento, cada uma delas servindo objectivos específicos e contribuindo para o desempenho do modelo de diferentes formas. Este guia irá explorar cada parâmetro de aumento em pormenor, ajudando-o a compreender quando e como utilizá-los eficazmente nos seus projectos.

Configurações de exemplo

É possível personalizar cada parâmetro utilizando a API Python , a interface de linha de comandosCLI) ou um ficheiro de configuração. Abaixo estão exemplos de como configurar a ampliação de dados em cada método.

Exemplos de configuração

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 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

Utilizar um ficheiro de configuração

Pode definir todos os parâmetros de formação, incluindo as ampliações, num ficheiro de configuração YAML (por exemplo, train_custom.yaml). O mode só é necessário quando se utiliza o CLI. Este novo ficheiro YAML irá então substituir a predefinição localizado no ultralytics pacote.

# 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

De seguida, inicie a formação com a API Python :

Exemplo de comboio

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

Ampliações do espaço de cor

Ajuste da tonalidade (hsv_h)

  • Gama: 0.0 - 1.0
  • Predefinição: 0.015
  • Utilização: Altera as cores da imagem, preservando as suas relações. O hsv_h O hiperparâmetro define a magnitude do desvio, sendo o ajustamento final escolhido aleatoriamente entre -hsv_h e hsv_h. Por exemplo, com hsv_h=0.3, o turno é selecionado aleatoriamente dentro de-0.3 para 0.3. Para valores superiores a 0.5A mudança de tonalidade envolve a roda de cores, por isso os aumentos têm o mesmo aspeto entre 0.5 e -0.5.
  • Objetivo: Particularmente útil para cenários exteriores onde as condições de iluminação podem afetar drasticamente a aparência do objeto. Por exemplo, uma banana pode parecer mais amarela sob luz solar intensa, mas mais esverdeada no interior.
  • Implementação doUltralytics: RandomHSV
-0.5 -0.25 0.0 0.25 0.5
hsv_h_-0.5_augmentação hsv_h_-0.25_augmentation augmentation_identity hsv_h_0.25_augmentação hsv_h_-0.5_augmentação

Ajuste da saturação (hsv_s)

  • Gama: 0.0 - 1.0
  • Predefinição: 0.7
  • Utilização: Modifica a intensidade das cores na imagem. O hsv_h O hiperparâmetro define a magnitude do desvio, sendo o ajustamento 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 climatéricas e definições da 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 doUltralytics: RandomHSV
-1.0 -0.5 0.0 0.5 1.0
hsv_s_-1_augmentação hsv_s_-0.5_augmentação augmentation_identity hsv_s_0.5_augmentação hsv_s_1_augmentação

Ajuste do brilho (hsv_v)

  • Gama: 0.0 - 1.0
  • Predefinição: 0.4
  • Utilização: Altera a luminosidade da imagem. O hsv_v O hiperparâmetro define a magnitude do desvio, sendo o ajustamento 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 à sombra.
  • Implementação doUltralytics: RandomHSV
-1.0 -0.5 0.0 0.5 1.0
hsv_v_-1_augmentação hsv_v_-0.5_augmentação augmentation_identity hsv_v_0.5_augmentação hsv_v_1_augmentação

Transformações geométricas

Rotação (degrees)

  • Gama: 0.0 para 180
  • Predefinição: 0.0
  • Utilização: Roda as imagens de forma aleatória dentro do intervalo especificado. O degrees O 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 em que os objectos podem aparecer em diferentes orientações. Por exemplo, em imagens aéreas de drones, os veículos podem estar orientados em qualquer direção, o que exige que os modelos reconheçam os objectos independentemente da sua rotação.
  • Implementação doUltralytics: RandomPerspective
-180 -90 0.0 90 180
graus_-180_augmentação graus_-90_augmentação augmentation_identity graus_90_augmentação graus_180_augmentação

Tradução (translate)

  • Gama: 0.0 - 1.0
  • Predefinição: 0.1
  • Utilização: Desloca as imagens horizontal e verticalmente por uma fração aleatória do tamanho da imagem. O translate O hiperparâmetro define a magnitude do desvio, com o ajustamento final escolhido aleatoriamente duas vezes (uma para cada eixo) dentro do intervalo -translate e translate. Por exemplo, com translate=0.5, a traduçã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 objectos 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, as peças do automóvel podem aparecer total ou parcialmente no enquadramento, dependendo da posição e da distância do fotógrafo. O aumento da tradução ensinará o modelo a reconhecer estas caraterísticas, independentemente da sua integridade ou posição.
  • Implementação doUltralytics: RandomPerspective
  • Nota: Para simplificar, as traduções aplicadas a seguir são sempre as mesmas para ambos os casos x e y eixos. Valores -1.0 e 1.0não são mostrados, pois traduziriam a imagem completamente para fora do quadro.
-0.5 -0.25 0.0 0.25 0.5
traduzir_-0.5_augmentação traduzir_-0.25_augmentação augmentation_identity traduzir_0.25_augmentação traduzir_0.5_augmentação

Escala (scale)

  • Gama: ≥0.0
  • Predefinição: 0.5
  • Utilização: Redimensiona imagens por um fator aleatório dentro do intervalo especificado. O scale O hiperparâmetro define o fator de escala, sendo o ajustamento final escolhido aleatoriamente entre 1-scale e 1+scale. Por exemplo, com scale=0.5, a escala é selecionada aleatoriamente dentro de0.5 para 1.5.
  • Objetivo: Permite que os modelos lidem com objectos 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 doUltralytics: RandomPerspective
  • Nota:
    • O valor -1.0 não é mostrado porque faria desaparecer a imagem, enquanto que 1.0 resulta simplesmente num zoom de 2x.
    • Os valores apresentados na tabela abaixo são os aplicados através do hiperparâmetro scalee não o fator de escala final.
    • Se scale é superior a 1.0a imagem pode ser 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 dentro de-2.0 para 4.0. Se for escolhido um valor negativo, a imagem é invertida.
-0.5 -0.25 0.0 0.25 0.5
escala_-0.5_augmentação escala_-0,25_augmentação augmentation_identity escala_0.25_augmentação escala_0.5_augmentação

Cisalhamento (shear)

  • Gama: -180 para +180
  • Predefiniçã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. A transformação shear O hiperparâmetro define o ângulo de corte, com o ajustamento final escolhido aleatoriamente entre -shear e shear. Por exemplo, com shear=10.0, o corte é 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 visualização causadas por ligeiras inclinações ou pontos de vista oblíquos. Por exemplo, na monitorização do tráfego, objectos como carros e sinais de trânsito podem aparecer inclinados devido a posicionamentos de câmara não perpendiculares. A aplicação do aumento de cisalhamento garante que o modelo aprende a reconhecer objectos apesar dessas distorções.
  • Implementação doUltralytics: RandomPerspective
  • Nota:
    • shear podem distorcer rapidamente a imagem, pelo que se recomenda 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 objectos ao alterar os seus ângulos, mantendo os lados opostos paralelos.
-10 -5 0.0 5 10
cisalhamento_-10_augmentação cisalhamento_-5_augmentação augmentation_identity cisalhamento_5_augmentação cisalhamento_10_augmentação

Perspetiva (perspective)

  • Gama: 0.0 - 0.001
  • Predefinição: 0.0
  • Utilização: Aplica uma transformação de perspetiva completa ao longo dos eixos x e y, simulando a forma como os objectos aparecem quando vistos de diferentes profundidades ou ângulos. O perspective O hiperparâmetro define a magnitude da perspetiva, com o ajustamento final escolhido aleatoriamente entre -perspective e perspective. Por exemplo, com perspective=0.001, a perspetiva é 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 da perspetiva é crucial para lidar com mudanças extremas de ponto de vista, especialmente em cenários em que os objectos aparecem encurtados ou distorcidos devido a mudanças de perspetiva. Por exemplo, na deteção de objectos com base em drones, os edifícios, as estradas e os veículos podem aparecer esticados ou comprimidos, dependendo da inclinação e da altitude do drone. Ao aplicar transformações de perspetiva, os modelos aprendem a reconhecer objectos apesar destas distorções induzidas pela perspetiva, melhorando a sua robustez em implementações no mundo real.
  • Implementação doUltralytics: RandomPerspective
-0.001 -0.0005 0.0 0.0005 0.001
perspectiva_-0.001_augmentação perspectiva_-0.0005_augmentação augmentation_identity perspectiva_0.0005_augmentação perspectiva_0.001_augmentação

Virar para cima/baixo (flipud)

  • Gama: 0.0 - 1.0
  • Predefinição: 0.0
  • Utilização: Efectua 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 objectos. O hiperparâmetro flipud define a probabilidade de aplicar a transformação, com um valor de flipud=1.0 assegurando que todas as imagens são invertidas e um valor de flipud=0.0 desativar totalmente a transformação. Por exemplo, com flipud=0.5cada imagem tem 50% de hipóteses de ser virada ao contrário.
  • Objetivo: Útil para cenários em que os objectos podem aparecer de cabeça para baixo. Por exemplo, em sistemas de visão robótica, os objectos em tapetes rolantes ou braços robóticos podem ser apanhados e colocados em várias orientações. A inversão vertical ajuda o modelo a reconhecer objectos independentemente do seu posicionamento de cima para baixo.
  • Implementação doUltralytics: RandomFlip
flipud desligado flipud sobre
augmentation_identity flipud_on_augmentation

Virar à esquerda-direita (fliplr)

  • Gama: 0.0 - 1.0
  • Predefinição: 0.5
  • Utilização: Efectua 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 objectos que aparecem em orientações espelhadas. A transformação fliplr O hiperparâmetro define a probabilidade de aplicar a transformação, com um valor de fliplr=1.0 assegurando que todas as imagens são invertidas e um valor de fliplr=0.0 desativar totalmente a transformação. Por exemplo, com fliplr=0.5cada imagem tem 50% de hipóteses de ser invertida da esquerda para a direita.
  • Objetivo: A inversão horizontal é amplamente utilizada na deteção de objectos, na estimativa de pose e no reconhecimento facial para melhorar a robustez face a variações entre a esquerda e a direita. Por exemplo, na condução autónoma, os veículos e os peões podem aparecer em ambos os lados da estrada, e a inversão horizontal ajuda o modelo a reconhecê-los igualmente bem em ambas as orientações.
  • Implementação doUltralytics: RandomFlip
fliplr desligado fliplr sobre
augmentation_identity fliplr_em_augmentação

Troca de canal BGR (bgr)

  • Gama: 0.0 - 1.0
  • Predefiniçã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 O hiperparâmetro define a probabilidade de aplicar a transformação, com bgr=1.0 garantir que todas as imagens passam pela troca de canal e bgr=0.0 desactivando-o. Por exemplo, com bgr=0.5cada imagem tem 50% de hipóteses de ser convertida de RGB para BGR.
  • Objetivo: Aumenta a robustez a diferentes ordenações de canais de cor. Por exemplo, quando se treinam modelos que têm de funcionar em vários sistemas de câmaras e bibliotecas de imagens em que os formatos RGB e BGR podem ser utilizados de forma inconsistente, ou quando se implementam modelos em ambientes em que o formato da cor de entrada pode ser diferente dos dados de treino.
  • Implementação daUltralytics: Formato
bgr desligado bgr sobre
augmentation_identity bgr_em_augmentação

Mosaico (mosaic)

  • Gama: 0.0 - 1.0
  • Predefinição: 1.0
  • Utilização: Combina quatro imagens de treino numa só. O mosaic O hiperparâmetro define a probabilidade de aplicar a transformação, com mosaic=1.0 assegurar que todas as imagens são combinadas e mosaic=0.0 desativar a transformação. Por exemplo, com mosaic=0.5cada imagem tem 50% de hipóteses de ser combinada com três outras imagens.
  • Objetivo: Altamente eficaz para melhorar a deteção de pequenos objectos e a compreensão do contexto. Por exemplo, em projectos de conservação da vida selvagem em que os animais podem aparecer a várias distâncias e escalas, o aumento do mosaico ajuda o modelo a aprender a reconhecer a mesma espécie em diferentes tamanhos, oclusões parciais e contextos ambientais, criando artificialmente diversas amostras de treino a partir de dados limitados.
  • Implementação doUltralytics: Mosaico
  • Nota:
    • Mesmo que o mosaic o aumento torna o modelo mais robusto, mas também pode tornar o processo de formação mais difícil.
    • O mosaic pode ser desativado perto do final da formação, 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, o mosaic será desativado após 180 épocas. Se close_mosaic é definido como 0, o mosaic O aumento de capacidade será ativado durante todo o processo de formação.
    • O centro do mosaico gerado é determinado utilizando valores aleatórios, e pode estar dentro ou fora da imagem.
    • A implementação atual do mosaic combina 4 imagens escolhidas aleatoriamente do conjunto de dados. Se o conjunto de dados for pequeno, a mesma imagem pode ser utilizada várias vezes no mesmo mosaico.
mosaic desligado mosaic sobre
augmentation_identity mosaico_em_augmentação

Mistura (mixup)

  • Gama: 0.0 - 1.0
  • Predefinição: 0.0
  • Utilização: Mistura duas imagens e as suas etiquetas com uma determinada probabilidade. O mixup O hiperparâmetro define a probabilidade de aplicar a transformação, com mixup=1.0 garantir que todas as imagens são misturadas e mixup=0.0 desativar a transformação. Por exemplo, com mixup=0.5cada imagem tem 50% de hipóteses de ser misturada com outra imagem.
  • Objetivo: Melhorar a robustez do modelo e reduzir o sobreajuste. Por exemplo, nos sistemas de reconhecimento de produtos de retalho, a mistura ajuda o modelo a aprender caraterísticas mais robustas, misturando imagens de produtos diferentes, ensinando-o a identificar itens mesmo quando estão parcialmente visíveis ou obscurecidos por outros produtos em prateleiras de lojas lotadas.
  • Implementação daUltralytics: Mistura
  • Nota:
    • O mixup é um valor aleatório selecionado 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 desligado Segunda imagem, mixup desligado mixup sobre
augmentation_mixup_identity_1 augmentation_mixup_identity_2 mixup_on_augmentation

CutMix (cutmix)

  • Gama: 0.0 - 1.0
  • Predefinição: 0.0
  • Utilização: Corta uma região retangular de uma imagem e cola-a noutra imagem com uma determinada probabilidade. O cutmix O hiperparâmetro define a probabilidade de aplicar a transformação, com cutmix=1.0 garantir que todas as imagens sejam submetidas a esta transformação e cutmix=0.0 desactivando-o completamente. Por exemplo, com cutmix=0.5cada imagem tem 50% de hipóteses de ter uma região substituída por um fragmento de outra imagem.
  • Objetivo: Melhora o desempenho do modelo através da criação de cenários de oclusão realistas, mantendo a integridade das caraterísticas 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 estes estão parcialmente ocluídos por outros objectos, melhorando a precisão da deteção em ambientes complexos do mundo real com objectos sobrepostos.
  • Implementação doUltralytics: CutMix
  • Nota:
    • O tamanho e a posição da região de corte são determinados aleatoriamente para cada aplicação.
    • Ao contrário da mistura, que mistura globalmente os valores dos píxeis, cutmix mantém as intensidades originais dos píxeis nas regiões de corte, preservando as caraterísticas locais.
    • Uma região é colada na imagem alvo apenas se não se sobrepuser a nenhuma caixa delimitadora existente. Além disso, apenas as caixas delimitadoras que retêm pelo menos 0.1 (10%) da sua área original na região colada são preservados.
    • Este limite mínimo da área da caixa delimitadora não pode ser alterado com a implementação atual e é definido como 0.1 por defeito.
Primeira imagem, cutmix desligado Segunda imagem, cutmix desligado cutmix sobre
augmentation_cutmix_identity_1 augmentation_cutmix_identity_2 cutmix_on_augmentation

Ampliações específicas da segmentação

Copiar-Colar (copy_paste)

  • Gama: 0.0 - 1.0
  • Predefinição: 0.0
  • Utilização: Apenas funciona para tarefas de segmentação, este aumento copia objectos dentro ou entre imagens com base numa probabilidade especificada, controlada pelo copy_paste_mode. O copy_paste O hiperparâmetro define a probabilidade de aplicar a transformação, com copy_paste=1.0 garantir que todas as imagens são copiadas e copy_paste=0.0 desativar a transformação. Por exemplo, com copy_paste=0.5cada imagem tem 50% de hipóteses de ter objectos copiados de outra imagem.
  • Objetivo: Particularmente útil para tarefas de segmentação de exemplos e classes de objectos raros. Por exemplo, na deteção de defeitos industriais, em que certos tipos de defeitos aparecem com pouca frequência, o aumento de copiar-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 exigir amostras adicionais de defeitos.
  • Implementação doUltralytics: CopyPaste
  • Nota:
    • Conforme ilustrado no gif abaixo, o copy_paste pode ser utilizado para copiar objectos de uma imagem para outra.
    • Quando um objeto é copiado, independentemente do copy_paste_modeA sua intersecção sobre a área (IoA) é calculada com todos os objectos da imagem de origem. Se todos os IoA forem inferiores a 0.3 (30%), o objeto é colado na imagem de destino. Se apenas um dos IoA estiver acima de 0.3o objeto não é colado na imagem de destino.
    • O limiar IoA não pode ser alterado com a implementação atual e é definido como 0.3 por defeito.
copy_paste desligado copy_paste com copy_paste_mode=flip Visualize o copy_paste processo
augmentation_identity copiar_colar_na_augmentação copy_paste_augmentation_gif_demo

Modo Copiar-Colar (copy_paste_mode)

  • Opções: 'flip', 'mixup'
  • Predefinição: 'flip'
  • Utilização: Determina o método utilizado para copiar-colar aumento. Se estiver definido para 'flip'os objectos provêm da mesma imagem, enquanto que 'mixup' permite que os objectos sejam copiados de diferentes imagens.
  • Objetivo: Permite flexibilidade na forma como os objectos copiados são integrados nas imagens de destino.
  • Implementação doUltralytics: CopyPaste
  • Nota:
    • O princípio IoA é o mesmo para ambos copy_paste_modemas a forma como os objectos são copiados é diferente.
    • Dependendo do tamanho da imagem, os objectos podem por vezes ser copiados parcial ou totalmente fora da moldura.
    • Dependendo da qualidade das anotações de polígonos, os objectos copiados podem ter ligeiras variações de forma em comparação com os originais.
Imagem de referência Imagem selecionada para copy_paste copy_paste com copy_paste_mode=mixup
augmentation_mixup_identity_2 augmentation_identity copiar_colar_modo_mixup_augmentação

Ampliações específicas da classificação

Aumento automático (auto_augment)

  • Opções: 'randaugment', 'autoaugment', 'augmix', None
  • Predefinição: 'randaugment'
  • Utilização: Aplica políticas de aumento automatizadas para classificação. O 'randaugment' utiliza a opção RandAugment, 'autoaugment' utiliza AutoAugment, e 'augmix' utiliza AugMix. Definir para None desactiva o aumento automático.
  • Objetivo: Optimiza automaticamente as estratégias de aumento para as tarefas de classificação. As diferenças são as seguintes:
    • AutoAumento: Este modo aplica políticas de aumento predefinidas aprendidas em conjuntos de dados como ImageNet, CIFAR10 e SVHN. Os utilizadores podem selecionar estas políticas existentes, mas não podem treinar novas políticas no Torchvision. Para descobrir estratégias de aumento óptimas para conjuntos de dados específicos, seriam necessárias bibliotecas externas ou implementações personalizadas. Referência ao documento AutoAugment.
    • RandAugment: Aplica uma seleção aleatória de transformações com magnitude uniforme. Esta abordagem reduz a necessidade de uma fase de pesquisa extensiva, tornando-a mais eficiente do ponto de vista computacional, ao mesmo tempo que aumenta a robustez do modelo. Referência ao documento RandAugment.
    • AugMix: O 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 documento sobre o AugMix.
  • Implementação doUltralytics: 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.
    • Pode consultar este artigo que compara os três métodos em pormenor.

Apagamento aleatório (erasing)

  • Gama: 0.0 - 0.9
  • Predefinição: 0.4
  • Utilização: Apaga aleatoriamente partes da imagem durante o treino de classificação. O erasing O hiperparâmetro define a probabilidade de aplicar a transformação, com erasing=0.9 assegurando que quase todas as imagens são apagadas e erasing=0.0 desativar a transformação. Por exemplo, com erasing=0.5cada imagem tem 50% de hipóteses de ter uma parte apagada.
  • Objetivo: Ajuda os modelos a aprender caraterísticas robustas e evita a dependência excessiva de regiões específicas da imagem. Por exemplo, nos 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 objectos que possam cobrir parcialmente as caraterísticas faciais. Isto melhora o desempenho no mundo real ao forçar o modelo a identificar indivíduos utilizando múltiplas caraterísticas faciais em vez de depender apenas de caraterísticas distintivas que podem ser obscurecidas.
  • Implementação doUltralytics: classify_augmentations()
  • Nota:
    • O erasing O aumento de volume vem com um scale, ratioe value hiperparâmetros que não podem ser alterados com o aplicação atual. Os seus valores por defeito são (0.02, 0.33), (0.3, 3.3)e 0respetivamente, como indicado 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 desligado erasing ligado (exemplo 1) erasing ligado (exemplo 2) erasing ligado (exemplo 3)
augmentation_identity apagar_ex1_augmentação apagar_ex2_augmentação apagar_ex3_augmentação

FAQ

Há demasiadas ampliações para escolher. Como é que sei quais devo usar?

A escolha das ampliações corretas depende do seu caso de utilização específico e do conjunto de dados. Eis algumas diretrizes gerais para o ajudar a decidir:

  • Na maioria dos casos, pequenas variações de cor e brilho são benéficas. Os valores predefinidos para hsv_h, hsv_se hsv_v são um bom ponto de partida.
  • Se o ponto de vista da câmara for consistente e não mudar quando o modelo for implementado, é provável que possa ignorar as transformações geométricas, tais como rotation, translation, scale, shear, ou perspective. No entanto, se o ângulo da câmara puder variar e for necessário que o modelo seja mais robusto, é preferível manter estas ampliações.
  • Utilizar o mosaic apenas se a existência de objectos parcialmente ocluídos ou de múltiplos objectos por imagem for aceitável e não alterar o valor da etiqueta. Em alternativa, pode manter mosaic ativa, mas aumentar a close_mosaic para o desativar mais cedo no processo de formação.

Resumindo: manter 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, e não complicar demasiado o processo de formação. Além disso, certifique-se de que os aumentos aplicados reflectem a mesma distribuição de dados que o modelo irá encontrar na produção.

Ao iniciar uma formação, a ver um albumentations: Blur[...] referência. Isso significa que Ultralytics YOLO efectua aumentos adicionais, como a desfocagem?

Se o albumentations estiver instalado, Ultralytics aplica automaticamente um conjunto de aumentos de imagem extra utilizando-o. Estas ampliações são tratadas internamente e não requerem qualquer configuração adicional.

Pode encontrar a lista completa das transformações aplicadas na nossa documentação técnicabem como no nosso Guia de integração de albumentações. Note-se que apenas os aumentos com uma probabilidade p superior a 0 estão activos. Estes são aplicados propositadamente a baixas frequências para imitar artefactos visuais do mundo real, como efeitos de desfocagem ou de escala de cinzentos.

Ao iniciar uma formação, não vejo qualquer referência a albumentações. Porquê?

Verificar se o albumentations está instalado. Se não estiver, pode instalá-lo executando pip install albumentations. Uma vez instalado, o pacote deve ser automaticamente detectado e utilizado pelo Ultralytics.



📅C riado há 1 mês ✏️ Atualizado há 23 dias

Comentários