Aumento de dados usando Ultralytics YOLO#
Introdução#
Aumento de dados é uma técnica crucial em visão computacional que expande artificialmente o teu conjunto de dados de treino aplicando várias transformações às imagens existentes. Ao treinar modelos de deep learning como Ultralytics YOLO, o aumento de dados ajuda a melhorar a robustez do modelo, reduz o sobreajuste (overfitting) e melhora a generalização para cenários do mundo real.
Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀
Porque é que o Aumento de Dados é Importante#
O aumento de dados serve vários propósitos críticos no treino de modelos de visão computacional:
- Conjunto de Dados Expandido: Ao criar variações de imagens existentes, podes aumentar eficazmente o tamanho do teu conjunto de dados de treino sem recolher novos dados.
- Generalização Melhorada: Os modelos aprendem a reconhecer objetos sob várias condições, tornando-se mais robustos em aplicações do mundo real.
- Overfitting Reduzido: Ao introduzir variabilidade nos dados de treino, os modelos têm menos probabilidade de memorizar características específicas das imagens.
- Desempenho Aprimorado: Modelos treinados com aumento adequado normalmente alcançam 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 servindo a propósitos específicos e contribuindo para o desempenho do modelo de diferentes maneiras. Este guia explora as configurações de aumento abaixo, ajudando-te a entender quando e como usá-las efetivamente nos teus projetos.
Configurações de Exemplo#
Podes personalizar cada parâmetro usando a API Python, a interface de linha de comando (CLI) ou um ficheiro de configuração. Abaixo estão exemplos de como configurar o aumento de dados em cada método.
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Training with custom augmentation parameters
model.train(data="coco8.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)
# Training with every configurable augmentation disabled (disabled values omitted for clarity)
model.train(
data="coco8.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="coco8.yaml", epochs=100, augmentations=custom_transforms)As transformações listadas nesta página são aquelas que controlas através dos argumentos de treino. O Ultralytics também aplica um pequeno conjunto do Albumentations — desfoque, desfoque mediano, escala de cinza e CLAHE, cada um em p=0.01 — sempre que o pacote albumentations estiver instalado, e nenhum argumento em default.yaml o desativa. Desinstala o pacote para o remover, ou passa a tua própria lista para augmentations para o substituir.
Usando um ficheiro de configuração#
Podes definir todos os parâmetros de treino, incluindo aumentos, num ficheiro de configuração YAML (por exemplo, train_custom.yaml). O parâmetro mode só é necessário quando usas a CLI. Este novo ficheiro YAML irá então substituir o predefinido localizado no pacote ultralytics.
# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo26n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5Depois, inicia o treino com a API Python:
from ultralytics import YOLO
# Load a COCO-pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Train the model with custom configuration
model.train(cfg="train_custom.yaml")Aumentos de Espaço de Cor#
Ajuste de Matiz (hsv_h)#
- Intervalo:
0.0-1.0 - Predefinição:
0.015 - Utilização: Altera as cores da imagem preservando as suas relações. O hiperparâmetro
hsv_hdefine a magnitude do desvio, sendo o ajuste final escolhido aleatoriamente entre-hsv_hehsv_h. Por exemplo, comhsv_h=0.3, o desvio é selecionado aleatoriamente dentro de-0.3até0.3. Para valores acima de0.5, o desvio de matiz dá a volta na roda de cores, e é por isso que os aumentos parecem iguais entre0.5e-0.5. - Propósito: Particularmente útil para cenários ao ar livre onde as condições de iluminação podem afetar drasticamente a aparência dos objetos. Por exemplo, uma banana pode parecer mais amarela sob luz solar intensa, mas mais esverdeada em ambientes fechados.
- Implementação do Ultralytics: RandomHSV
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ajuste de Saturação (hsv_s)#
- Intervalo:
0.0-1.0 - Predefinição:
0.7 - Utilização: Modifica a intensidade das cores na imagem. O hiperparâmetro
hsv_sdefine a magnitude do desvio, sendo o ajuste final escolhido aleatoriamente entre-hsv_sehsv_s. Por exemplo, comhsv_s=0.7, a intensidade é selecionada aleatoriamente dentro de-0.7até0.7. - Propósito: Ajuda os modelos a lidar com condições meteorológicas variáveis e definições de câmara. Por exemplo, um sinal de trânsito vermelho pode parecer muito vívido num dia de sol, mas parecer baço e desbotado em condições de nevoeiro.
- Implementação do Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ajuste de Brilho (hsv_v)#
- Intervalo:
0.0-1.0 - Predefinição:
0.4 - Utilização: Altera o brilho da imagem. O hiperparâmetro
hsv_vdefine a magnitude do desvio, sendo o ajuste final escolhido aleatoriamente entre-hsv_vehsv_v. Por exemplo, comhsv_v=0.4, a intensidade é selecionada aleatoriamente dentro de-0.4até0.4. - Propósito: Essencial para treinar modelos que precisam de funcionar em diferentes condições de iluminação. Por exemplo, uma maçã vermelha pode parecer brilhante à luz do sol, mas muito mais escura na sombra.
- Implementação do Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Transformações Geométricas#
Rotação (degrees)#
- Intervalo:
0.0a180 - Predefinição:
0 - Utilização: Roda as imagens aleatoriamente dentro do intervalo especificado. O hiperparâmetro
degreesdefine o ângulo de rotação, sendo o ajuste final escolhido aleatoriamente entre-degreesedegrees. Por exemplo, comdegrees=10.0, a rotação é selecionada aleatoriamente dentro de-10.0até10.0. - Propósito: Crucial para aplicações onde os objetos podem aparecer em diferentes orientações. Por exemplo, em imagens de drones aéreos, os veículos podem estar orientados em qualquer direção, exigindo que os modelos reconheçam os objetos independentemente da sua rotação.
- Implementação do Ultralytics: RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Translação (translate)#
- Intervalo:
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 hiperparâmetro
translatedefine a magnitude do desvio, sendo o ajuste final escolhido aleatoriamente duas vezes (uma para cada eixo) dentro do intervalo-translateetranslate. Por exemplo, comtranslate=0.5, a translação é selecionada aleatoriamente dentro de-0.5até0.5no eixo x, e outro valor aleatório independente é selecionado dentro do mesmo intervalo no eixo y. - Propósito: Ajuda os modelos a aprender a detetar objetos parcialmente visíveis e melhora a robustez em relação à posição do objeto. Por exemplo, em aplicações de avaliação de danos em veículos, peças de automóveis podem aparecer total ou parcialmente no enquadramento, dependendo da posição e distância do fotógrafo; o aumento de translação ensinará o modelo a reconhecer estas características independentemente da sua completude ou posição.
- Implementação do Ultralytics: RandomPerspective
- Nota: Por simplicidade, as translações aplicadas abaixo são as mesmas em cada momento para ambos os eixos
xey. Os valores-1.0e1.0não são mostrados, pois traduziriam a imagem completamente para fora do enquadramento.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Escala (scale)#
- Intervalo:
0.0-1.0como um float, ou um tuplo explícito(min, max) - Predefinição:
0.5 - Utilização: Redimensiona imagens por um fator aleatório dentro do intervalo especificado. Como um float, o hiperparâmetro
scaledefine o ganho de escala, com o fator final escolhido aleatoriamente entre1-scalee1+scale. Por exemplo, comscale=0.5, a escala é selecionada aleatoriamente dentro de0.5a1.5. Como um tuplo,scaledefine esse intervalo diretamente, de modo quescale=(0.5, 2.0)amostra o fator entre0.5e2.0. - Propósito: Permite aos modelos lidar com objetos a diferentes distâncias e tamanhos. Por exemplo, em aplicações de condução autónoma, os veículos podem aparecer a várias distâncias da câmara, exigindo que o modelo os reconheça independentemente do seu tamanho.
- Implementação do Ultralytics: RandomPerspective
- Nota:
- O valor
-1.0não é mostrado, pois faria a imagem desaparecer, enquanto1.0resulta simplesmente num zoom de 2x. - Os valores exibidos na tabela abaixo são os deltas de escala realizados, e não os valores que passas para o hiperparâmetro
scale. - A forma de float é validada para o intervalo
0.0-1.0, e um valor fora dele gera umValueError. Para amostrar um fator além de um zoom de 2x, passa a forma de tuplo(min, max)em vez disso. - A forma de tuplo aplica-se apenas às tarefas geométricas. O treino de classificação deriva o seu próprio intervalo de corte a partir do float (
1.0 - scalea1.0), portanto, passar um tuplo aí gera umTypeError.
- O valor
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Cisalhamento (shear)#
- Intervalo:
-180a+180 - Predefinição:
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 enquanto mantém as linhas paralelas. O hiperparâmetro
sheardefine o ângulo de cisalhamento, com o ajuste final escolhido aleatoriamente entre-sheareshear. Por exemplo, comshear=10.0, o cisalhamento é selecionado aleatoriamente dentro de-10até10no eixo x, e outro valor aleatório independente é selecionado dentro do mesmo intervalo no eixo y. - Propósito: Ajuda os modelos a generalizar para variações nos ângulos de visão causadas por ligeiras inclinações ou pontos de vista oblíquos. Por exemplo, na monitorização de tráfego, objetos como carros e sinais de trânsito podem parecer inclinados devido a colocações de câmara não perpendiculares. Aplicar o aumento de cisalhamento garante que o modelo aprende a reconhecer objetos apesar dessas distorções.
- Implementação do Ultralytics: RandomPerspective
- Nota:
- Os valores de
shearpodem distorcer rapidamente a imagem, pelo que é recomendado começar com valores pequenos e aumentá-los gradualmente. - Ao contrário das transformações de perspetiva, o cisalhamento não introduz profundidade ou pontos de fuga, mas distorce a forma dos objetos ao alterar os seus ângulos, mantendo os lados opostos paralelos.
- Os valores de
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Perspetiva (perspective)#
- Intervalo:
0.0-0.001 - Predefinição:
0 - Utilização: Aplica uma transformação de perspetiva completa ao longo dos eixos x e y, simulando o aspeto dos objetos quando vistos de diferentes profundidades ou ângulos. O hiperparâmetro
perspectivedefine a magnitude da perspetiva, com o ajuste final escolhido aleatoriamente entre-perspectiveeperspective. Por exemplo, comperspective=0.001, a perspetiva é selecionada aleatoriamente dentro de-0.001até0.001no eixo x, e outro valor aleatório independente é selecionado dentro do mesmo intervalo no eixo y. - Objetivo: A aumentação de perspectiva é crucial para lidar com mudanças extremas de ponto de vista, especialmente em cenários onde os objetos parecem encurtados ou distorcidos devido a mudanças de perspectiva. Por exemplo, em detecção de objetos baseada em drones, edifícios, estradas e veículos podem parecer esticados ou comprimidos dependendo da inclinação e altitude do drone. Ao aplicar transformações de perspectiva, os modelos aprendem a reconhecer objetos apesar dessas distorções induzidas pela perspectiva, melhorando sua robustez em implementações no mundo real.
- Implementação do Ultralytics: RandomPerspective
-0.001 | -0.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Inversão Vertical (flipud)#
- Intervalo:
0.0-1.0 - Predefinição:
0 - Utilização: Executa uma inversão vertical ao inverter 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, sendo que um valor de
flipud=1.0garante que todas as imagens são invertidas e um valor deflipud=0.0desativa totalmente a transformação. Por exemplo, comflipud=0.5, cada imagem tem uma probabilidade de 50% de ser invertida de cabeça 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, objetos em esteiras transportadoras ou braços robóticos podem ser coletados e colocados em várias orientações. A inversão vertical ajuda o modelo a reconhecer objetos independentemente do seu posicionamento vertical.
- Implementação do Ultralytics: RandomFlip
flipud desativado | flipud ativado |
|---|---|
![]() | ![]() |
Inversão Horizontal (fliplr)#
- Intervalo:
0.0-1.0 - Predefiniçã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 enquanto mantém a consistência espacial, o que ajuda o modelo a generalizar para objetos que aparecem em orientações espelhadas. O hiperparâmetro
fliplrdefine a probabilidade de aplicar a transformação, com um valor defliplr=1.0a garantir que todas as imagens são invertidas e um valor defliplr=0.0a desativar totalmente a transformação. Por exemplo, comfliplr=0.5, cada imagem tem uma probabilidade de 50% de ser invertida da esquerda para a direita. - Objetivo: A inversão horizontal é amplamente usada em detecção de objetos, estimativa de pose e reconhecimento facial para melhorar a robustez contra variações esquerda-direita. Por exemplo, em direção autônoma, veículos e pedestres podem aparecer em qualquer lado da estrada, e a inversão horizontal ajuda o modelo a reconhecê-los igualmente bem em ambas as orientações.
- Implementação do Ultralytics: RandomFlip
fliplr desativado | fliplr ativado |
|---|---|
![]() | ![]() |
Troca de Canais BGR (bgr)#
- Intervalo:
0.0-1.0 - Predefinição:
0 - Utilização: Troca os canais de cor de uma imagem de RGB para BGR, alterando a ordem pela qual as cores são representadas. O hiperparâmetro
bgrdefine a probabilidade de aplicar a transformação, combgr=1.0a garantir que todas as imagens sofrem a troca de canais ebgr=0.0a desativá-la. Por exemplo, combgr=0.5, cada imagem tem uma probabilidade de 50% de ser convertida de RGB para BGR. - Objetivo: Aumenta a robustez a diferentes ordenações de canais de cor. Por exemplo, ao treinar modelos que devem funcionar em vários sistemas de câmera e bibliotecas de imagem onde formatos RGB e BGR podem ser usados de forma inconsistente, ou ao implementar modelos em ambientes onde o formato de cor de entrada pode diferir dos dados de treinamento.
- Implementação do Ultralytics: Format
bgr desativado | bgr ativado |
|---|---|
![]() | ![]() |
Mosaico (mosaic)#
- Intervalo:
0.0-1.0 - Predefinição:
1 - Utilização: Combina quatro imagens de treino numa só. O hiperparâmetro
mosaicdefine a probabilidade de aplicar a transformação, commosaic=1.0a garantir que todas as imagens são combinadas emosaic=0.0a desativar a transformação. Por exemplo, commosaic=0.5, cada imagem tem uma probabilidade de 50% de ser combinada com outras três imagens. - Objetivo: Altamente eficaz para melhorar a detecção de pequenos objetos e a compreensão do contexto. Por exemplo, em projetos de conservação da vida selvagem onde os animais podem aparecer a várias distâncias e escalas, a aumentação de mosaico ajuda o modelo a aprender a reconhecer a mesma espécie através de diferentes tamanhos, oclusões parciais e contextos ambientais, criando artificialmente diversas amostras de treinamento a partir de dados limitados.
- Implementação do Ultralytics: Mosaic
- Nota:
- Mesmo que o aumento
mosaictorne o modelo mais robusto, também pode tornar o processo de treino mais desafiante. - O aumento
mosaicpode ser desativado perto do fim do treino definindoclose_mosaicpara o número de épocas antes da conclusão em que deve ser desligado. Por exemplo, seepochsfor definido como200eclose_mosaicfor definido como20, o aumentomosaicserá desativado após180épocas. Seclose_mosaicfor definido como0, o aumentomosaicserá ativado durante todo o processo de treino. - Fechar o mosaico também desativa
copy_paste,mixupecutmixna mesma época. Os quatro são desativados juntos, de modo que as épocas finais treinam sem eles, enquanto todos os outros aumentos — as transformações geométricas, HSV, inversões e Albumentations — continuam a correr. Nota quecopy_pasteno seu modo predefinidoflipfunciona dentro de uma única imagem em vez de combinar várias. - O centro do mosaico gerado é determinado usando valores aleatórios, e pode estar dentro ou fora da imagem.
- A implementação atual do aumento
mosaiccombina a imagem atual com outras 3, extraídas de um buffer de imagens carregadas recentemente, ou de qualquer lugar no conjunto de dados quandocache='ram'. De qualquer forma, elas são amostradas com reposição, para que a mesma imagem possa aparecer mais do que uma vez num único mosaico.
- Mesmo que o aumento
mosaic desativado | mosaic ativado |
|---|---|
![]() | ![]() |
Mixup (mixup)#
- Intervalo:
0.0-1.0 - Predefinição:
0 - Utilização: Mistura duas imagens e respetivas etiquetas com uma dada probabilidade. O hiperparâmetro
mixupdefine a probabilidade de aplicar a transformação, commixup=1.0a garantir que todas as imagens são misturadas emixup=0.0a desativar a transformação. Por exemplo, commixup=0.5, cada imagem tem uma probabilidade de 50% de ser misturada com outra imagem. - Objetivo: Melhora a robustez do modelo e reduz o overfitting. Por exemplo, em sistemas de reconhecimento de produtos de varejo, o mixup ajuda o modelo a aprender características mais robustas ao misturar imagens de diferentes produtos, ensinando-o a identificar itens mesmo quando estão parcialmente visíveis ou obscurecidos por outros produtos em prateleiras de lojas lotadas.
- Implementação do Ultralytics: Mixup
- Nota:
- O rácio
mixupé um valor aleatório escolhido a partir de uma distribuição betanp.random.beta(32.0, 32.0), o que significa que cada imagem contribui com aproximadamente 50%, com pequenas variações.
- O rácio
Primeira imagem, mixup desativado | Segunda imagem, mixup desativado | mixup ativado |
|---|---|---|
![]() | ![]() | ![]() |
CutMix (cutmix)#
- Intervalo:
0.0-1.0 - Predefinição:
0 - Utilização: Recorta uma região retangular de uma imagem e cola-a noutra imagem com uma dada probabilidade. O hiperparâmetro
cutmixdefine a probabilidade de aplicar a transformação, comcutmix=1.0a garantir que todas as imagens passam por esta transformação ecutmix=0.0a desativá-la por completo. Por exemplo, comcutmix=0.5, cada imagem tem uma probabilidade de 50% de ver uma região substituída por um retalho de outra imagem. - Objetivo: Aumenta o desempenho do modelo ao criar cenários de oclusão realistas enquanto mantém a integridade dos recursos locais. Por exemplo, em sistemas de direção autônoma, o cutmix ajuda o modelo a aprender a reconhecer veículos ou pedestres mesmo quando estão parcialmente obscurecidos por outros objetos, melhorando a precisão da detecção em ambientes complexos do mundo real com objetos sobrepostos.
- Implementação do Ultralytics: CutMix
- Nota:
- O tamanho e a posição da região recortada são determinados aleatoriamente para cada aplicação.
- Ao contrário do mixup, que mistura os valores dos píxeis globalmente,
cutmixmantém as intensidades originais dos píxeis dentro das regiões recortadas, 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 retêm área original suficiente dentro da região colada são preservadas.
- Este limite mínimo de área de caixa delimitadora não pode ser alterado com a implementação atual. É
0.1(10%) para rótulos de deteção e0.01(1%) assim que os rótulos contêm segmentos.
Primeira imagem, cutmix desativado | Segunda imagem, cutmix desativado | cutmix ativado |
|---|---|---|
![]() | ![]() | ![]() |
Aumentações de Copiar e Colar#
Copy-Paste (copy_paste)#
- Intervalo:
0.0-1.0 - Predefinição:
0 - Uso: Requer rótulos de polígono, portanto aplica-se a tarefas de segmentação e OBB; esta aumetnção copia objetos dentro ou entre imagens, controlado pelo
copy_paste_mode. No modoflip,copy_pasteé a fração de objetos elegíveis copiados: uma imagem com seis objetos elegíveis ganha três cópias emcopy_paste=0.5. No modomixup, o mesmo valor também controla a probabilidade de execução do copiar e colar.copy_paste=0.0desativa a transformação. - Objetivo: Particularmente útil para tarefas de segmentação de instância e classes de objetos raros. Por exemplo, na detecção de defeitos industriais onde certos tipos de defeitos aparecem com pouca frequência, a aumentação de copy-paste pode aumentar artificialmente a ocorrência desses defeitos raros copiando-os de uma imagem para outra, ajudando o modelo a aprender melhor esses casos sub-representados sem exigir amostras defeituosas adicionais.
- Implementação do Ultralytics: CopyPaste
- Nota:
- Conforme mostrado no vídeo abaixo, o aumento
copy_pastepode ser usado para copiar objetos de uma imagem para outra. - Assim que um objeto é selecionado para cópia, a sua IoA é calculada em relação a todos os objetos já presentes na imagem de destino, independentemente de
copy_paste_mode. O objeto é colado apenas se todos os valores de IoA estiverem abaixo de0.3(30%); não é colado se qualquer valor de IoA for0.3ou superior. - O limiar de IoA não pode ser alterado com a implementação atual e está definido como
0.3por predefinição.
- Conforme mostrado no vídeo abaixo, o aumento
copy_paste desativado | copy_paste ativado com copy_paste_mode=flip | Visualizar o processo de copy_paste |
|---|---|---|
![]() | ![]() |
Modo Copy-Paste (copy_paste_mode)#
- Opções:
'flip','mixup' - Predefinição:
'flip' - Utilização: Determina o método utilizado para o aumento copy-paste. Se definido como
'flip', os objetos vêm da mesma imagem, enquanto'mixup'permite que os objetos sejam copiados de imagens diferentes. - Objetivo: Permite flexibilidade na forma como os objetos copiados são integrados nas imagens de destino.
- Implementação do Ultralytics: CopyPaste
- Nota:
- O princípio da IoA é o mesmo para ambas as opções de
copy_paste_mode, mas a forma como os objetos são copiados é diferente. - Dependendo do tamanho da imagem, os objetos podem, às vezes, ser copiados parcialmente ou inteiramente fora do quadro.
- Dependendo da qualidade das anotações poligonais, os objetos copiados podem ter pequenas variações de forma em comparação com os originais.
- O princípio da IoA é o mesmo para ambas as opções de
| Imagem de referência | Imagem escolhida para copy_paste | copy_paste ativado com copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Aumentações específicas para classificação#
Auto Augment (auto_augment)#
- Opções:
'randaugment','autoaugment','augmix',None - Predefinição:
'randaugment' - Utilização: Aplica políticas de aumento automatizadas para classificação. A opção
'randaugment'utiliza RandAugment,'autoaugment'utiliza AutoAugment e'augmix'utiliza AugMix. Definir comoNonedesativa o aumento automatizado. - Objetivo: Otimiza estratégias de aumento automaticamente para tarefas de classificação. As diferenças são as seguintes:
- AutoAugment: Este modo aplica políticas de aumento predefinidas aprendidas a partir de conjuntos de dados como ImageNet, CIFAR10 e SVHN. Os utilizadores podem selecionar estas políticas existentes, mas não podem treinar novas dentro do Torchvision. Para descobrir estratégias de aumento ótimas para conjuntos de dados específicos, seriam necessárias bibliotecas externas ou implementações personalizadas. Referência ao artigo do 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, enquanto continua a melhorar 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 ao criar diversas variações de imagem através de combinações aleatórias de transformações simples. Referência ao artigo do AugMix.
- Implementação do Ultralytics: classify_augmentations()
- Nota:
- Essencialmente, a principal diferença entre os três métodos é a maneira como as políticas de aumento são definidas e aplicadas.
- Podes consultar este artigo que compara os três métodos em detalhe.
Apagamento Aleatório (erasing)#
- Intervalo:
0.0-1.0 - Predefinição:
0.4 - Utilização: Apaga aleatoriamente partes da imagem durante o treino de classificação. O hiperparâmetro
erasingdefine a probabilidade de aplicar a transformação, comerasing=1.0a apagar uma região em cada imagem eerasing=0.0a desativar a transformação. Por exemplo, comerasing=0.5, cada imagem tem 50% de hipóteses de ter uma porção apagada. - Objetivo: Ajuda os modelos a aprender características robustas e evita a dependência excessiva de regiões específicas da imagem. Por exemplo, em sistemas de reconhecimento facial, o apagamento aleatório ajuda os modelos a se tornarem mais robustos a oclusões parciais, como óculos de sol, máscaras faciais ou outros objetos que possam cobrir parcialmente as características faciais. Isso melhora o desempenho no mundo real ao forçar o modelo a identificar indivíduos usando múltiplas características faciais em vez de depender apenas de características distintivas que podem estar obscurecidas.
- Implementação do Ultralytics: classify_augmentations()
- Nota:
- O aumento
erasinginclui os hiperparâmetrosscale,ratioevalueque não podem ser alterados com a implementação atual. Os seus valores predefinidos são(0.02, 0.33),(0.3, 3.3)e0, respetivamente, conforme indicado na documentação do PyTorch.
- O aumento
erasing desativado | erasing ativado (exemplo 1) | erasing ativado (exemplo 2) | erasing ativado (exemplo 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Recursos Avançados de Aumento#
Transformações Albumentations Personalizadas (augmentations)#
- Tipo:
listde transformações do Albumentations - Predefinição:
None - Utilização: Permite fornecer transformações Albumentations personalizadas para o aumento de dados através da API Python. Este parâmetro aceita uma lista de objetos de transformação Albumentations que serão aplicados durante o treino em vez das transformações Albumentations predefinidas.
- Objetivo: Fornece controlo refinado sobre as estratégias de aumento de dados, tirando partido da extensa biblioteca de transformações do Albumentations. Isto é particularmente útil quando precisas de aumentos especializados além das opções integradas do YOLO, tais como deformações elásticas e distorções de grelha para imagens médicas, transformações ajustadas para perspetivas aéreas e de satélite, variações de ruído e brilho que simulam condições de pouca luz, ou variações de textura semelhantes a defeitos para inspeção industrial.
- Implementação do Ultralytics: Albumentations
- Nota:
- Construir os objetos de transformação requer a API Python. O Ultralytics serializa-os com
A.to_dict()ao guardar um ponto de controlo, de modo que uma lista já serializada passa por um ficheiro de configuração YAML ou pela CLI, que é o que permite aresumerestaurá-los. - As transformações personalizadas substituem completamente o conjunto predefinido do Albumentations. Cada aumento configurado noutro lugar nesta página —
mosaic,hsv_h,degreese o resto — permanece ativo e é aplicado de forma independente. - Sê cauteloso com transformações espaciais que alteram a geometria da imagem. O Ultralytics ajusta as caixas delimitadoras automaticamente, mas algumas transformações complexas podem exigir configuração adicional.
- O Albumentations oferece mais de 70 transformações; a documentação do Albumentations lista todas elas. Adicionar muitas transformações, ou algumas computacionalmente dispendiosas, torna o treino mais lento, por isso começa com um pequeno conjunto e observa o tempo por época.
- Aplica-se às tarefas
detect,segment,semantic,depth,poseeobb. A classificação está excluída, pois utiliza um pipeline de aumento separado.
- Construir os objetos de transformação requer a API Python. O Ultralytics serializa-os com
Os exemplos abaixo precisam do Albumentations 1.4.22 ou mais recente e, portanto, do Python 3.9 ou mais recente.
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Define custom Albumentations transforms
custom_transforms = [
A.Blur(blur_limit=7, p=0.5),
A.GaussNoise(std_range=(0.0124, 0.0277), 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,
)FAQ#
Escolher os aumentos certos depende do seu caso de uso específico e dataset. Aqui estão algumas diretrizes gerais para ajudá-lo a decidir:
- Na maioria dos casos, pequenas variações na cor e no brilho são benéficas. Os valores predefinidos para
hsv_h,hsv_sehsv_vsão um excelente ponto de partida. - Se o ponto de vista da câmara for consistente e não mudar após o modelo ser implementado, podes provavelmente ignorar transformações geométricas como
rotation,translation,scale,shearouperspective. No entanto, se o ângulo da câmara puder variar e precisares que o modelo seja mais robusto, é melhor manter estes aumentos. - Usa o aumento
mosaicapenas se tiveres objetos parcialmente ocluídos ou vários objetos por imagem de forma aceitável e que isso não altere o valor da etiqueta. Em alternativa, podes mantermosaicativo mas aumentar o valor declose_mosaicpara o desativar mais cedo no processo de treino.
Em resumo: mantenha as coisas simples. Comece com um conjunto pequeno de aumentos e gradualmente adicione mais conforme necessário. O objetivo é melhorar a generalização e robustez do modelo, não complicar o processo de treinamento. Além disso, certifique-se de que os aumentos que você aplica reflitam a mesma distribuição de dados que seu modelo encontrará na produção.
- Na maioria dos casos, pequenas variações na cor e no brilho são benéficas. Os valores predefinidos para
Se o pacote
albumentationsestiver instalado, o Ultralytics aplica automaticamente um conjunto de aumentos de imagem extra utilizando-o. Estes aumentos são geridos internamente e não requerem nenhuma configuração adicional.Podes encontrar a lista completa de transformações aplicadas na nossa documentação técnica, bem como no nosso guia de integração do Albumentations. Nota que apenas os aumentos com uma probabilidade
psuperior a0estão ativos. Estes são propositadamente aplicados a baixas frequências para imitar artefactos visuais do mundo real, tais como efeitos de desfoque ou escala de cinzentos.Também podes fornecer as tuas próprias transformações Albumentations personalizadas utilizando a API Python. Consulta a secção Funcionalidades de Aumento Avançadas para mais detalhes.
Verifica se o pacote
albumentationsestá instalado. Se não estiver, instala-o:pip install albumentationsUma vez instalado, o pacote deve ser detetado e utilizado automaticamente pelo Ultralytics.
Podes personalizar as augmentations criando uma classe de dataset e um trainer personalizados. Por exemplo, podes substituir as augmentations de classificação predefinidas do Ultralytics por torchvision.transforms.Resize do PyTorch ou outras transforms. Vê o custom training example na documentação de classificação para detalhes de implementação.













































