Aumento de dados usando Ultralytics YOLO#
Introdução#
O aumento de dados é uma técnica crucial em visão computacional que expande artificialmente seu conjunto de dados de treinamento aplicando várias transformações às imagens existentes. Ao treinar modelos de aprendizado profundo, como o Ultralytics YOLO, o aumento de dados ajuda a melhorar a robustez do modelo, reduz o sobreajuste e aprimora a generalização para cenários do mundo real.
Assista: Como usar Mosaic, MixUp e outras técnicas de aumento de dados para ajudar os modelos Ultralytics YOLO a generalizar melhor 🚀
Por que o aumento de dados é importante#
O aumento de dados atende a vários objetivos essenciais no treinamento de modelos de visão computacional:
- Conjunto de dados ampliado: ao criar variações de imagens existentes, você pode aumentar efetivamente o tamanho do conjunto de dados de treinamento sem coletar novos dados.
- Melhor generalização: os modelos aprendem a reconhecer objetos em várias condições, tornando-se mais robustos em aplicações do mundo real.
- Redução do sobreajuste: ao introduzir variabilidade nos dados de treinamento, os modelos têm menos probabilidade de memorizar características específicas das imagens.
- Desempenho aprimorado: modelos treinados com aumento de dados adequado geralmente alcançam melhor acurácia nos conjuntos de validação e teste.
A implementação do Ultralytics YOLO oferece um conjunto abrangente de técnicas de aumento de dados, cada uma com objetivos específicos e que contribui de formas diferentes para o desempenho do modelo. Este guia explora as configurações de aumento de dados abaixo e ajuda você a entender quando e como usá-las com eficácia em seus projetos.
Exemplos de configuração#
Você pode personalizar cada parâmetro usando a API Python, a interface de linha de comando (CLI) ou um arquivo de configuração. Veja abaixo exemplos de como configurar o aumento de dados em cada método.
import albumentations as A
from ultralytics import YOLO
# Carregar um modelo
model = YOLO("yolo26n.pt")
# Treinamento com parâmetros personalizados de aumento de dados
model.train(data="coco8.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)
# Treinamento com todos os aumentos de dados configuráveis desativados (valores desativados omitidos para maior clareza)
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,
)
# Treinamento com transformações personalizadas do Albumentations (somente API Python)
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 você controla por meio dos argumentos de treinamento. O Ultralytics também aplica um pequeno conjunto do Albumentations — desfoque, desfoque mediano, escala de cinza e CLAHE, cada um com p=0.01 — sempre que o pacote albumentations está instalado, e nenhum argumento em default.yaml o desativa. Desinstale o pacote para removê-lo ou passe sua própria lista para augmentations para substituí-lo.
Usando um arquivo de configuração#
Você pode definir todos os parâmetros de treinamento, incluindo os aumentos de dados, em um arquivo de configuração YAML (por exemplo, train_custom.yaml). O parâmetro mode só é necessário ao usar a CLI. Esse novo arquivo YAML substituirá então o arquivo padrão, 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.5Em seguida, inicie o treinamento com a API Python:
from ultralytics import YOLO
# Carregar um modelo YOLO26n pré-treinado com COCO
model = YOLO("yolo26n.pt")
# Treine o modelo com uma configuração personalizada
model.train(cfg="train_custom.yaml")Aumentos no espaço de cores#
Ajuste de matiz (hsv_h)#
- Intervalo:
0.0-1.0 - Padrão:
0.015 - Uso: altera as cores da imagem preservando as relações entre elas. O hiperparâmetro
hsv_hdefine a magnitude do deslocamento, e o ajuste final é escolhido aleatoriamente entre-hsv_hehsv_h. Por exemplo, comhsv_h=0.3, o deslocamento é selecionado aleatoriamente entre-0.3e0.3. Para valores acima de0.5, o deslocamento de matiz dá a volta no círculo cromático; por isso, os aumentos de dados parecem iguais entre0.5e-0.5. - Objetivo: especialmente útil em cenários ao ar livre, nos quais as condições de iluminação podem afetar drasticamente a aparência dos objetos. Por exemplo, uma banana pode parecer mais amarela sob a luz forte do sol, 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 - Padrão:
0.7 - Uso: modifica a intensidade das cores na imagem. O hiperparâmetro
hsv_sdefine a magnitude do deslocamento, e o ajuste final é escolhido aleatoriamente entre-hsv_sehsv_s. Por exemplo, comhsv_s=0.7, a intensidade é selecionada aleatoriamente entre-0.7e0.7. - Objetivo: ajuda os modelos a lidar com diferentes condições climáticas e configurações de câmera. Por exemplo, uma placa de trânsito vermelha pode parecer muito vibrante em um dia ensolarado, mas apagada e sem brilho em condições de neblina.
- 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 - Padrão:
0.4 - Uso: altera o brilho da imagem. O hiperparâmetro
hsv_vdefine a magnitude do deslocamento, e o ajuste final é escolhido aleatoriamente entre-hsv_vehsv_v. Por exemplo, comhsv_v=0.4, a intensidade é selecionada aleatoriamente entre-0.4e0.4. - Objetivo: essencial para treinar modelos que precisam funcionar em diferentes condições de iluminação. Por exemplo, uma maçã vermelha pode parecer brilhante sob a 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 - Padrão:
0 - Uso: gira as imagens aleatoriamente dentro do intervalo especificado. O hiperparâmetro
degreesdefine o ângulo de rotação, e o ajuste final é escolhido aleatoriamente entre-degreesedegrees. Por exemplo, comdegrees=10.0, a rotação é selecionada aleatoriamente entre-10.0e10.0. - Objetivo: crucial para aplicações em que os objetos podem aparecer em orientações diferentes. Por exemplo, em imagens aéreas capturadas por drones, os veículos podem estar orientados em qualquer direção, exigindo que os modelos reconheçam objetos independentemente da rotação.
- Implementação do Ultralytics: RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Translação (translate)#
- Intervalo:
0.0-1.0 - Padrão:
0.1 - Uso: desloca as imagens horizontal e verticalmente por uma fração aleatória do tamanho da imagem. O hiperparâmetro
translatedefine a magnitude do deslocamento, e o ajuste final é escolhido aleatoriamente duas vezes (uma para cada eixo) dentro do intervalo-translateetranslate. Por exemplo, comtranslate=0.5, a translação no eixo x é selecionada aleatoriamente entre-0.5e0.5, e outro valor aleatório independente é selecionado dentro do mesmo intervalo no eixo y. - Objetivo: ajuda os modelos a aprender a detectar objetos parcialmente visíveis e melhora a robustez à posição dos objetos. Por exemplo, em aplicações de avaliação de danos em veículos, as partes de um carro podem aparecer total ou parcialmente no enquadramento, dependendo da posição e da distância do fotógrafo; o aumento por translação ensina o modelo a reconhecer essas características independentemente de estarem completas ou de sua posição.
- Implementação do Ultralytics: RandomPerspective
- Observação: para simplificar, as translações aplicadas abaixo são iguais todas as vezes nos eixos
xey. Os valores-1.0e1.0não são mostrados, pois transladariam a imagem completamente para fora do enquadramento.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Escala (scale)#
- Intervalo:
0.0-1.0como número de ponto flutuante ou uma tupla explícita(min, max) - Padrão:
0.5 - Uso: redimensiona as imagens por um fator aleatório dentro do intervalo especificado. Na forma de número de ponto flutuante, o hiperparâmetro
scaledefine o ganho de escala, e o fator final é escolhido aleatoriamente entre1-scalee1+scale. Por exemplo, comscale=0.5, a escala é selecionada aleatoriamente entre0.5e1.5. Na forma de tupla,scaledefine esse intervalo diretamente, entãoscale=(0.5, 2.0)amostra o fator entre0.5e2.0. - Objetivo: permite que os modelos lidem com objetos a diferentes distâncias e tamanhos. Por exemplo, em aplicações de direção autônoma, os veículos podem aparecer a várias distâncias da câmera, exigindo que o modelo os reconheça independentemente do tamanho.
- Implementação do Ultralytics: RandomPerspective
- Observação:
- O valor
-1.0não é mostrado, pois faria a imagem desaparecer, enquanto1.0resulta simplesmente em um zoom de 2x. - Os valores exibidos na tabela abaixo são os deltas de escala aplicados, não os valores que você passa ao hiperparâmetro
scale. - A forma de número de ponto flutuante é validada para o intervalo
0.0-1.0, e um valor fora desse intervalo gera umValueError. Para amostrar um fator além de um zoom de 2x, passe a forma de tupla(min, max). - A forma de tupla se aplica somente às tarefas geométricas. O treinamento de classificação deriva seu próprio intervalo de recorte a partir do valor de ponto flutuante (
1.0 - scalea1.0), então passar uma tupla nesse caso gera umTypeError.
- O valor
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Cisalhamento (shear)#
- Intervalo:
-180a+180 - Padrão:
0 - Uso: aplica uma transformação geométrica que inclina a imagem nos eixos x e y, deslocando efetivamente partes da imagem em uma direção enquanto mantém as linhas paralelas. O hiperparâmetro
sheardefine o ângulo de cisalhamento, e o ajuste final é escolhido aleatoriamente entre-sheareshear. Por exemplo, comshear=10.0, o cisalhamento no eixo x é selecionado aleatoriamente entre-10e10, e outro valor aleatório independente é selecionado dentro do mesmo intervalo no eixo y. - Objetivo: ajuda os modelos a generalizar para variações de ângulo de visão causadas por pequenas inclinações ou perspectivas oblíquas. Por exemplo, no monitoramento de trânsito, objetos como carros e placas de trânsito podem parecer inclinados devido ao posicionamento não perpendicular das câmeras. Aplicar aumento por cisalhamento garante que o modelo aprenda a reconhecer objetos apesar dessas distorções.
- Implementação do Ultralytics: RandomPerspective
- Observação:
- Valores de
shearpodem distorcer a imagem rapidamente, por isso é recomendável começar com valores pequenos e aumentá-los gradualmente. - Ao contrário das transformações de perspectiva, o cisalhamento não introduz profundidade nem pontos de fuga; em vez disso, distorce o formato dos objetos alterando seus ângulos e mantendo paralelos os lados opostos.
- Valores de
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Perspectiva (perspective)#
- Intervalo:
0.0-0.001 - Padrão:
0 - Uso: aplica uma transformação completa de perspectiva nos eixos x e y, simulando a aparência dos objetos vistos de diferentes profundidades ou ângulos. O hiperparâmetro
perspectivedefine a magnitude da perspectiva, e o ajuste final é escolhido aleatoriamente entre-perspectiveeperspective. Por exemplo, comperspective=0.001, a perspectiva no eixo x é selecionada aleatoriamente entre-0.001e0.001, e outro valor aleatório independente é selecionado dentro do mesmo intervalo no eixo y. - Objetivo: o aumento de perspectiva é crucial para lidar com mudanças extremas de ponto de vista, especialmente em cenários nos quais os objetos parecem encurtados ou distorcidos devido a alterações de perspectiva. Por exemplo, na detecção de objetos baseada em drones, edifícios, estradas e veículos podem parecer esticados ou comprimidos dependendo da inclinação e da altitude do drone. Ao aplicar transformações de perspectiva, os modelos aprendem a reconhecer objetos apesar dessas distorções, melhorando sua robustez em implantaçõ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 - Padrão:
0 - Uso: realiza uma inversão vertical ao refletir a imagem no eixo y. Essa transformação vira toda a imagem de cabeça para baixo, preservando as relações espaciais entre os objetos. O hiperparâmetro flipud define a probabilidade de aplicar a transformação: o valor
flipud=1.0garante que todas as imagens sejam invertidas, e o valorflipud=0.0desativa completamente a transformação. Por exemplo, comflipud=0.5, cada imagem tem 50% de chance de ser virada de cabeça para baixo. - Objetivo: útil em cenários nos quais 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 recolhidos e colocados em várias orientações. A inversão vertical ajuda o modelo a reconhecer objetos independentemente de sua orientação de cima para baixo.
- Implementação do Ultralytics: RandomFlip
flipud desativado | flipud ativado |
|---|---|
![]() | ![]() |
Inversão horizontal (fliplr)#
- Intervalo:
0.0-1.0 - Padrão:
0.5 - Uso: realiza uma inversão horizontal refletindo a imagem no eixo x. Essa 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 hiperparâmetro
fliplrdefine a probabilidade de aplicar a transformação: o valorfliplr=1.0garante que todas as imagens sejam invertidas, e o valorfliplr=0.0desativa completamente a transformação. Por exemplo, comfliplr=0.5, cada imagem tem 50% de chance de ser invertida da esquerda para a direita. - Objetivo: a inversão horizontal é amplamente usada na detecção de objetos, na estimativa de pose e no reconhecimento facial para melhorar a robustez a variações entre os lados esquerdo e direito. Por exemplo, na 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 - Padrão:
0 - Uso: troca os canais de cor de uma imagem de RGB para BGR, alterando a ordem em que as cores são representadas. O hiperparâmetro
bgrdefine a probabilidade de aplicar a transformação:bgr=1.0garante que todas as imagens tenham os canais trocados, ebgr=0.0desativa a transformaçã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 dos canais de cor. Por exemplo, ao treinar modelos que precisam funcionar com vários sistemas de câmera e bibliotecas de imagens que usam os formatos RGB e BGR de maneira inconsistente, ou ao implantar modelos em ambientes nos quais o formato de cor da entrada pode diferir do usado nos dados de treinamento.
- Implementação do Ultralytics: Format
bgr desativado | bgr ativado |
|---|---|
![]() | ![]() |
Mosaic (mosaic)#
- Intervalo:
0.0-1.0 - Padrão:
1 - Uso: combina quatro imagens de treinamento em uma. O hiperparâmetro
mosaicdefine a probabilidade de aplicar a transformação:mosaic=1.0garante que todas as imagens sejam combinadas, emosaic=0.0desativa a transformação. Por exemplo, commosaic=0.5, cada imagem tem 50% de chance de ser combinada com outras três imagens. - Objetivo: muito eficaz para melhorar a detecção de objetos pequenos e a compreensão do contexto. Por exemplo, em projetos de conservação da vida selvagem, nos quais os animais podem aparecer a várias distâncias e escalas, o aumento Mosaic ajuda o modelo a aprender a reconhecer a mesma espécie em diferentes tamanhos, oclusões parciais e contextos ambientais, criando artificialmente amostras de treinamento variadas a partir de dados limitados.
- Implementação do Ultralytics: Mosaic
- Observação:
- Embora o aumento
mosaictorne o modelo mais robusto, ele também pode dificultar o processo de treinamento. - O aumento
mosaicpode ser desativado perto do fim do treinamento definindoclose_mosaiccomo o número de épocas restantes até sua desativação. Por exemplo, seepochsestiver definido como200eclose_mosaicestiver definido como20, o aumentomosaicserá desativado após180épocas. Seclose_mosaicestiver definido como0, o aumentomosaicserá ativado durante todo o treinamento. - Desativar Mosaic também desativa
copy_paste,mixupecutmixna mesma época. Os quatro são desativados em conjunto, então as épocas finais são treinadas sem eles, enquanto todos os outros aumentos — transformações geométricas, HSV, inversões e Albumentations — continuam em execução. Observe quecopy_paste, em seu modo padrãoflip, funciona em uma única imagem, em vez de combinar várias. - O centro do Mosaic gerado é determinado com valores aleatórios e pode ficar dentro ou fora da imagem.
- A implementação atual do aumento
mosaiccombina a imagem atual com outras 3, selecionadas de um buffer de imagens carregadas recentemente ou de qualquer lugar do conjunto de dados quandocache='ram'. Em ambos os casos, as imagens são amostradas com reposição, então a mesma imagem pode aparecer mais de uma vez em um único Mosaic.
- Embora o aumento
mosaic desativado | mosaic ativado |
|---|---|
![]() | ![]() |
Mixup (mixup)#
- Intervalo:
0.0-1.0 - Padrão:
0 - Uso: combina duas imagens e seus rótulos com uma determinada probabilidade. O hiperparâmetro
mixupdefine a probabilidade de aplicar a transformação:mixup=1.0garante que todas as imagens sejam combinadas, emixup=0.0desativa a transformação. Por exemplo, commixup=0.5, cada imagem tem 50% de chance de ser combinada com outra imagem. - Objetivo: melhora a robustez do modelo e reduz o sobreajuste. Por exemplo, em sistemas de reconhecimento de produtos no varejo, o mixup ajuda o modelo a aprender características mais robustas ao combinar imagens de produtos diferentes, ensinando-o a identificar itens mesmo quando estão parcialmente visíveis ou encobertos por outros produtos em prateleiras cheias.
- Implementação do Ultralytics: MixUp
- Observação:
- A proporção
mixupé um valor aleatório obtido 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.
- A proporção
Primeira imagem, mixup desativado | Segunda imagem, mixup desativado | mixup ativado |
|---|---|---|
![]() | ![]() | ![]() |
CutMix (cutmix)#
- Intervalo:
0.0-1.0 - Padrão:
0 - Uso: Recorta uma região retangular de uma imagem e cola-a noutra imagem com uma probabilidade definida. O hiperparâmetro
cutmixdefine a probabilidade de aplicar a transformação, sendo quecutmix=1.0garante que todas as imagens passam por esta transformação ecutmix=0.0a desativa completamente. Por exemplo, comcutmix=0.5, cada imagem tem 50% de probabilidade de ter uma região substituída por um recorte de outra imagem. - Objetivo: Melhora o desempenho do modelo ao criar cenários de oclusão realistas, preservando a integridade das caracterí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 estão parcialmente ocultos por outros objetos, melhorando a precisão da deteção em ambientes reais complexos com objetos sobrepostos.
- Implementação da Ultralytics: CutMix
- Observação:
- O tamanho e a posição da região recortada são determinados aleatoriamente em cada aplicação.
- Ao contrário do mixup, que combina globalmente os valores dos píxeis,
cutmixmantém as intensidades originais dos píxeis nas regiões recortadas, preservando as características locais. - Uma região só é colada na imagem de destino se não se sobrepuser a nenhuma caixa delimitadora existente. Além disso, só são preservadas as caixas delimitadoras que mantêm uma parte suficiente da sua área original na região colada.
- Este limiar mínimo da área da caixa delimitadora não pode ser alterado na implementação atual. O valor é
0.1(10%) para rótulos de deteção e0.01(1%) quando os rótulos incluem segmentos.
Primeira imagem, cutmix desativado | Segunda imagem, cutmix desativado | cutmix ativado |
|---|---|---|
![]() | ![]() | ![]() |
Aumentos Copy-Paste#
Copy-Paste (copy_paste)#
- Intervalo:
0.0-1.0 - Padrão:
0 - Uso: Requer rótulos de polígonos, pelo que se aplica a tarefas de segmentação e OBB; este aumento copia objetos dentro da mesma imagem ou entre imagens, sendo controlado por
copy_paste_mode. No modoflip,copy_pasteé a fração de objetos elegíveis que são copiados: uma imagem com seis objetos elegíveis recebe três cópias comcopy_paste=0.5. No modomixup, o mesmo valor também controla a probabilidade de execução do copy-paste.copy_paste=0.0desativa a transformação. - Objetivo: É particularmente útil para tarefas de segmentação de instâncias e classes de objetos raras. Por exemplo, na deteção de defeitos industriais, em que certos tipos de defeitos são pouco frequentes, o aumento copy-paste pode aumentar artificialmente a ocorrência desses defeitos raros, copiando-os de uma imagem para outra. Isto ajuda o modelo a aprender melhor estes casos sub-representados sem precisar de amostras defeituosas adicionais.
- Implementação da Ultralytics: CopyPaste
- Observação:
- Como mostra o vídeo abaixo, o aumento
copy_pastepode ser usado para copiar objetos de uma imagem para outra. - Depois de selecionar um objeto para copiar, calcula-se o IoA entre esse objeto e todos os objetos já presentes na imagem de destino, independentemente de
copy_paste_mode. O objeto só é colado se todos os valores de IoA forem inferiores a0.3(30%); não é colado se algum valor de IoA for igual ou superior a0.3. - O limiar de IoA não pode ser alterado na implementação atual e, por predefinição, está definido como
0.3.
- Como mostra o vídeo abaixo, o aumento
copy_paste desativado | copy_paste ativado com copy_paste_mode=flip | Visualizar o processo copy_paste |
|---|---|---|
![]() | ![]() |
Modo Copy-Paste (copy_paste_mode)#
- Opções:
'flip','mixup' - Padrão:
'flip' - Uso: Determina o método usado para o aumento copy-paste. Se definido como
'flip', os objetos são provenientes da mesma imagem;'mixup'permite copiar objetos de imagens diferentes. - Objetivo: Permite flexibilidade na forma como os objetos copiados são integrados nas imagens de destino.
- Implementação da Ultralytics: CopyPaste
- Observação:
- O princípio de IoA é igual para ambas as opções de
copy_paste_mode, mas a forma de copiar os objetos é diferente. - Consoante o tamanho da imagem, por vezes os objetos podem ser copiados parcialmente ou ficar totalmente fora do enquadramento.
- Consoante a qualidade das anotações de polígonos, os objetos copiados podem apresentar ligeiras variações de forma em relação aos originais.
- O princípio de IoA é igual para ambas as opções de
| Imagem de referência | Imagem escolhida para copy_paste | copy_paste ativado com copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Aumentos específicos para classificação#
Auto Augment (auto_augment)#
- Opções:
'randaugment','autoaugment','augmix',None - Padrão:
'randaugment' - Uso: Aplica políticas automatizadas de aumento para classificação. A opção
'randaugment'usa RandAugment,'autoaugment'usa AutoAugment e'augmix'usa AugMix. Definir comoNonedesativa o aumento automatizado. - Objetivo: 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 utilizadores podem selecionar estas políticas existentes, mas não podem treinar novas no Torchvision. Para encontrar as estratégias de aumento ideais para conjuntos de dados específicos, são necessárias bibliotecas externas ou implementações personalizadas. Consulta o artigo sobre AutoAugment.
- RandAugment: Aplica uma seleção aleatória de transformações com magnitude uniforme. Esta abordagem reduz a necessidade de uma fase de pesquisa extensa, tornando-a mais eficiente do ponto de vista computacional e melhorando, ainda assim, a robustez do modelo. Consulta o artigo sobre 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. Consulta o artigo sobre AugMix.
- Implementação da Ultralytics: classify_augmentations()
- Observação:
- Essencialmente, a principal diferença entre os três métodos está na forma 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 - Padrão:
0.4 - Uso: Apaga aleatoriamente partes da imagem durante o treino de classificação. O hiperparâmetro
erasingdefine a probabilidade de aplicar a transformação, sendo queerasing=1.0apaga uma região em todas as imagens eerasing=0.0desativa a transformação. Por exemplo, comerasing=0.5, cada imagem tem 50% de probabilidade de ter uma parte 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 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 em situações reais, obrigando o modelo a identificar as pessoas através de várias características faciais, em vez de depender apenas de características distintivas que podem estar ocultas.
- Implementação da Ultralytics: classify_augmentations()
- Observação:
- O aumento
erasinginclui os hiperparâmetrosscale,ratioevalue, que não podem ser alterados na implementação atual. Os valores predefinidos são, respetivamente,(0.02, 0.33),(0.3, 3.3)e0, conforme indicado na documentação do PyTorch.
- O aumento
erasing desativado | erasing ativado (exemplo 1) | erasing ativado (exemplo 2) | erasing ativado (exemplo 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Funcionalidades avançadas de aumento#
Transformações Albumentations personalizadas (augmentations)#
- Tipo:
listde transformações Albumentations - Padrão:
None - Uso: 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: Proporciona um controlo detalhado das estratégias de aumento de dados, aproveitando a extensa biblioteca de transformações Albumentations. Isto é particularmente útil quando precisas de aumentos especializados para além das opções YOLO integradas, como deformações elásticas e distorções em grelha para imagiologia médica, transformações ajustadas a perspetivas aéreas e de satélite, alterações de ruído e luminosidade que simulam condições de pouca luz ou variações de textura semelhantes a defeitos para inspeção industrial.
- Implementação da Ultralytics: Albumentations
- Observação:
- A criação dos objetos de transformação requer a API Python. Ao guardar um ponto de controlo, a Ultralytics serializa-os com
A.to_dict(), pelo que uma lista já serializada pode ser lida e guardada sem alterações através de um ficheiro de configuração YAML ou da CLI, permitindo queresumea restaure. - As transformações personalizadas substituem completamente o conjunto predefinido de Albumentations. Todos os aumentos configurados noutras partes desta página —
mosaic,hsv_h,degreese os restantes — permanecem ativos e são aplicados de forma independente. - As transformações espaciais que alteram a geometria da imagem, incluindo as que estão aninhadas em
A.OneOfouA.Compose, deslocam as caixas delimitadoras, os polígonos, os pontos-chave e as máscaras de profundidade ou semânticas juntamente com a imagem;A.RandomGridShufflenão consegue preservar a topologia dos polígonos ou dos pontos-chave e gera um erro em amostras de segmentação, pose e OBB. - Albumentations disponibiliza mais de 70 transformações; a documentação de Albumentations apresenta-as todas. Adicionar muitas transformações, ou transformações com elevado custo computacional, abranda o treino. Por isso, começa com um conjunto pequeno e acompanha o tempo de cada época.
- Aplica-se às tarefas
detect,segment,semantic,depth,poseeobb. A classificação está excluída, pois usa um pipeline de aumento separado.
- A criação dos objetos de transformação requer a API Python. Ao guardar um ponto de controlo, a Ultralytics serializa-os com
Os exemplos abaixo requerem Albumentations 1.4.22 ou posterior e, por isso, Python 3.9 ou posterior.
import albumentations as A
from ultralytics import YOLO
# Carregar um modelo
model = YOLO("yolo26n.pt")
# Definir transformações Albumentations personalizadas
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),
]
# Treinar com transformações Albumentations personalizadas
model.train(
data="coco8.yaml",
epochs=100,
augmentations=custom_transforms, # Passar transformações personalizadas
imgsz=640,
)Perguntas frequentes#
A escolha dos aumentos adequados depende do teu caso de utilização e do teu conjunto de dados. Seguem-se algumas orientações gerais para te ajudar a decidir:
- Na maioria dos casos, pequenas variações de cor e luminosidade são benéficas. Os valores predefinidos de
hsv_h,hsv_sehsv_vsão um bom ponto de partida. - Se o ponto de vista da câmara for consistente e não mudar depois de o modelo ser implementado, provavelmente podes dispensar transformações geométricas como
degrees(rotação),translate,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 for aceitável ter objetos parcialmente ocultos ou vários objetos por imagem, sem alterar o valor do rótulo. Em alternativa, podes mantermosaicativo e aumentar o valor declose_mosaicpara o desativar mais cedo durante o processo de treino.
Em resumo: simplifica. Começa com um conjunto pequeno de aumentos e adiciona mais gradualmente, conforme necessário. O objetivo é melhorar a capacidade de generalização e a robustez do modelo, não complicar excessivamente o processo de treino. Além disso, certifica-te de que os aumentos aplicados refletem a mesma distribuição de dados que o modelo encontrará em produção.
- Na maioria dos casos, pequenas variações de cor e luminosidade são benéficas. Os valores predefinidos de
Se o pacote
albumentationsestiver instalado, a Ultralytics aplica automaticamente um conjunto de aumentos de imagem adicionais através desse pacote. Estes aumentos são geridos internamente e não requerem configuração adicional.Podes encontrar a lista completa das transformações aplicadas na nossa documentação técnica e no nosso guia de integração de Albumentations. Nota que só estão ativos os aumentos cuja probabilidade
pé superior a0. São aplicados intencionalmente com baixa frequência para imitar artefactos visuais do mundo real, como efeitos de desfoque ou escala de cinzentos.Também podes fornecer as tuas próprias transformações Albumentations personalizadas através da API Python. Consulta a secção Funcionalidades avançadas de aumento para mais informações.
Verifica se o pacote
albumentationsestá instalado. Caso contrário, instala-o:pip install albumentationsDepois de instalado, o pacote deverá ser detetado e utilizado automaticamente pela Ultralytics.
Podes personalizar os aumentos criando uma classe de conjunto de dados e um treinador personalizados. Por exemplo, podes substituir os aumentos de classificação predefinidos da Ultralytics por torchvision.transforms.Resize do PyTorch ou por outras transformações. Consulta o exemplo de treino personalizado na documentação de classificação para veres os detalhes da implementação.













































