Ultralytics YOLO27:
Get Started

Predição de modelos com o Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Introdução#

No mundo da aprendizagem automática e da visão computacional, o processo de interpretar dados visuais é frequentemente chamado inferência ou predição. O Ultralytics YOLO26 oferece uma funcionalidade poderosa conhecida como modo predict, concebida para inferência de alto desempenho em tempo real com uma ampla variedade de fontes de dados.

Consulta a pré-visualização inédita do YOLO27 para ver exemplos de inferência planeados.



Assista: Como extrair resultados de tarefas do Ultralytics YOLO26 para projetos personalizados 🚀

Aplicações no mundo real#

Indústria transformadoraDesportoSegurança
Deteção de peças sobresselentes de veículosDeteção de jogadores de futebolDeteção de quedas de pessoas

Por que usar o Ultralytics YOLO para inferência?#

Veja por que deves considerar o modo de predição do YOLO26 para as tuas diversas necessidades de inferência:

  • Versatilidade: capaz de executar inferências em imagens, vídeos e até transmissões ao vivo.
  • Desempenho: desenvolvido para processamento em tempo real e alta velocidade, sem sacrificar a precisão.
  • Facilidade de uso: interfaces intuitivas de Python e CLI para implantação e testes rápidos.
  • Altamente personalizável: várias configurações e parâmetros permitem ajustar o comportamento da inferência do modelo de acordo com os teus requisitos específicos.
  • Pronto para produção: implanta modelos como endpoints de inferência da Ultralytics Platform com escalabilidade automática e monitoramento, ou executa a inferência localmente.

Principais recursos do modo de predição#

O modo de predição do YOLO26 foi desenvolvido para ser robusto e versátil, com os seguintes recursos:

  • Compatibilidade com várias fontes de dados: sejam dados na forma de imagens individuais, coleções de imagens, arquivos de vídeo ou transmissões de vídeo em tempo real, o modo de predição atende às tuas necessidades.
  • Modo de streaming: usa o recurso de streaming para gerar um gerador de objetos Results que economiza memória. Ativa esse recurso definindo stream=True no método de chamada do preditor. Ao contrário do comportamento padrão (stream=False), que retorna uma lista contendo todos os resultados, stream=True fornece os resultados um de cada vez, o que é especialmente útil para vídeos longos e transmissões ao vivo.
  • Processamento em lote: processa várias imagens ou quadros de vídeo em um único lote, reduzindo ainda mais o tempo total de inferência.
  • Fácil integração: integra facilmente com pipelines de dados existentes e outros componentes de software graças à API flexível.

Os modelos Ultralytics YOLO retornam uma lista Python de objetos Results ou um gerador de objetos Results que economiza memória quando stream=True é passado para o modelo durante a inferência:

Prever
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n.pt")  # modelo YOLO26n pré-treinado

# Executa inferência em lote em uma lista de imagens
results = model(["image1.jpg", "image2.jpg"])  # retorna uma lista de objetos Results

# Processa a lista de resultados
for result in results:
    boxes = result.boxes  # Objeto Boxes para saídas de caixas delimitadoras
    masks = result.masks  # Objeto Masks para saídas de máscaras de segmentação
    keypoints = result.keypoints  # Objeto Keypoints para saídas de pose
    probs = result.probs  # Objeto Probs para saídas de classificação
    obb = result.obb  # Objeto de caixas orientadas para saídas OBB
    result.show()  # exibe na tela
    result.save(filename="result.jpg")  # salva no disco

Fontes de inferência#

O YOLO26 pode processar diferentes tipos de fontes de entrada para inferência, como mostra a tabela abaixo. As fontes incluem imagens estáticas, transmissões de vídeo e vários formatos de dados. A tabela também indica se cada fonte pode ser usada no modo de streaming com o argumento stream=True ✅. O modo de streaming é útil para processar vídeos ou transmissões ao vivo, pois cria um gerador de resultados em vez de carregar todos os quadros na memória.

Dica

Usa stream=True para processar vídeos longos ou grandes conjuntos de dados e gerenciar a memória com eficiência. Quando stream=False, os resultados de todos os quadros ou pontos de dados são armazenados na memória, o que pode se acumular rapidamente e causar erros de falta de memória para entradas grandes. Em contrapartida, stream=True usa um gerador que mantém na memória apenas os resultados do quadro ou ponto de dados atual, reduzindo significativamente o consumo de memória e evitando problemas de falta de memória.

FonteExemploTipoObservações
imagem'image.jpg'str ou PathArquivo de imagem único.
URL'https://ultralytics.com/images/bus.jpg'strURL de uma imagem.
captura de tela'screen'strCaptura de tela.
PILImage.open('image.jpg')PIL.ImageFormato HWC com canais RGB.
OpenCVcv2.imread('image.jpg')np.ndarrayFormato HWC com canais BGR uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayFormato HWC com canais BGR uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorFormato BCHW com canais RGB float32 (0.0-1.0).
CSV'sources.csv'str ou PathArquivo CSV com caminhos para imagens, vídeos ou diretórios.
vídeo ✅'video.mp4'str ou PathArquivo de vídeo em formatos como MP4, AVI etc.
diretório ✅'path/'str ou PathCaminho para um diretório com imagens ou vídeos.
glob ✅'path/*.jpg'strPadrão glob para corresponder a vários arquivos. Usa o caractere * como curinga.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL de um vídeo do YouTube.
stream ✅'rtsp://example.com/media.mp4'strURL para protocolos de streaming como RTSP, RTMP, TCP ou um endereço IP.
multi-stream ✅'list.streams'str ou PathArquivo de texto *.streams com uma URL de transmissão por linha; ou seja, 8 transmissões serão executadas com batch-size 8.
webcam ✅0intÍndice do dispositivo de câmera conectado para executar a inferência.

Abaixo estão exemplos de código para usar cada tipo de fonte:

Fontes de predição

Executa inferência em um arquivo de imagem.

from ultralytics import YOLO

# Carrega um modelo YOLO26n pré-treinado
model = YOLO("yolo26n.pt")

# Define o caminho para o arquivo de imagem
source = "path/to/image.jpg"

# Executa inferência na fonte
results = model(source)  # lista de objetos Results

Argumentos de inferência#

model.predict() aceita vários argumentos que podem ser passados no momento da inferência para substituir os valores padrão:

Formato fixo vs. retângulo mínimo (rect)#

Por padrão, predict usa rect=True, que permite o preenchimento de retângulo mínimo quando possível. A imagem é redimensionada para caber em imgsz e recebe preenchimento apenas até o múltiplo de stride mais próximo, então o tensor final pode ser menor que imgsz. O preenchimento de retângulo mínimo só é usado quando todas as imagens do lote têm o mesmo formato e o backend oferece suporte (PyTorch .pt ou uma exportação com formato dinâmico, como ONNX dinâmico). Caso contrário, as imagens recebem preenchimento até o destino de imgsz completo.

Use rect=False para sempre preencher até o destino imgsz completo. Essa opção é recomendada quando você precisa de um tamanho de entrada fixo compatível com modelos exportados (ONNX, TensorRT etc.).

imgsz inteiro vs. tupla

  • Um imgsz=640 inteiro se torna um destino quadrado (640, 640) após o arredondamento para stride.
  • Uma tupla imgsz=(384, 672) define um destino retangular. Com rect=True, o tensor real pode ser menor que esse destino.

Treinamento vs. predict/export

O treinamento aceita apenas um imgsz inteiro (uma lista [h, w] é convertida para o maior valor). Predict e export aceitam um inteiro ou uma tupla (height, width).

Exemplo
from ultralytics import YOLO

# Carrega um modelo YOLO26n pré-treinado
model = YOLO("yolo26n.pt")

# Execute inferência em 'bus.jpg' com argumentos
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)

Argumentos de inferência:

ArgumentoTipoPadrãoDescrição
sourcestr ou int ou NoneNoneEspecifica a origem dos dados para a inferência. Pode ser o caminho de uma imagem, um ficheiro de vídeo, um diretório, um URL ou o ID de um dispositivo para transmissões em direto. Se não for especificada, é registado um aviso e o modelo recorre aos recursos de demonstração integrados (ultralytics/assets ou um URL de demonstração para OBB). Suporta uma grande variedade de formatos e origens, permitindo uma aplicação flexível em diferentes tipos de entrada.
conffloat0.25Define o limiar mínimo de confiança para as deteções. Os objetos detetados com confiança abaixo deste limiar são descartados. Ajustar este valor pode ajudar a reduzir os falsos positivos.
ioufloat0.7Limiar de interseção sobre união (IoU) para a supressão não máxima (NMS). Valores mais baixos resultam em menos deteções, eliminando caixas sobrepostas, o que é útil para reduzir duplicados.
imgszint ou tuple640Alvo do letterbox. Um número inteiro define um N×N quadrado; uma tupla define (height, width). Com rect=True, o tensor real pode ser menor do que este alvo devido ao preenchimento em retângulo mínimo. Usa rect=False para um tamanho fixo. Consulta Formato fixo vs. retângulo mínimo.
rectboolTrueSe True, usa preenchimento em retângulo mínimo quando possível (lotes com o mesmo formato e backend compatível). Se False, preenche sempre até ao tamanho completo imgsz. Consulta Formato fixo vs. retângulo mínimo.
quantizeint ou strNonePrecisão de inferência: 16/"fp16" e 32/"fp32"/unset selecionam o cálculo em FP16 ou FP32 para modelos PyTorch e TorchScript (FP32 na CPU); os outros formatos usam a precisão selecionada pelo artefato e pelo ambiente de execução. Em 16, o OpenVINO ainda arredonda a entrada para FP16 no cliente e a converte de volta para FP32, sem alterar a precisão do ambiente de execução. A quantização INT8/PTQ é configurada durante a exportação e, em seguida, usada ao carregar o modelo exportado. Substitui a flag obsoleta half.
devicestrNoneEspecifica o dispositivo para a inferência (por exemplo, cpu, cuda:0, 0, npu ou npu:0). Permite selecionar entre CPU, uma GPU específica, uma NPU Huawei Ascend ou outros dispositivos de computação para executar o modelo.
dnnboolFalseSe True, usa o módulo DNN do OpenCV em vez do ONNX Runtime para inferência com modelos ONNX.
datastrNoneCaminho para um YAML de conjunto de dados (por exemplo, coco8.yaml), lido apenas para obter names e somente quando o modelo carregado não tem nomes de classe próprios: uma exportação de terceiros ou uma exportação da Ultralytics separada dos metadados que a acompanham. Caso contrário, esse modelo informa class0, class1 e assim por diante.
batchint1Especifica o tamanho do lote para inferência (funciona apenas quando a origem é um diretório, um arquivo de vídeo ou um arquivo .txt). Um tamanho de lote maior pode aumentar a taxa de processamento e reduzir o tempo total necessário para a inferência.
max_detint300Número máximo de detecções permitido por imagem. Limita o número total de objetos que o modelo pode detectar em uma única inferência, evitando saídas excessivas em cenas densas.
vid_strideint1Intervalo entre quadros para entradas de vídeo. Permite ignorar quadros em vídeos para acelerar o processamento, à custa da resolução temporal. O valor 1 processa todos os quadros; valores maiores ignoram quadros.
stream_bufferboolFalseDetermina se os quadros recebidos em fluxos de vídeo devem ser enfileirados. Se False, os quadros antigos são descartados para dar lugar aos novos (otimizado para aplicações em tempo real). Se True, os quadros novos são enfileirados em um buffer, garantindo que nenhum quadro seja ignorado, mas causando latência se o FPS da inferência for inferior ao FPS do fluxo.
visualizeboolFalseSalva um mapa de calor de ativação de classe junto a cada predição, mostrando quais pixels elevaram as pontuações da classe prevista. Respeita conf e classes, portanto classes=[0] mapeia apenas essa classe. Disponível somente para modelos PyTorch da Ultralytics.
augmentboolFalseAtiva o aumento em tempo de teste (TTA) para as predições, podendo melhorar a robustez da detecção à custa da velocidade de inferência. Disponível somente para modelos PyTorch da Ultralytics.
agnostic_nmsboolFalseAtiva a Supressão Não Máxima (NMS) independente de classe, suprimindo caixas sobrepostas com pontuações menores entre classes diferentes, em vez de apenas dentro da mesma classe. Útil em cenários de detecção multiclasse nos quais a sobreposição entre classes é comum. Com a inferência sem NMS (nms=False no YOLO26 ou YOLOv10), isso apenas impede que a mesma detecção apareça com vários rótulos de classe (duplicatas com IoU=1.0) e não aplica supressão baseada em limiar de IoU entre caixas distintas.
classeslist[int]NoneFiltra as predições para um conjunto de IDs de classe. Somente as detecções pertencentes às classes especificadas serão retornadas. Útil para priorizar objetos relevantes em tarefas de detecção multiclasse.
retina_masksboolFalseRetorna máscaras de segmentação em alta resolução. Quando ativado, as máscaras retornadas (masks.data) correspondem ao tamanho original da imagem. Quando desativado, elas têm o tamanho da imagem usado durante a inferência.
embedlist[int]NoneEspecifica as camadas das quais extrair vetores de características ou incorporações. Usa model.embed(source) para incorporações da penúltima camada ou model.predict(source, embed=[layer]) para selecionar camadas específicas. Útil para tarefas posteriores, como agrupamento ou busca por similaridade. Disponível somente para modelos PyTorch da Ultralytics.
projectstrNoneNome do diretório do projeto onde as saídas das predições são salvas quando save está ativado.
namestrNoneNome da execução de predição. Usado para criar um subdiretório dentro da pasta do projeto, onde as saídas das predições são armazenadas quando save está ativado.
streamboolFalseAtiva o processamento com uso eficiente de memória para vídeos longos ou muitas imagens, retornando um gerador de objetos Results em vez de carregar todos os quadros na memória de uma só vez.
verboseboolTrueControla se os registros detalhados da inferência são exibidos no terminal, fornecendo informações em tempo real sobre o processo de predição.
compilebool ou strFalseAtiva a compilação de grafos torch.compile do PyTorch 2.x com backend='inductor'. Aceita True → "default", False → desativa, ou um modo em formato de string, como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Se não for suportado, recorre à execução ansiosa e apresenta um aviso.
channels_lastboolNoneUsa o formato de memória channels_last (NHWC) para inferência nativa com PyTorch. None ativa-o automaticamente em CPUs x86 com Linux e Windows compatíveis com oneDNN e PyTorch 1.13 ou mais recente; False desativa-o; e True solicita-o em dispositivos CPU x86 ou CUDA compatíveis. ARM64, MPS, versões mais antigas do PyTorch, CPUs sem oneDNN e formatos exportados, como TensorRT e ONNX, permanecem inalterados.
nmsbool, opcionalNoneExecuta inferência de um para muitos com NMS por padrão (None ou True). Define False para usar a cabeça de um para um sem NMS quando disponível. Consulte o guia de detecção de ponta a ponta para obter detalhes.

Argumentos de visualização:

ArgumentoTipoPadrãoDescrição
showboolFalseSe True, exibe as imagens ou os vídeos anotados em uma janela. Útil para obter feedback visual imediato durante o desenvolvimento ou os testes.
saveboolFalse or TrueAtiva o salvamento das imagens ou dos vídeos anotados em arquivos. Útil para documentação, análises adicionais ou compartilhamento de resultados. O padrão é True ao usar a CLI e False ao usar Python.
save_framesboolFalseAo processar vídeos, salva os quadros individuais como imagens. Útil para extrair quadros específicos ou fazer uma análise detalhada quadro a quadro.
save_txtboolFalseSalva os resultados da detecção em um arquivo de texto, seguindo o formato [class] [x_center] [y_center] [width] [height] [confidence]. Útil para integração com outras ferramentas de análise.
save_confboolFalseInclui pontuações de confiança nos arquivos de texto salvos. Aumenta o nível de detalhe disponível para pós-processamento e análise.
save_cropboolFalseSalva imagens recortadas das detecções. Útil para aumento de dados, análise ou criação de conjuntos de dados específicos para determinados objetos.
show_labelsboolTrueExibe os rótulos de cada detecção na saída visual. Permite identificar imediatamente os objetos detectados.
show_confboolTrueExibe a pontuação de confiança de cada detecção junto ao rótulo. Mostra o grau de certeza do modelo em cada detecção.
show_boxesboolTrueDesenha caixas delimitadoras ao redor dos objetos detectados. Essencial para identificar visualmente e localizar objetos em imagens ou quadros de vídeo.
line_widthint or NoneNoneEspecifica a espessura das linhas das caixas delimitadoras. Se None, a espessura da linha é ajustada automaticamente com base no tamanho da imagem. Permite personalizar a visualização para melhorar a clareza.

Formatos de imagem e vídeo#

YOLO26 é compatível com vários formatos de imagem e vídeo, conforme especificado em ultralytics/data/utils.py. Consulte as tabelas abaixo para ver os sufixos válidos e exemplos de comandos predict.

Imagens#

A tabela abaixo contém formatos de imagem válidos do Ultralytics.

Nota

Os formatos HEIC/HEIF exigem pi-heif, que é instalado automaticamente no primeiro uso. O Pillow oferece suporte nativo a AVIF.

Sufixos de imagemExemplo de comando predictReferência
.avifyolo predict source=image.avifFormato de arquivo de imagem AV1
.bmpyolo predict source=image.bmpFormato de arquivo BMP da Microsoft
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicFormato de imagem de alta eficiência
.heifyolo predict source=image.heifFormato de imagem de alta eficiência
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoObjeto de várias imagens
.pngyolo predict source=image.pngGráficos de rede portáteis
.tifyolo predict source=image.tifFormato de arquivo de imagem com tags
.tiffyolo predict source=image.tiffFormato de arquivo de imagem com tags
.webpyolo predict source=image.webpWebP

Vídeos#

A tabela abaixo contém formatos de vídeo válidos do Ultralytics.

Sufixos de vídeoExemplo de comando predictReferência
.asfyolo predict source=video.asfFormato de sistemas avançados
.aviyolo predict source=video.aviEntrelaçamento de áudio e vídeo
.gifyolo predict source=video.gifFormato de intercâmbio de gráficos
.m4vyolo predict source=video.m4vMPEG-4 Parte 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movFormato de arquivo QuickTime
.mp4yolo predict source=video.mp4MPEG-4 Parte 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Parte 2
.mpgyolo predict source=video.mpgMPEG-1 Parte 2
.tsyolo predict source=video.tsFluxo de transporte MPEG
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmProjeto WebM

Trabalhando com Results#

Todas as chamadas predict() do Ultralytics retornam uma lista de objetos Results:

Results
from ultralytics import YOLO

# Carrega um modelo YOLO26n pré-treinado
model = YOLO("yolo26n.pt")

# Executa a inferência numa imagem
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
    [
        "https://ultralytics.com/images/bus.jpg",
        "https://ultralytics.com/images/zidane.jpg",
    ]
)  # inferência em lotes

Os objetos Results têm os seguintes atributos:

AtributoTipoDescrição
orig_imgnp.ndarrayA imagem original como um array NumPy.
orig_shapetupleO formato da imagem original no formato (altura, largura).
boxesBoxes, optionalUm objeto Boxes que contém as caixas delimitadoras das detecções.
masksMasks, optionalUm objeto Masks que contém as máscaras das detecções.
probsProbs, optionalUm objeto Probs que contém as probabilidades de cada classe para a tarefa de classificação.
keypointsKeypoints, optionalUm objeto Keypoints que contém os pontos-chave detectados de cada objeto.
obbOBB, optionalUm objeto OBB que contém caixas delimitadoras orientadas.
semantic_maskSemanticMask, optionalUm objeto SemanticMask que contém um mapa de classes denso por pixel.
depthDepthMap, optionalUm objeto DepthMap que contém um mapa de profundidade denso por pixel.
speeddictUm dicionário com as velocidades de pré-processamento, inferência e pós-processamento em milissegundos por imagem.
namesdictUm dicionário que mapeia os índices de classe para os nomes das classes.
pathstrO caminho para o arquivo de imagem.
save_dirstr, optionalDiretório para salvar os resultados.

Resultados por tarefa#

Quais campos são preenchidos depende da tarefa do seu modelo — compare detecção, segmentação, segmentação semântica, estimativa de profundidade, classificação, pose e OBB se você ainda não escolheu uma. Cada previsão retorna um objeto Results por imagem ou quadro. Os campos comuns acima estão sempre disponíveis, enquanto os dados de previsão específicos da tarefa são armazenados nos campos abaixo. Os tensores de coordenadas e confiança do YOLO são torch.float32; os tensores de probabilidade são torch.float32, a menos que seja usada inferência FP16 (quantize=16), caso em que são torch.float16. Após result.numpy(), os tensores se tornam arrays NumPy com tipos de dados NumPy correspondentes. As máscaras de instância são tensores binários torch.uint8, enquanto as máscaras semânticas usam o menor tipo de dado inteiro prático para os IDs de classe: torch.uint8, torch.int16 ou torch.int32, dependendo do número de classes.

AtributoTipoFormatoDescrição
result.boxesBoxes(N)Caixas de detecção.
result.boxes.datatorch.float32(N,6/7)[x1,y1,x2,y2,conf,cls] brutos, além do ID de rastreamento opcional.
result.boxes.xyxytorch.float32(N,4)Caixas de pixels xyxy.
result.boxes.conftorch.float32(N,)Pontuações de confiança.
result.boxes.clstorch.float32(N,)IDs de classe; converta para int para obter os nomes.

Os objetos Results têm os seguintes métodos:

MétodoTipo devolvidoDescrição
update()NoneAtualiza o objeto Results com novos dados, como caixas, máscaras, probabilidades, OBB, pontos-chave, máscaras semânticas ou profundidade.
cpu()ResultsRetorna uma cópia do objeto Results com todos os tensores movidos para a memória da CPU.
numpy()ResultsRetorna uma cópia do objeto Results com todos os tensores convertidos em arrays NumPy.
cuda()ResultsRetorna uma cópia do objeto Results com todos os tensores movidos para a memória da GPU.
to()ResultsRetorna uma cópia do objeto Results com os tensores movidos para o dispositivo e o tipo de dados especificados.
new()ResultsCria um novo objeto Results com os mesmos atributos de imagem, caminho, nomes e velocidade.
plot()np.ndarrayPlota os resultados da detecção em uma imagem BGR de entrada e retorna a imagem anotada.
show()NoneExibe a imagem com os resultados da inferência anotados.
save()strSalva em um arquivo a imagem com os resultados da inferência anotados e retorna o nome do arquivo.
verbose()strRetorna uma string de log para cada tarefa, detalhando os resultados da detecção e da classificação.
save_txt()strSalva os resultados da detecção em um arquivo de texto e retorna o caminho do arquivo salvo.
save_crop()NoneSalva as imagens recortadas das detecções no diretório especificado.
summary()List[Dict[str, Any]]Converte os resultados da inferência em um dicionário resumido, com normalização opcional.
to_df()DataFrameConverte os resultados da detecção em um DataFrame do Polars.
to_csv()strConverte os resultados da detecção para o formato CSV.
to_json()strConverte os resultados da detecção para o formato JSON.

Para mais detalhes, consulta a documentação da classe Results.

Caixas#

O objeto Boxes pode ser usado para indexar, manipular e converter caixas delimitadoras em diferentes formatos.

Caixas
from ultralytics import YOLO

# Carrega um modelo YOLO26n pré-treinado
model = YOLO("yolo26n.pt")

# Executa a inferência numa imagem
results = model("https://ultralytics.com/images/bus.jpg")  # lista de resultados

# Ver resultados
for r in results:
    print(r.boxes)  # imprima o objeto Boxes que contém as caixas delimitadoras das detecções

Veja uma tabela com os métodos e as propriedades da classe Boxes, incluindo nome, tipo e descrição:

NomeTipoDescrição
cpu()MétodoMove o objeto para a memória da CPU.
numpy()MétodoConverte o objeto em um array NumPy.
cuda()MétodoMove o objeto para a memória CUDA.
to()MétodoMove o objeto para o dispositivo especificado.
xyxyPropriedade (torch.Tensor)Retorna as caixas no formato xyxy.
confPropriedade (torch.Tensor)Retorna os valores de confiança das caixas.
clsPropriedade (torch.Tensor)Retorna os valores de classe das caixas.
idPropriedade (torch.Tensor)Retorna os IDs de rastreamento das caixas (se disponíveis).
xywhPropriedade (torch.Tensor)Retorna as caixas no formato xywh.
xyxynPropriedade (torch.Tensor)Retorna as caixas no formato xyxy, normalizadas pelo tamanho da imagem original.
xywhnPropriedade (torch.Tensor)Retorna as caixas no formato xywh, normalizadas pelo tamanho da imagem original.

Para mais detalhes, consulta a documentação da classe Boxes.

Máscaras#

O objeto Masks pode ser usado para indexar, manipular e converter máscaras em segmentos.

Máscaras
from ultralytics import YOLO

# Carregue um modelo YOLO26n-seg Segment pré-treinado
model = YOLO("yolo26n-seg.pt")

# Executa a inferência numa imagem
results = model("https://ultralytics.com/images/bus.jpg")  # lista de resultados

# Ver resultados
for r in results:
    print(r.masks)  # imprima o objeto Masks que contém as máscaras de instância detectadas

Veja uma tabela com os métodos e as propriedades da classe Masks, incluindo nome, tipo e descrição:

NomeTipoDescrição
dataPropriedade (torch.Tensor)Tensor de máscara binária torch.uint8 com formato (N,H,W) e valores 0 ou 1.
cpu()MétodoRetorna o tensor de máscaras na memória da CPU.
numpy()MétodoRetorna o tensor de máscaras como um array NumPy.
cuda()MétodoRetorna o tensor de máscaras na memória da GPU.
to()MétodoRetorna o tensor de máscaras com o dispositivo e o tipo de dados especificados.
xynPropriedade (list[np.ndarray])Uma lista de polígonos de máscara normalizados.
xyPropriedade (list[np.ndarray])Uma lista de polígonos de máscara em coordenadas de pixel.

Para mais detalhes, consulta a documentação da classe Masks.

SemanticMask#

SemanticMask armazena um mapa de classes denso para resultados de segmentação semântica. Ao contrário de Masks, não contém uma máscara binária por objeto nem oferece funções auxiliares para polígonos.

SemanticMask
from ultralytics import YOLO

# Carregue um modelo YOLO26n-sem Semantic pré-treinado
model = YOLO("yolo26n-sem.pt")

# Executa a inferência numa imagem
results = model("https://ultralytics.com/images/bus.jpg")  # lista de resultados

# Ver resultados
for r in results:
    print(r.semantic_mask.data)  # imprima o mapa de IDs de classe H x W
NomeTipoDescrição
dataPropriedade (torch.Tensor)Mapa de IDs de classe com formato (H,W). O tipo de dados é torch.uint8, torch.int16 ou torch.int32, selecionado de acordo com a quantidade de classes.
shapePropriedade (tuple)Formato do mapa de classes, geralmente igual ao de result.orig_shape.
cpu()MétodoRetorna o tensor da máscara semântica na memória da CPU.
numpy()MétodoRetorna o tensor da máscara semântica como um array NumPy.
cuda()MétodoRetorna o tensor da máscara semântica na memória da GPU.
to()MétodoRetorna o tensor da máscara semântica com o dispositivo e o tipo de dados especificados.

Pontos-chave#

O objeto Keypoints pode ser usado para indexar, manipular e normalizar coordenadas.

Pontos-chave
from ultralytics import YOLO

# Carregue um modelo YOLO26n-pose Pose pré-treinado
model = YOLO("yolo26n-pose.pt")

# Executa a inferência numa imagem
results = model("https://ultralytics.com/images/bus.jpg")  # lista de resultados

# Ver resultados
for r in results:
    print(r.keypoints)  # imprima o objeto Keypoints que contém os pontos-chave detectados

Veja uma tabela com os métodos e as propriedades da classe Keypoints, incluindo nome, tipo e descrição:

NomeTipoDescrição
cpu()MétodoRetorna o tensor de pontos-chave na memória da CPU.
numpy()MétodoRetorna o tensor de pontos-chave como um array NumPy.
cuda()MétodoRetorna o tensor de pontos-chave na memória da GPU.
to()MétodoRetorna o tensor de pontos-chave com o dispositivo e o tipo de dados especificados.
xynPropriedade (torch.Tensor)Coordenadas normalizadas dos pontos-chave com formato (N,K,2).
xyPropriedade (torch.Tensor)Coordenadas dos pontos-chave em pixels com formato (N,K,2).
confPropriedade (torch.Tensor)Retorna os valores de confiança dos pontos-chave, se disponíveis; caso contrário, retorna None.

Para mais detalhes, consulta a documentação da classe Keypoints.

Probabilidades#

O objeto Probs pode ser usado para obter os índices e as pontuações de classificação top1 e top5.

Probabilidades
from ultralytics import YOLO

# Carregue um modelo YOLO26n-cls Classify pré-treinado
model = YOLO("yolo26n-cls.pt")

# Executa a inferência numa imagem
results = model("https://ultralytics.com/images/bus.jpg")  # lista de resultados

# Ver resultados
for r in results:
    print(r.probs)  # imprima o objeto Probs que contém as probabilidades das classes detectadas

Veja uma tabela que resume os métodos e as propriedades da classe Probs:

NomeTipoDescrição
cpu()MétodoRetorna uma cópia do tensor probs na memória da CPU.
numpy()MétodoRetorna uma cópia do tensor probs como um array NumPy.
cuda()MétodoRetorna uma cópia do tensor probs na memória da GPU.
to()MétodoRetorna uma cópia do tensor probs com o dispositivo e o tipo de dados especificados.
top1Propriedade (int)Índice da classe com a maior pontuação.
top5Propriedade (list[int])Índices das 5 classes com as maiores pontuações.
top1confPropriedade (torch.Tensor)Confiança da classe com a maior pontuação.
top5confPropriedade (torch.Tensor)Confianças das 5 classes com as maiores pontuações.

Para mais detalhes, consulta a documentação da classe Probs.

OBB#

O objeto OBB pode ser usado para indexar, manipular e converter caixas delimitadoras orientadas para diferentes formatos.

OBB
from ultralytics import YOLO

# Carrega um modelo YOLO26n pré-treinado
model = YOLO("yolo26n-obb.pt")

# Executa a inferência numa imagem
results = model("https://ultralytics.com/images/boats.jpg")  # lista de resultados

# Ver resultados
for r in results:
    print(r.obb)  # imprime o objeto OBB que contém as caixas delimitadoras das detecções orientadas

Veja uma tabela com os métodos e as propriedades da classe OBB, incluindo nome, tipo e descrição:

NomeTipoDescrição
cpu()MétodoMove o objeto para a memória da CPU.
numpy()MétodoConverte o objeto em um array NumPy.
cuda()MétodoMove o objeto para a memória CUDA.
to()MétodoMove o objeto para o dispositivo especificado.
confPropriedade (torch.Tensor)Retorna os valores de confiança das caixas.
clsPropriedade (torch.Tensor)Retorna os valores de classe das caixas.
idPropriedade (torch.Tensor)Retorna os IDs de rastreamento das caixas (se disponíveis).
xyxyPropriedade (torch.Tensor)Retorna as caixas horizontais no formato xyxy.
xywhrPropriedade (torch.Tensor)Retorna as caixas rotacionadas no formato xywhr.
xyxyxyxyPropriedade (torch.Tensor)Retorna as caixas rotacionadas no formato xyxyxyxy.
xyxyxyxynPropriedade (torch.Tensor)Retorna as caixas rotacionadas no formato xyxyxyxy normalizadas pelo tamanho da imagem.

Para mais detalhes, consulta a documentação da classe OBB.

Visualização dos resultados#

O método plot() dos objetos Results facilita a visualização das predições ao sobrepor os objetos detectados (como caixas delimitadoras, máscaras, pontos-chave e probabilidades) à imagem original. Esse método retorna a imagem anotada como um array NumPy, facilitando sua exibição ou gravação.

Visualização
from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"])  # results list

# Visualize the results
for i, r in enumerate(results):
    # Plot results image
    im_bgr = r.plot()  # BGR-order numpy array
    im_rgb = Image.fromarray(im_bgr[..., ::-1])  # RGB-order PIL image

    # Show results to screen (in supported environments)
    r.show()

    # Save results to disk
    r.save(filename=f"results{i}.jpg")

Parâmetros do método plot()#

O método plot() aceita vários argumentos para personalizar a saída:

ArgumentoTipoDescriçãoPadrão
confboolInclui as pontuações de confiança das detecções.True
line_widthfloatEspessura da linha das caixas delimitadoras. Ajusta-se ao tamanho da imagem se None.None
font_sizefloatTamanho da fonte do texto. Ajusta-se ao tamanho da imagem se None.None
fontstrNome da fonte para as anotações de texto.'Arial.ttf'
pilboolRetorna a imagem como um objeto PIL Image.False
imgnp.ndarray | torch.TensorImagem alternativa. Os tensores devem ser contíguos no formato HWC BGR uint8.None
kpt_radiusintRaio dos pontos-chave desenhados.5
kpt_lineboolConecta os pontos-chave com linhas.True
labelsboolInclui os rótulos das classes nas anotações.True
boxesboolSobrepõe as caixas delimitadoras à imagem.True
masksboolSobrepõe as máscaras à imagem.True
probsboolInclui as probabilidades de classificação.True
showboolExibe a imagem anotada diretamente usando o visualizador de imagens padrão.False
saveboolSalva a imagem anotada no arquivo especificado por filename.False
filenamestrCaminho e nome do arquivo em que a imagem anotada será salva se save for True.None
color_modestrEspecifica o modo de cor, por exemplo, 'instance' ou 'class'.'class'
txt_colortuple[int, int, int]Cor do texto em BGR para os rótulos de classificação.(255, 255, 255)

Inferência segura para threads#

Garantir a segurança entre threads durante a inferência é fundamental quando você executa vários modelos YOLO em paralelo, em diferentes threads. A inferência segura para threads garante que as predições de cada thread sejam isoladas e não interfiram umas nas outras, evitando condições de corrida e garantindo resultados consistentes e confiáveis.

Ao usar modelos YOLO em um aplicativo multithread, é importante instanciar objetos de modelo separados para cada thread ou usar armazenamento local à thread para evitar conflitos:

Inferência segura para threads

Instancie um único modelo em cada thread para realizar inferências com segurança entre threads:

from threading import Thread

from ultralytics import YOLO

def thread_safe_predict(model, image_path):
    """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
    model = YOLO(model)
    results = model.predict(image_path)
    # Processa os resultados

# Inicia threads, cada uma com sua própria instância do modelo
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()

Para uma análise aprofundada da inferência segura para threads com modelos YOLO e instruções passo a passo, consulte nosso Guia de inferência segura para threads com YOLO. Este guia fornece todas as informações necessárias para evitar problemas comuns e garantir que a inferência multithread seja executada sem complicações.

Loop for da fonte de streaming#

Este é um script Python que usa OpenCV (cv2) e YOLO para executar inferências em quadros de vídeo. O script pressupõe que você já instalou os pacotes necessários (opencv-python e ultralytics).

Loop for para streaming
import cv2

from ultralytics import YOLO

# Carregar o modelo YOLO
model = YOLO("yolo26n.pt")

# Abre o arquivo de vídeo
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Percorre os quadros do vídeo
while cap.isOpened():
    # Lê um quadro do vídeo
    success, frame = cap.read()

    if success:
        # Executa a inferência YOLO no quadro
        results = model(frame)

        # Visualiza os resultados no quadro
        annotated_frame = results[0].plot()

        # Exibe o quadro anotado
        cv2.imshow("YOLO Inference", annotated_frame)

        # Interrompe o loop se 'q' for pressionado
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Interrompe o loop se o vídeo chegar ao fim
        break

# Libera o objeto de captura de vídeo e fecha a janela de exibição
cap.release()
cv2.destroyAllWindows()

Este script executa predições em cada quadro do vídeo, visualiza os resultados e os exibe em uma janela. Você pode sair do loop pressionando 'q'.

O que fazer a seguir#

Pronto para ir além de um modelo pré-treinado? Confirme se a sua tarefa atende ao seu problema, formate seus próprios dados com o guia de conjuntos de dados e, em seguida, treine com eles.

Perguntas frequentes#

  • O Ultralytics YOLO é um modelo de última geração para detecção de objetos, segmentação de instâncias, segmentação semântica, estimativa de profundidade, classificação, estimativa de pose e detecção de caixas delimitadoras orientadas (OBB) em tempo real. O modo de predição permite que você faça inferências de alta velocidade em várias fontes de dados, como imagens, vídeos e transmissões ao vivo. Projetado para oferecer desempenho e versatilidade, ele também disponibiliza processamento em lote e modos de streaming. Para saber mais sobre seus recursos, confira o modo de predição do Ultralytics YOLO.

  • O Ultralytics YOLO pode processar uma ampla variedade de fontes de dados, incluindo imagens individuais, vídeos, diretórios, URLs e transmissões. Você pode especificar a fonte de dados na chamada model.predict(). Por exemplo, use 'image.jpg' para uma imagem local ou 'https://ultralytics.com/images/bus.jpg' para uma URL. Confira os exemplos detalhados de várias fontes de inferência na documentação.

  • Para otimizar a velocidade de inferência e gerenciar a memória com eficiência, você pode usar o modo de streaming definindo stream=True no método de chamada do preditor. O modo de streaming gera um gerador de objetos Results com uso eficiente de memória, em vez de carregar todos os quadros na memória. O modo de streaming é especialmente útil para processar vídeos longos ou grandes conjuntos de dados. Saiba mais sobre o modo de streaming.

  • O método model.predict() do YOLO aceita vários argumentos, como conf, iou, imgsz, device e outros. Esses argumentos permitem personalizar o processo de inferência, definindo parâmetros como limites de confiança, tamanho da imagem e dispositivo usado para a computação. Você encontra descrições detalhadas desses argumentos na seção argumentos de inferência.

  • Use model.embed(source) para extrair embeddings de características da penúltima camada ou passe embed=[layer_index] para model.predict() para escolher camadas específicas.

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    source = "https://ultralytics.com/images/bus.jpg"
    
    results = model.predict(source)  # Objetos Results
    embeddings = model.embed(source)  # lista de embeddings torch.Tensor
  • Depois de executar inferências com YOLO, os objetos Results contêm métodos para exibir e salvar imagens anotadas. Você pode usar métodos como result.show() e result.save(filename="result.jpg") para visualizar e salvar os resultados. Todos os diretórios-pai inexistentes no caminho do arquivo são criados automaticamente (por exemplo, result.save("path/to/result.jpg")). Para ver a lista completa desses métodos, consulte a seção trabalhar com resultados.

Comentários