Link to this sectionAumento de dados usando Ultralytics YOLO#
Link to this sectionIntrodução#
Aumento de dados é uma técnica crucial em visão computacional que expande artificialmente o teu conjunto de dados de treino ao aplicar várias transformações a 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.
Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀
Link to this sectionPorque é 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 o aumento adequado normalmente alcançam melhor precisão em conjuntos de validação e teste.
A implementação do Ultralytics YOLO oferece um conjunto abrangente de técnicas de aumento, cada uma servindo propósitos específicos e contribuindo para o desempenho do modelo de formas diferentes. Este guia explorará cada parâmetro de aumento detalhadamente, ajudando-te a entender quando e como usá-los eficazmente nos teus projetos.
Link to this sectionConfiguraçõ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="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)Link to this sectionUsando 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 ao usar a CLI. Este novo ficheiro YAML 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")Link to this sectionAumentos de Espaço de Cor#
Link to this sectionAjuste de Matiz (hsv_h)#
- Intervalo:
0.0-1.0 - Predefinição:
0.015 - Uso: Desloca as cores da imagem mantendo as suas relações. O hiperparâmetro
hsv_hdefine a magnitude do deslocamento, com 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 contorna a roda de cores, e é por isso que os aumentos parecem os mesmos 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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionAjuste de Saturação (hsv_s)#
- Intervalo:
0.0-1.0 - Predefinição:
0.7 - Uso: Modifica a intensidade das cores na imagem. O hiperparâmetro
hsv_sdefine a magnitude do deslocamento, com o ajuste final escolhido aleatoriamente entre-hsv_sehsv_s. Por exemplo, comhsv_s=0.7, a intensidade é selecionada aleatoriamente entre-0.7e0.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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionAjuste de Brilho (hsv_v)#
- Intervalo:
0.0-1.0 - Predefinição:
0.4 - Uso: Altera o brilho da imagem. O hiperparâmetro
hsv_vdefine a magnitude do deslocamento, com o ajuste final escolhido aleatoriamente entre-hsv_vehsv_v. Por exemplo, comhsv_v=0.4, a intensidade é selecionada aleatoriamente entre-0.4e0.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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionTransformações Geométricas#
Link to this sectionRotação (degrees)#
- Intervalo:
0.0a180 - Predefinição:
0 - Uso: Roda as imagens aleatoriamente dentro do intervalo especificado. O hiperparâmetro
degreesdefine o ângulo de rotação, com o ajuste final escolhido aleatoriamente entre-degreesedegrees. Por exemplo, comdegrees=10.0, a rotação é selecionada aleatoriamente entre-10.0e10.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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionTranslação (translate)#
- Intervalo:
0.0-1.0 - Predefiniçã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, com o ajuste final escolhido aleatoriamente duas vezes (uma para cada eixo) dentro do intervalo-translateatranslate. Por exemplo, comtranslate=0.5, a translação é selecionada aleatoriamente entre-0.5e0.5no eixo x, e outro valor aleatório independente é selecionado no 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: Para simplificar, as translações aplicadas abaixo são as mesmas sempre 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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionEscala (scale)#
- Intervalo:
0.0-1.0 - Predefinição:
0.5 - Uso: Redimensiona as imagens por um fator aleatório dentro do intervalo especificado. O hiperparâmetro
scaledefine o fator de escala, com o ajuste final escolhido aleatoriamente entre1-scalee1+scale. Por exemplo, comscale=0.5, a escala é selecionada aleatoriamente entre0.5e1.5. - 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 aqueles aplicados através do hiperparâmetro
scale, não o fator de escala final. - Se
scalefor maior que1.0, a imagem pode ficar muito pequena ou invertida, uma vez que o fator de escala é escolhido aleatoriamente entre1-scalee1+scale. Por exemplo, comscale=3.0, a escala é selecionada aleatoriamente entre-2.0e4.0. Se for escolhido um valor negativo, a imagem é invertida.
- O valor
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionCisalhamento (shear)#
- Intervalo:
-180a+180 - Predefinição:
0 - Uso: Introduz uma transformação geométrica que distorce a imagem ao longo dos eixos x e y, deslocando eficazmente 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 entre-10e10no eixo x, e outro valor aleatório independente é selecionado no 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, por isso recomenda-se 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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionPerspectiva (perspective)#
- Intervalo:
0.0-0.001 - Predefinição:
0 - Utilização: Aplica uma transformação de perspectiva completa ao longo dos eixos x e y, simulando como os objetos aparecem quando vistos de diferentes profundidades ou ângulos. O hiperparâmetro
perspectivedefine a magnitude da perspectiva, com o ajuste final escolhido aleatoriamente entre-perspectiveeperspective. Por exemplo, comperspective=0.001, a perspectiva é selecionada aleatoriamente dentro de-0.001a0.001no eixo x, e outro valor aleatório independente é selecionado dentro da mesma faixa 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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionInversão Vertical (flipud)#
- Intervalo:
0.0-1.0 - Predefinição:
0 - Usage: Performs a vertical flip by inverting the image along the y-axis. This transformation mirrors the entire image upside-down but preserves all spatial relationships between objects. The flipud hyperparameter defines the probability of applying the transformation, with a value of
flipud=1.0ensuring that all images are flipped and a value offlipud=0.0disabling the transformation entirely. For example, withflipud=0.5, each image has a 50% chance of being flipped upside-down. - 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 da Ultralytics: RandomFlip
flipud desligado | flipud ligado |
|---|---|
![]() | ![]() |
Link to this sectionInversão Horizontal (fliplr)#
- Intervalo:
0.0-1.0 - Predefinição:
0.5 - Utilização: Realiza 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.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 horizontalmente. - 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 da Ultralytics: RandomFlip
fliplr desligado | fliplr ligado |
|---|---|
![]() | ![]() |
Link to this sectionTroca de Canal 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 na qual as cores são representadas. O hiperparâmetro
bgrdefine a probabilidade de aplicar a transformação, combgr=1.0garantindo que todas as imagens passem pela troca de canal ebgr=0.0desativando-a. 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â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 da Ultralytics: Format
bgr desligado | bgr ligado |
|---|---|
![]() | ![]() |
Link to this sectionMosaico (mosaic)#
- Intervalo:
0.0-1.0 - Padrão:
1 - Utilização: Combina quatro imagens de treinamento em uma. O hiperparâmetro
mosaicdefine 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 três outras 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 da Ultralytics: Mosaic
- Nota:
- Mesmo que a aumentação
mosaictorne o modelo mais robusto, ela também pode tornar o processo de treinamento mais desafiador. - A aumentação
mosaicpode ser desativada perto do final do treinamento definindoclose_mosaicpara o número de épocas antes da conclusão em que ela deve ser desligada. Por exemplo, seepochsestiver definido como200eclose_mosaiccomo20, a aumentaçãomosaicserá desativada após180épocas. Seclose_mosaicestiver definido como0, a aumentaçãomosaicficará ativada durante todo o processo de treinamento. - O centro do mosaico gerado é determinado usando valores aleatórios, e pode estar dentro ou fora da imagem.
- A implementação atual da aumentação
mosaiccombina 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 a aumentação
mosaic desligado | mosaic ligado |
|---|---|
![]() | ![]() |
Link to this sectionMixup (mixup)#
- Intervalo:
0.0-1.0 - Predefinição:
0 - Utilização: Mistura duas imagens e seus rótulos com uma determinada probabilidade. O hiperparâmetro
mixupdefine 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 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 da Ultralytics: Mixup
- Nota:
- A proporção
mixupé um valor aleatório escolhido de uma distribuição betanp.random.beta(32.0, 32.0), o que significa que cada imagem contribui aproximadamente 50%, com pequenas variações.
- A proporção
Primeira imagem, mixup desligado | Segunda imagem, mixup desligado | mixup ligado |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionCutMix (cutmix)#
- Intervalo:
0.0-1.0 - Predefinição:
0 - Utilização: Recorta uma região retangular de uma imagem e a cola em outra imagem com uma determinada probabilidade. O hiperparâmetro
cutmixdefine a probabilidade de aplicar a transformação, comcutmix=1.0garantindo que todas as imagens passem por esta transformação ecutmix=0.0desativando-a completamente. Por exemplo, comcutmix=0.5, cada imagem tem 50% de chance de ter uma região substituída por um recorte 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 da Ultralytics: CutMix
- Nota:
- O tamanho e a posição da região recortada são determinados aleatoriamente para cada aplicação.
- Diferente do mixup, que mistura valores de pixel globalmente, o
cutmixmantém as intensidades originais dos pixels dentro das regiões recortadas, preservando as características locais. - Uma região é colada na imagem de destino apenas se não se sobrepor a nenhuma caixa delimitadora existente. Além disso, apenas as caixas delimitadoras que mantêm pelo menos
0.1(10%) da sua área original dentro da região colada são preservadas. - Este limite mínimo de área da caixa delimitadora não pode ser alterado na implementação atual e está definido como
0.1por padrão.
Primeira imagem, cutmix desligado | Segunda imagem, cutmix desligado | cutmix ligado |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionAumentações específicas para segmentação#
Link to this sectionCopy-Paste (copy_paste)#
- Intervalo:
0.0-1.0 - Predefinição:
0 - Utilização: Funciona apenas para tarefas de segmentação, esta aumentação copia objetos dentro ou entre imagens com base em uma probabilidade especificada, controlada pelo
copy_paste_mode. O hiperparâmetrocopy_pastedefine 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â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 da Ultralytics: CopyPaste
- Nota:
- Como retratado no gif abaixo, a aumentação
copy_pastepode ser usada para copiar objetos de uma imagem para outra. - Uma vez que um objeto é copiado, independentemente do
copy_paste_mode, sua Interseção sobre Área (IoA) é calculada com todos os objetos da imagem de origem. Se toda a IoA estiver abaixo de0.3(30%), o objeto é colado na imagem de destino. Se apenas uma das IoA estiver acima de0.3, o objeto não é colado na imagem de destino. - O limite de IoA não pode ser alterado na implementação atual e está definido como
0.3por padrão.
- Como retratado no gif abaixo, a aumentação
copy_paste desligado | copy_paste ligado com copy_paste_mode=flip | Visualize o processo copy_paste |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionModo Copy-Paste (copy_paste_mode)#
- Opções:
'flip','mixup' - Padrão:
'flip' - Utilização: Determina o método usado para a aumentação de copy-paste. Se definido como
'flip', os objetos vêm da mesma imagem, enquanto'mixup'permite que objetos sejam copiados de imagens diferentes. - 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 de IoA é o mesmo para ambos os
copy_paste_mode, mas a maneira 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 de IoA é o mesmo para ambos os
| Imagem de referência | Imagem escolhida para copy_paste | copy_paste ligado com copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionAumentações específicas para classificação#
Link to this sectionAuto Aumentação (auto_augment)#
- Opções:
'randaugment','autoaugment','augmix',None - Padrão:
'randaugment' - Uso: Aplica políticas de aumento automatizadas para classificação. A opção
'randaugment'usa RandAugment,'autoaugment'usa AutoAugment e'augmix'usa 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 datasets como ImageNet, CIFAR10 e SVHN. Você pode selecionar essas políticas existentes, mas não pode treinar novas dentro do Torchvision. Para descobrir estratégias de aumento ideais para datasets específicos, seriam necessárias bibliotecas externas ou implementações personalizadas. Referência ao 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 busca extensa, tornando-a computacionalmente mais eficiente enquanto ainda aumenta a robustez do modelo. Referência ao artigo sobre 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. Referência ao artigo sobre AugMix.
- Implementação da 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.
- Você pode consultar este artigo que compara os três métodos em detalhes.
Link to this sectionApagamento Aleatório (erasing)#
- Intervalo:
0.0-0.9 - Predefinição:
0.4 - Uso: Apaga aleatoriamente porções da imagem durante o treinamento de classificação. O hiperparâmetro
erasingdefine 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 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 da Ultralytics: classify_augmentations()
- Nota:
- O aumento
erasingvem com hiperparâmetrosscale,ratioevalueque não podem ser alterados com a implementação atual. Seus valores padrão são(0.02, 0.33),(0.3, 3.3)e0, respectivamente, conforme declarado na documentação do PyTorch. - O limite superior do hiperparâmetro
erasingé definido como0.9para evitar a aplicação da transformação a todas as imagens.
- O aumento
erasing desativado | erasing ativado (exemplo 1) | erasing ativado (exemplo 2) | erasing ativado (exemplo 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Link to this sectionRecursos Avançados de Aumento#
Link to this sectionTransformações Personalizadas do Albumentations (augmentations)#
- Tipo:
listde transformações do Albumentations - Padrão:
None - Uso: Permite fornecer transformações personalizadas do Albumentations para aumento de dados usando a API Python. Este parâmetro aceita uma lista de objetos de transformação do Albumentations que serão aplicados durante o treinamento em vez das transformações padrão do Albumentations.
- Objetivo: Proporciona controle refinado sobre estratégias de aumento de dados aproveitando a extensa biblioteca de transformações do Albumentations. Isso é particularmente útil quando você precisa de aumentos especializados além das opções integradas do YOLO, como ajustes avançados de cor, injeção de ruído ou transformações específicas de domínio.
- Implementação da Ultralytics: Albumentations
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(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,
)Pontos Principais:
- Apenas API Python: Transformações personalizadas do Albumentations são atualmente suportadas apenas através da API Python. Elas não podem ser especificadas via CLI ou arquivos de configuração YAML.
- Substitui Transformações Padrão: Quando você fornece transformações personalizadas através do parâmetro
augmentations, elas substituem completamente as transformações padrão do Albumentations. Os aumentos padrão do YOLO (comomosaic,hsv_h,hsv_s,degrees, etc.) permanecem ativos e são aplicados de forma independente. - Compatibilidade com Bounding Box: Tenha cuidado ao usar transformações espaciais (transformações que alteram a geometria da imagem). A Ultralytics lida automaticamente com ajustes de caixas delimitadoras, 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ção de Desempenho: Adicionar muitos aumentos ou usar transformações computacionalmente caras pode tornar o treinamento mais lento. Comece com um conjunto pequeno e monitore a velocidade de treinamento.
Casos de Uso Comuns:
- Imagens Médicas: Aplique transformações especializadas como deformações elásticas ou distorções de grade para aumento de imagens de raio-X ou ressonância magnética
- Imagens Aéreas/de Satélite: Use transformações otimizadas para perspectivas aéreas
- Condições de Baixa Luz: Aplique ajustes de ruído e brilho para simular iluminação desafiadora
- Inspeção Industrial: Adicione padrões semelhantes a defeitos ou variações de textura para aplicações de controle de qualidade
Notas de Compatibilidade:
- Requer a versão 1.0.3 ou superior do Albumentations
- Compatível com todas as tarefas de detecção e segmentação do YOLO
- Não aplicável a tarefas de classificação (a classificação usa um pipeline de aumento diferente)
Para obter mais informações sobre o Albumentations e as transformações disponíveis, visite a documentação oficial do Albumentations.
Link to this sectionFAQ#
Link to this sectionExistem muitos aumentos para escolher. Como sei quais usar?#
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 de cor e brilho são benéficas. Os valores padrão para
hsv_h,hsv_sehsv_vsão um ponto de partida sólido. - Se o ponto de vista da câmera for consistente e não mudar após o modelo ser implantado, você provavelmente pode pular transformações geométricas como
rotation,translation,scale,shearouperspective. No entanto, se o ângulo da câmera puder variar e você precisar que o modelo seja mais robusto, é melhor manter esses aumentos. - Use o aumento
mosaicapenas se ter objetos parcialmente ocluídos ou múltiplos objetos por imagem for aceitável e não alterar o valor do rótulo. Alternativamente, você pode manter omosaicativo, mas aumentar o valor declose_mosaicpara desativá-lo mais cedo no processo de treinamento.
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.
Link to this sectionAo iniciar um treinamento, vejo uma referência albumentations: Blur[...]. Isso significa que o Ultralytics YOLO executa aumentos adicionais como desfoque?#
Se o pacote albumentations estiver instalado, a Ultralytics aplica automaticamente um conjunto de aumentos de imagem extras usando-o. Esses aumentos são tratados internamente e não exigem configuração adicional.
Você pode encontrar a lista completa de transformações aplicadas em nossa 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. Eles são aplicados intencionalmente em baixas frequências para imitar artefatos visuais do mundo real, como desfoque ou efeitos em tons de cinza.
Você também pode fornecer suas próprias transformações personalizadas do Albumentations usando a API Python. Veja a seção Recursos Avançados de Aumento para mais detalhes.
Link to this sectionAo iniciar um treinamento, não vejo nenhuma referência ao albumentations. Por quê?#
Verifique se o pacote albumentations está instalado. Se não, você pode instalá-lo executando pip install albumentations. Uma vez instalado, o pacote deve ser automaticamente detectado e usado pela Ultralytics.
Link to this sectionComo personalizo meus aumentos?#
Você pode personalizar aumentos criando uma classe de dataset e um treinador personalizados. Por exemplo, você pode substituir os aumentos de classificação padrão da Ultralytics por torchvision.transforms.Resize do PyTorch ou outras transformações. Veja o exemplo de treinamento personalizado na documentação de classificação para detalhes de implementação.
















































