Ultralytics YOLO27:

Predição de modelos com 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 de inferência ou predição. O Ultralytics YOLO26 oferece uma funcionalidade avançada conhecida como modo predict, concebida para inferência de alto desempenho e em tempo real numa ampla variedade de fontes de dados.

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



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

Aplicações no mundo real#

FabricoDesportoSegurança
Deteção de peças sobresselentes de veículosDeteção de jogadores de futebolDeteção de quedas de pessoas

Porquê usar o Ultralytics YOLO para inferência?#

Eis por que deves considerar o modo predict do YOLO26 para as tuas várias necessidades de inferência:

  • Versatilidade: Capaz de executar inferência em imagens, vídeos e até transmissões em direto.
  • Desempenho: Desenvolvido para processamento em tempo real e de alta velocidade, sem sacrificar a precisão.
  • Facilidade de utilização: Interfaces intuitivas de Python e CLI para implementação e testes rápidos.
  • Altamente personalizável: Várias definições e parâmetros permitem ajustar o comportamento de inferência do modelo de acordo com os teus requisitos específicos.
  • Pronto para produção: Implementa modelos como endpoints de inferência da Ultralytics Platform, com escalabilidade automática e monitorização, ou executa a inferência localmente.

Principais funcionalidades do modo predict#

O modo predict do YOLO26 foi concebido para ser robusto e versátil, incluindo:

  • Compatibilidade com várias fontes de dados: Quer os teus dados estejam na forma de imagens individuais, uma coleção de imagens, ficheiros de vídeo ou transmissões de vídeo em tempo real, o modo predict trata de tudo.
  • Modo de streaming: Usa a funcionalidade de streaming para gerar um gerador eficiente em termos de memória de objetos Results. Ativa-a definindo stream=True no método de chamada do preditor. Ao contrário do comportamento predefinido (stream=False), que devolve uma lista com todos os resultados, stream=True produz os resultados um de cada vez, sendo especialmente útil para vídeos longos e transmissões em direto.
  • Processamento em lotes: Processa várias imagens ou frames de vídeo num ú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 à sua API flexível.

Os modelos Ultralytics YOLO devolvem uma lista Python de objetos Results ou um gerador eficiente em termos de memória de objetos Results quando stream=True é passado ao modelo durante a inferência:

Previsão
from ultralytics import YOLO

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

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk

Fontes de inferência#

O YOLO26 pode processar diferentes tipos de fontes de entrada para inferência, conforme apresentado na 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 em direto, pois cria um gerador de resultados em vez de carregar todos os frames para a memória.

Dica

Usa stream=True para processar vídeos longos ou grandes conjuntos de dados e gerir a memória de forma eficiente. Quando stream=False, os resultados de todos os frames ou pontos de dados são armazenados na memória, o que pode aumentar rapidamente e causar erros de memória insuficiente em entradas grandes. Em contrapartida, stream=True utiliza um gerador que mantém na memória apenas os resultados do frame ou ponto de dados atual, reduzindo significativamente o consumo de memória e evitando problemas de memória insuficiente.

OrigemExemploTipoNotas
imagem'image.jpg'str ou PathFicheiro de imagem individual.
URL'https://ultralytics.com/images/bus.jpg'strURL para uma imagem.
captura de ecrã'screen'strCaptura uma captura de ecrã.
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 PathFicheiro CSV que contém caminhos para imagens, vídeos ou diretórios.
vídeo ✅'video.mp4'str ou PathFicheiro de vídeo em formatos como MP4, AVI, etc.
diretório ✅'path/'str ou PathCaminho para um diretório que contém imagens ou vídeos.
glob ✅'path/*.jpg'strPadrão Glob para corresponder a vários ficheiros. Usa o carácter * como curinga.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL para 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 PathFicheiro de texto *.streams com um URL de stream por linha; por exemplo, 8 streams serão executados com um tamanho de lote 8.
webcam ✅0intÍndice do dispositivo de câmara ligado no qual executar a inferência.

Abaixo encontram-se exemplos de código para utilizar cada tipo de fonte:

Fontes de predição

Executa a inferência num ficheiro de imagem.

from ultralytics import YOLO

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

# Define path to the image file
source = "path/to/image.jpg"

# Run inference on the source
results = model(source)  # list of Results objects

Argumentos de inferência#

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

Forma fixa vs retângulo mínimo (rect)#

Por predefinição, predict usa rect=True, que ativa o preenchimento de retângulo mínimo quando possível. A imagem é redimensionada para caber em imgsz e preenchida apenas até ao múltiplo de stride mais próximo, pelo que o tensor final pode ser menor do que imgsz. O preenchimento de retângulo mínimo só é utilizado quando todas as imagens do lote têm a mesma forma e o backend o suporta (.pt do PyTorch ou ONNX / Triton dinâmico). Caso contrário, as imagens são preenchidas até ao destino completo imgsz.

Usa rect=False para preencher sempre até ao destino completo imgsz. Isto é recomendado quando precisas de um tamanho de entrada fixo para corresponder a modelos exportados (ONNX, TensorRT, etc.).

Inteiro vs tuplo imgsz

  • Um inteiro imgsz=640 torna-se num destino quadrado (640, 640) após o arredondamento pelo stride.
  • Um tuplo imgsz=(384, 672) define um destino retangular. Com rect=True e auto=True, o tensor real pode ser menor do que este destino.

Treino vs predict/export

O treino aceita apenas um único inteiro imgsz (uma lista [h, w] é convertida no maior valor). Predict e export aceitam um inteiro ou um tuplo (height, width).

Exemplo
from ultralytics import YOLO

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

# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)

Argumentos de inferência:

ArgumentoTipoPredefiniçãoDescrição
sourcestr ou int ou NoneNoneEspecifica a fonte de dados para a inferência. Pode ser um caminho de imagem, um ficheiro de vídeo, um diretório, um URL ou um ID de dispositivo para transmissões em direto. Se for omitida, é 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 vasta gama de formatos e fontes, permitindo uma aplicação flexível em diferentes tipos de entrada.
conffloat0.25Define o limite mínimo de confiança para as deteções. Os objetos detetados com confiança abaixo deste limite serão ignorados. Ajustar este valor pode ajudar a reduzir falsos positivos.
ioufloat0.7Limite de Interseção sobre União (IoU) para a Supressão de Não Máximos (NMS). Valores mais baixos resultam em menos deteções ao eliminar caixas sobrepostas, o que é útil para reduzir duplicados.
imgszint ou tuple640Alvo do letterbox. Um inteiro fornece um N×N quadrado; uma tupla fornece (height, width). Com rect=True, o tensor real pode ser menor do que este alvo devido ao preenchimento de retângulo mínimo. Usa rect=False para um tamanho fixo. Consulta Forma fixa vs. retângulo mínimo.
rectboolTrueSe True, usa preenchimento de retângulo mínimo quando possível (batch com a mesma forma e backend compatível). Se False, preenche sempre até ao imgsz completo. Consulta Forma fixa vs. retângulo mínimo.
quantizeint ou strNonePrecisão de inferência: 16/"fp16" e 32/"fp32"/unset selecionam computação FP16 ou FP32 para modelos PyTorch e TorchScript; outros formatos computam na precisão que o artefato e o tempo de execução selecionam. Em 16, o OpenVINO ainda arredonda a entrada para FP16 no cliente e a expande de volta para FP32, sem alterar o que o tempo de execução calcula. A quantização INT8/PTQ é configurada durante a export, sendo usada posteriormente 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, NPU Huawei Ascend ou outros dispositivos de computação para executar o modelo.
dnnboolFalseSe True, utiliza o módulo DNN do OpenCV em vez do ONNX Runtime para a inferência de modelos ONNX.
datastrNoneCaminho para um YAML de dataset (por exemplo, coco8.yaml), lido apenas para o seu names e apenas quando o modelo carregado não tem nomes de classes próprios: uma exportação de terceiros ou uma exportação da Ultralytics separada dos metadados que a acompanham. Caso contrário, esse modelo comunica class0, class1 e assim por diante.
batchint1Especifica o tamanho do batch para a inferência (funciona apenas quando a origem é um diretório, um ficheiro de vídeo ou um ficheiro .txt). Um tamanho de batch maior pode proporcionar um débito superior, reduzindo o tempo total necessário para a inferência.
max_detint300Número máximo de deteções permitido por imagem. Limita o número total de objetos que o modelo pode detetar numa única inferência, evitando resultados excessivos em cenas densas.
vid_strideint1Passo de frames para entradas de vídeo. Permite ignorar frames em vídeos para acelerar o processamento, com o custo de reduzir a resolução temporal. Um valor de 1 processa todos os frames; valores superiores ignoram frames.
stream_bufferboolFalseDetermina se os frames recebidos devem ser colocados numa fila para streams de vídeo. Se False, os frames antigos são descartados para acomodar os novos (otimizado para aplicações em tempo real). Se True, os novos frames são colocados numa fila num buffer, garantindo que nenhum frame é ignorado, mas causando latência se o FPS da inferência for inferior ao FPS do stream.
visualizeboolFalseGuarda um mapa de calor de ativação das classes junto a cada predição, mostrando quais pixels aumentaram as pontuações das classes previstas. Respeita conf e classes, pelo que classes=[0] mapeia apenas essa classe. Disponível apenas para modelos PyTorch da Ultralytics.
augmentboolFalseAtiva o aumento em tempo de teste (TTA) para as predições, podendo melhorar a robustez da deteção à custa da velocidade de inferência. Disponível apenas para modelos PyTorch da Ultralytics.
agnostic_nmsboolFalseAtiva a Supressão Não Máxima (NMS) agnóstica de classes, suprimindo caixas sobrepostas com pontuações mais baixas em diferentes classes, em vez de apenas na mesma classe. Útil em cenários de deteção multi-classe onde a sobreposição de classes é comum. Com a inferência sem NMS (nms=False no YOLO26 ou YOLOv10), isto apenas evita que a mesma deteção apareça com múltiplos rótulos de classe (duplicados de IoU=1.0) e não efetua a supressão baseada no limiar de IoU entre caixas distintas.
classeslist[int]NoneFiltra as predições para um conjunto de IDs de classes. Apenas serão devolvidas as deteções pertencentes às classes especificadas. É útil para te concentrares nos objetos relevantes em tarefas de deteção multiclasse.
retina_masksboolFalseDevolve máscaras de segmentação de alta resolução. Quando ativadas, as máscaras devolvidas (masks.data) corresponderão ao tamanho da imagem original. Quando desativadas, terão o tamanho da imagem utilizado durante a inferência.
embedlist[int]NoneEspecifica as camadas das quais extrair vetores de características ou embeddings. Usa model.embed(source) para embeddings da penúltima camada ou model.predict(source, embed=[layer]) para selecionar camadas específicas. É útil para tarefas posteriores, como agrupamento ou pesquisa por similaridade. Disponível apenas para modelos PyTorch da Ultralytics.
projectstrNoneNome do diretório do projeto onde os resultados das predições são guardados se save estiver ativado.
namestrNoneNome da execução da predição. Utilizado para criar um subdiretório dentro da pasta do projeto, onde os resultados das predições são guardados se save estiver ativado.
streamboolFalseAtiva o processamento eficiente em termos de memória para vídeos longos ou numerosas imagens, devolvendo um gerador de objetos Results em vez de carregar todos os frames na memória de uma só vez.
verboseboolTrueControla se os registos detalhados da inferência são apresentados no terminal, fornecendo feedback 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 de string, como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Recorre ao modo eager com um aviso se não houver suporte.
channels_lastboolNoneUtiliza o formato de memória channels_last (NHWC) para a inferência nativa do PyTorch. None ativa-o automaticamente em CPUs x86 Linux e Windows com oneDNN ativado e PyTorch 1.13 ou posterior; False desativa-o; e True solicita-o em CPUs x86 ou dispositivos CUDA compatíveis. ARM64, MPS, versões 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 predefinição (None ou True). Define False para utilizar o cabeçote de um para um sem NMS quando disponível. Vê o guia de Deteção de Ponta a Ponta para obter detalhes.

Argumentos de visualização:

ArgumentoTipoPredefiniçãoDescrição
showboolFalseSe True, apresenta as imagens ou vídeos anotados numa janela. É útil para obter feedback visual imediato durante o desenvolvimento ou os testes.
saveboolFalse or TrueAtiva a gravação das imagens ou vídeos anotados em ficheiros. É útil para documentação, análises adicionais ou partilha de resultados. O valor predefinido é True ao utilizar a CLI e False ao utilizar Python.
save_framesboolFalseAo processar vídeos, guarda os frames individuais como imagens. É útil para extrair frames específicos ou para uma análise detalhada frame a frame.
save_txtboolFalseGuarda os resultados das deteções num ficheiro 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 as pontuações de confiança nos ficheiros de texto guardados. Aumenta o nível de detalhe disponível para pós-processamento e análise.
save_cropboolFalseGuarda imagens recortadas das deteções. É útil para aumento de datasets, análise ou criação de datasets focados em objetos específicos.
show_labelsboolTrueApresenta etiquetas para cada deteção no resultado visual. Permite compreender imediatamente os objetos detetados.
show_confboolTrueApresenta a pontuação de confiança de cada deteção junto à etiqueta. Permite compreender o grau de certeza do modelo em cada deteção.
show_boxesboolTrueDesenha caixas delimitadoras à volta dos objetos detetados. É essencial para a identificação visual e a localização de objetos em imagens ou fotogramas de vídeo.
line_widthint or NoneNoneEspecifica a largura das linhas das caixas delimitadoras. Se None, a largura da linha é ajustada automaticamente com base no tamanho da imagem. Permite uma personalização visual para maior clareza.

Formatos de imagem e vídeo#

YOLO26 suporta 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 de previsão.

Imagens#

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

Nota

Os formatos HEIC/HEIF requerem pi-heif, que é instalado automaticamente na primeira utilização. AVIF é suportado nativamente pelo Pillow.

Sufixos de imagemComando de previsão de exemploReferência
.avifyolo predict source=image.avifFormato de ficheiro de imagem AV1
.bmpyolo predict source=image.bmpFormato de ficheiro 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.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP

Vídeos#

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

Sufixos de vídeoComando de previsão de exemploReferência
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Parte 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movFormato de ficheiro QuickTime
.mp4yolo predict source=video.mp4MPEG-4 Parte 14 - Wikipédia
.mpegyolo predict source=video.mpegMPEG-1 Parte 2
.mpgyolo predict source=video.mpgMPEG-1 Parte 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmProjeto WebM

Trabalhar com resultados#

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

Resultados
from ultralytics import YOLO

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

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

Os objetos Results têm os seguintes atributos:

AtributoTipoDescrição
orig_imgnp.ndarrayA imagem original como um array NumPy.
orig_shapetupleA forma da imagem original no formato (altura, largura).
boxesBoxes, optionalUm objeto Boxes que contém as caixas delimitadoras das deteções.
masksMasks, optionalUm objeto Masks que contém as máscaras das deteçõ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 detetados 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.
speeddictUm dicionário com as velocidades de pré-processamento, inferência e pós-processamento em milissegundos por imagem.
namesdictUm dicionário que associa índices de classe a nomes de classe.
pathstrO caminho para o ficheiro de imagem.
save_dirstr, optionalDiretório onde guardar os resultados.

Resultados por tarefa#

Quais campos abaixo são preenchidos depende da tarefa do teu modelo — compara deteção, segmentação, segmentação semântica, estimativa de profundidade, classificação, pose e OBB se ainda não escolheste uma. Cada predição devolve um objeto Results por imagem ou fotograma. Os campos comuns acima estão sempre disponíveis, enquanto os dados de predição específicos da tarefa são armazenados nos campos abaixo. Os tensores de coordenadas e confiança YOLO são torch.float32; os tensores de probabilidade são torch.float32, a menos que seja usada precisão misturada/metade, caso em que são torch.float16. Após result.numpy(), os tensores tornam-se matrizes do NumPy com tipos de dados (dtypes) do NumPy correspondentes. As máscaras de instância são tensores binários torch.uint8, enquanto as máscaras semânticas utilizam o tipo de dados inteiro mais prático para IDs de classe: torch.uint8, torch.int16 ou torch.int32, dependendo da contagem de classes.

AtributoTipoFormaDescrição
result.boxesBoxes(N)Caixas de deteção.
result.boxes.datatorch.float32(N,6/7)[x1,y1,x2,y2,conf,cls] bruto, além de um ID de rastreio 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; converte para int para obter os nomes.

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

MétodoTipo de retornoDescrição
update()NoneAtualiza o objeto Results com novos dados, como caixas, máscaras, probs, obb, pontos-chave ou máscaras semânticas.
cpu()ResultsDevolve uma cópia do objeto Results com todos os tensores movidos para a memória da CPU.
numpy()ResultsDevolve uma cópia do objeto Results com todos os tensores convertidos em arrays NumPy.
cuda()ResultsDevolve uma cópia do objeto Results com todos os tensores movidos para a memória da GPU.
to()ResultsDevolve uma cópia do objeto Results com os tensores movidos para o dispositivo e 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 deteção numa imagem BGR de entrada e devolve a imagem anotada.
show()NoneApresenta a imagem com os resultados da inferência anotados.
save()strGuarda a imagem dos resultados da inferência anotados num ficheiro e devolve o nome do ficheiro.
verbose()strDevolve uma cadeia de registo para cada tarefa, detalhando os resultados da deteção e da classificação.
save_txt()strGuarda os resultados da deteção num ficheiro de texto e devolve o caminho para o ficheiro guardado.
save_crop()NoneGuarda as imagens recortadas das deteções no diretório especificado.
summary()List[Dict[str, Any]]Converte os resultados da inferência num dicionário resumido, com normalização opcional.
to_df()DataFrameConverte os resultados da deteção num DataFrame do Polars.
to_csv()strConverte os resultados da deteção para o formato CSV.
to_json()strConverte os resultados da deteção para o formato JSON.

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

Caixas#

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

Caixas
from ultralytics import YOLO

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

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.boxes)  # print the Boxes object containing the detection bounding boxes

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

NomeTipoDescrição
cpu()MétodoMove o objeto para a memória da CPU.
numpy()MétodoConverte o objeto numa matriz NumPy.
cuda()MétodoMove o objeto para a memória CUDA.
to()MétodoMove o objeto para o dispositivo especificado.
xyxyPropriedade (torch.Tensor)Devolve as caixas no formato xyxy.
confPropriedade (torch.Tensor)Devolve os valores de confiança das caixas.
clsPropriedade (torch.Tensor)Devolve os valores das classes das caixas.
idPropriedade (torch.Tensor)Devolve os IDs de rastreamento das caixas (se disponíveis).
xywhPropriedade (torch.Tensor)Devolve as caixas no formato xywh.
xyxynPropriedade (torch.Tensor)Devolve as caixas no formato xyxy normalizadas pelo tamanho da imagem original.
xywhnPropriedade (torch.Tensor)Devolve 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 utilizado para indexar, manipular e converter máscaras em segmentos.

Máscaras
from ultralytics import YOLO

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

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.masks)  # print the Masks object containing the detected instance masks

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

NomeTipoDescrição
dataPropriedade (torch.Tensor)Tensor de máscara binária torch.uint8 com a forma (N,H,W) e valores 0 ou 1.
cpu()MétodoDevolve o tensor de máscaras na memória da CPU.
numpy()MétodoDevolve o tensor de máscaras como uma matriz NumPy.
cuda()MétodoDevolve o tensor de máscaras na memória da GPU.
to()MétodoDevolve o tensor de máscaras com o dispositivo e o dtype 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 píxeis.

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

SemanticMask#

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

SemanticMask
from ultralytics import YOLO

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

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.semantic_mask.data)  # print the H x W class-ID map
NomeTipoDescrição
dataPropriedade (torch.Tensor)Mapa de IDs de classe com a forma (H,W). O dtype é torch.uint8, torch.int16 ou torch.int32, selecionado pela quantidade de classes.
shapePropriedade (tuple)Forma do mapa de classes, geralmente correspondente a result.orig_shape.
cpu()MétodoDevolve o tensor de máscara semântica na memória da CPU.
numpy()MétodoDevolve o tensor de máscara semântica como uma matriz NumPy.
cuda()MétodoDevolve o tensor de máscara semântica na memória da GPU.
to()MétodoDevolve o tensor de máscara semântica com o dispositivo e o dtype especificados.

Pontos-chave#

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

Pontos-chave
from ultralytics import YOLO

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

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.keypoints)  # print the Keypoints object containing the detected keypoints

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

NomeTipoDescrição
cpu()MétodoDevolve o tensor de pontos-chave na memória da CPU.
numpy()MétodoDevolve o tensor de pontos-chave como uma matriz NumPy.
cuda()MétodoDevolve o tensor de pontos-chave na memória da GPU.
to()MétodoDevolve o tensor de pontos-chave com o dispositivo e o dtype especificados.
xynPropriedade (torch.Tensor)Uma lista de pontos-chave normalizados representados como tensores.
xyPropriedade (torch.Tensor)Uma lista de pontos-chave em coordenadas de píxeis representados como tensores.
confPropriedade (torch.Tensor)Devolve os valores de confiança dos pontos-chave, se disponíveis; caso contrário, None.

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

Probs#

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

Probs
from ultralytics import YOLO

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

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.probs)  # print the Probs object containing the detected class probabilities

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

NomeTipoDescrição
cpu()MétodoDevolve uma cópia do tensor probs na memória da CPU.
numpy()MétodoDevolve uma cópia do tensor probs como uma matriz NumPy.
cuda()MétodoDevolve uma cópia do tensor probs na memória da GPU.
to()MétodoDevolve uma cópia do tensor probs com o dispositivo e o dtype especificados.
top1Propriedade (int)Índice da classe com maior probabilidade.
top5Propriedade (list[int])Índices das 5 classes com maior probabilidade.
top1confPropriedade (torch.Tensor)Confiança da classe com maior probabilidade.
top5confPropriedade (torch.Tensor)Confianças das 5 classes com maior probabilidade.

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

OBB#

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

OBB
from ultralytics import YOLO

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

# Run inference on an image
results = model("https://ultralytics.com/images/boats.jpg")  # results list

# View results
for r in results:
    print(r.obb)  # print the OBB object containing the oriented detection bounding boxes

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

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

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

Resultados da plotagem#

O método plot() nos objetos Results facilita a visualização das previsões ao sobrepor objetos detetados (como caixas delimitadoras, máscaras, pontos-chave e probabilidades) na imagem original. Este método devolve a imagem anotada como uma matriz NumPy, permitindo apresentá-la ou guardá-la facilmente.

Plotagem
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 o resultado:

ArgumentoTipoDescriçãoPredefinição
confboolIncluir as pontuações de confiança das deteções.True
line_widthfloatLargura das linhas das caixas delimitadoras. É ajustada de acordo com o tamanho da imagem se None.None
font_sizefloatTamanho do tipo de letra do texto. É ajustado de acordo com o tamanho da imagem se None.None
fontstrNome do tipo de letra das anotações de texto.'Arial.ttf'
pilboolDevolver a imagem como um objeto PIL Image.False
imgnp.ndarray | torch.TensorImagem alternativa. Os tensores têm de ser HWC BGR uint8 contíguos.None
kpt_radiusintRaio dos pontos-chave desenhados.5
kpt_lineboolLigar os pontos-chave com linhas.True
labelsboolIncluir os rótulos das classes nas anotações.True
boxesboolSobrepor caixas delimitadoras na imagem.True
masksboolSobrepor máscaras na imagem.True
probsboolIncluir as probabilidades de classificação.True
showboolApresentar diretamente a imagem anotada utilizando o visualizador de imagens predefinido.False
saveboolGuardar a imagem anotada num ficheiro especificado por filename.False
filenamestrCaminho e nome do ficheiro onde guardar a imagem anotada se save for True.None
color_modestrEspecificar o modo de cor, por exemplo, 'instance' ou 'class'.'class'
txt_colortuple[int, int, int]Cor do texto BGR do rótulo da caixa delimitadora e da classificação da imagem.(255, 255, 255)

Inferência segura para threads#

Garantir a segurança dos threads durante a inferência é essencial quando executas vários modelos YOLO em paralelo em diferentes threads. A inferência segura para threads garante que as previsões de cada thread ficam isoladas e não interferem umas com as outras, evitando condições de corrida e assegurando resultados consistentes e fiáveis.

Ao utilizar modelos YOLO numa aplicação multithread, é importante instanciar objetos de modelo separados para cada thread ou utilizar armazenamento local ao thread para evitar conflitos:

Inferência segura para threads

Instancia um único modelo dentro de cada thread para garantir uma inferência segura para 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)
    # Process results

# Starting threads that each have their own model instance
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, consulta o nosso Guia de inferência YOLO segura para threads. Este guia fornece todas as informações necessárias para evitar problemas comuns e garantir que a tua inferência multithread funciona sem problemas.

Ciclo for de origem em streaming#

Eis um script Python que utiliza OpenCV (cv2) e YOLO para executar inferência em frames de vídeo. Este script pressupõe que já instalaste os pacotes necessários (opencv-python e ultralytics).

Ciclo for de streaming
import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo26n.pt")

# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLO inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLO Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

Este script executa previsões em cada frame do vídeo, visualiza os resultados e apresenta-os numa janela. Podes sair do ciclo premindo 'q'.

E agora?#

Pronto para avançar para além de um modelo pré-treinado? Confirma que a tua tarefa se adequa ao teu problema, formata os teus próprios dados com o guia de conjuntos de dados e, em seguida, treina o modelo com eles.

Perguntas frequentes#

  • O Ultralytics YOLO é um modelo de última geração para deteção de objetos, segmentação de instâncias, segmentação semântica, estimativa de profundidade e classificação em tempo real. O seu modo de previsão permite realizar inferência de alta velocidade em várias fontes de dados, como imagens, vídeos e transmissões em direto. Concebido para oferecer desempenho e versatilidade, também disponibiliza modos de processamento em lote e de streaming. Para mais detalhes sobre as suas funcionalidades, consulta o modo de previsão do Ultralytics YOLO.

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

  • Para otimizar a velocidade da inferência e gerir a memória de forma eficiente, podes utilizar o modo de streaming definindo stream=True no método de chamada do preditor. O modo de streaming gera um iterador eficiente em termos de memória de objetos Results, em vez de carregar todos os frames para a memória. O modo de streaming é particularmente útil para processar vídeos longos ou grandes conjuntos de dados. Obtém mais informações sobre o modo de streaming.

  • O método model.predict() no YOLO é compatível com vários argumentos, como conf, iou, imgsz, device e muito mais. Estes argumentos permitem personalizar o processo de inferência, definindo parâmetros como limiares de confiança, o tamanho da imagem e o dispositivo utilizado para o cálculo. Podes encontrar descrições detalhadas destes argumentos na secção argumentos de inferência.

  • Utiliza model.embed(source) para extrair embeddings de características da penúltima camada ou passa embed=[layer_index] a 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)  # Results objects
    embeddings = model.embed(source)  # list of torch.Tensor embeddings
  • Depois de executares a inferência com o YOLO, os objetos Results contêm métodos para apresentar e guardar imagens anotadas. Podes utilizar métodos como result.show() e result.save(filename="result.jpg") para visualizar e guardar os resultados. Quaisquer diretórios-pai em falta no caminho do nome do ficheiro são criados automaticamente (por exemplo, result.save("path/to/result.jpg")). Para obteres uma lista completa destes métodos, consulta a secção trabalhar com resultados.

Comentários