Aumento de Dados usando Ultralytics YOLO

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_hhiperparâmetro define a magnitude do deslocamento, com o ajuste final escolhido aleatoriamente entre-hsv_hehsv_h. Por exemplo, comhsv_h=0.3, o deslocamento é selecionado aleatoriamente dentro de-0.3para0.3. Para valores acima de0.5, a mudança de matiz envolve a roda de cores, e é por isso que os aumentos parecem os mesmos entre0.5e-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.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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_shiperparâmetro define a magnitude do deslocamento, com o ajuste final escolhido aleatoriamente entre-hsv_sehsv_s. Por exemplo, comhsv_s=0.7, a intensidade é selecionada aleatoriamente dentro de-0.7para0.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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ajuste de Brilho (hsv_v)
- Intervalo:
0.0-1.0 - Padrão:
0.4 - Utilização: Altera o brilho da imagem. O
hsv_vhiperparâmetro define a magnitude do deslocamento, com o ajuste final escolhido aleatoriamente entre-hsv_vehsv_v. Por exemplo, comhsv_v=0.4, a intensidade é selecionada aleatoriamente dentro de-0.4para0.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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Transformações Geométricas
Rotação (degrees)
- Intervalo:
0.0para180 - Padrão:
0.0 - Utilização: Roda as imagens aleatoriamente dentro do intervalo especificado. O
degreeshiperparâmetro define o ângulo de rotação, com o ajuste final escolhido aleatoriamente entre-degreesedegrees. Por exemplo, comdegrees=10.0, a rotação é selecionada aleatoriamente dentro de-10.0para10.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 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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
translatehiperparâmetro define a magnitude do deslocamento, com o ajuste final escolhido duas vezes (uma para cada eixo) dentro do intervalo-translateetranslate. Por exemplo, comtranslate=0.5, a translação é selecionada aleatoriamente dentro de-0.5para0.5no 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
xeyeixos. Valores-1.0e1.0não são mostrados, pois traduziriam a imagem completamente para fora do frame.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Escala (scale)
- Intervalo: ≥
0.0 - Padrão:
0.5 - Utilização: Redimensiona as imagens por um fator aleatório dentro do intervalo especificado. O
scalehiperparâmetro define o fator de escala, com o ajuste final escolhido aleatoriamente entre1-scalee1+scale. Por exemplo, comscale=0.5, o escalonamento é selecionado aleatoriamente dentro de0.5para1.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.0não é mostrado, pois faria a imagem desaparecer, enquanto1.0simplesmente 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 que1.0, a imagem pode ser muito pequena ou invertida, pois o fator de escala é escolhido aleatoriamente entre1-scalee1+scale. Por exemplo, comscale=3.0, o escalonamento é selecionado aleatoriamente dentro de-2.0para4.0. Se um valor negativo for escolhido, a imagem é invertida.
- O valor
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Cisalhamento (shear)
- Intervalo:
-180para+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
shearhiperparâmetro define o ângulo de cisalhamento, com o ajuste final escolhido aleatoriamente entre-sheareshear. Por exemplo, comshear=10.0, o cisalhamento é selecionado aleatoriamente dentro de-10para10no 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:
shearvalores 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 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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
perspectivehiperparâmetro define a magnitude da perspectiva, com o ajuste final escolhido aleatoriamente entre-perspectiveeperspective. Por exemplo, comperspective=0.001, a perspectiva é selecionada aleatoriamente dentro de-0.001para0.001no 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.0005 | 0.0 | 0.0005 | 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.0garantindo que todas as imagens sejam invertidas e um valor deflipud=0.0desativando a transformação completamente. Por exemplo, comflipud=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 desativado | flipud em |
|---|---|
![]() | ![]() |
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
fliplrhiperparâmetro define a probabilidade de aplicar a transformação, com um valor defliplr=1.0garantindo que todas as imagens sejam invertidas e um valor defliplr=0.0desativando a transformação completamente. Por exemplo, comfliplr=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 desativado | fliplr em |
|---|---|
![]() | ![]() |
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
bgrhiperparâmetro define a probabilidade de aplicar a transformação, combgr=1.0garantindo que todas as imagens passem pela troca de canais ebgr=0.0desativando-o. Por exemplo, combgr=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 desativado | bgr em |
|---|---|
![]() | ![]() |
Mosaic (mosaic)
- Intervalo:
0.0-1.0 - Padrão:
1.0 - Utilização: Combina quatro imagens de treino numa só. O
mosaichiperparâmetro define a probabilidade de aplicar a transformação, commosaic=1.0garantindo que todas as imagens sejam combinadas emosaic=0.0desativando a transformação. Por exemplo, commosaic=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
mosaico aumento de dados torna o modelo mais robusto, também pode tornar o processo de treino mais desafiador. - O
mosaico aumento de dados pode ser desativado perto do final do treino definindoclose_mosaicpara o número de épocas antes da conclusão, quando deve ser desligado. Por exemplo, seepochsé definido como200eclose_mosaicé definido como20, a funçãomosaico aumento de dados será desativado após180épocas. Seclose_mosaicé definido como0, a funçãomosaico 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
mosaico 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.
- Mesmo que o
mosaic desativado | mosaic em |
|---|---|
![]() | ![]() |
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
mixuphiperparâmetro define a probabilidade de aplicar a transformação, commixup=1.0garantindo que todas as imagens sejam misturadas emixup=0.0desativando a transformação. Por exemplo, commixup=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
mixupratio é um valor aleatório escolhido de umnp.random.beta(32.0, 32.0)distribuição beta, o que significa que cada imagem contribui com aproximadamente 50%, com ligeiras variações.
- O
Primeira imagem, mixup desativado | Segunda imagem, mixup desativado | mixup em |
|---|---|---|
![]() | ![]() | ![]() |
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
cutmixhiperparâmetro define a probabilidade de aplicar a transformação, comcutmix=1.0garantindo que todas as imagens passem por esta transformação ecutmix=0.0desativando-o completamente. Por exemplo, comcutmix=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,
cutmixmanté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.1por padrão.
Primeira imagem, cutmix desativado | Segunda imagem, cutmix desativado | cutmix em |
|---|---|---|
![]() | ![]() | ![]() |
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. Ocopy_pastehiperparâmetro define a probabilidade de aplicar a transformação, comcopy_paste=1.0garantindo que todas as imagens sejam copiadas ecopy_paste=0.0desativando a transformação. Por exemplo, comcopy_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_pasteo 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 abaixo0.3(30%), o objeto é colado na imagem de destino. Se apenas um dos IoA estiver acima0.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.3por padrão.
- Como ilustrado no GIF abaixo, o
copy_paste desativado | copy_paste ativado com copy_paste_mode=flip | Visualize o copy_paste processo |
|---|---|---|
![]() | ![]() | ![]() |
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.
- O princípio IoA é o mesmo para ambos
| Imagem de referência | Imagem escolhida para copy_paste | copy_paste ativado com copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
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 paraNonedesativa 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
erasinghiperparâmetro define a probabilidade de aplicar a transformação, comerasing=0.9garantindo que quase todas as imagens sejam apagadas eerasing=0.0desativando a transformação. Por exemplo, comerasing=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
erasingo aumento de dados vem com umscale,ratio, evaluehiperparâ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), e0, respectivamente, conforme declarado no PyTorch documentação. - O limite superior do
erasingo hiperparâmetro é definido como0.9para evitar aplicar a transformação a todas as imagens.
- O
erasing desativado | erasing ativado (exemplo 1) | erasing ativado (exemplo 2) | erasing ativado (exemplo 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Caraterísticas avançadas de aumento
Transformações de albumentações personalizadas (augmentations)
- Tipo:
listde 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
augmentationssubstituem completamente as transformações predefinidas de Albumentations. As ampliações YOLO predefinidas (comomosaic,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, ehsv_vsã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, ouperspective. 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
mosaicaumento 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 mantermosaicativo, mas aumente oclose_mosaicvalor 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.
















































