Salta para o conteúdo

Previsão de modelos com Ultralytics YOLO

Ultralytics YOLO ecossistema e integrações

Introdução

In the world of machine learning and computer vision, the process of making sense out of visual data is called 'inference' or 'prediction'. Ultralytics YOLO11 offers a powerful feature known as predict mode that is tailored for high-performance, real-time inference on a wide range of data sources.



Observa: How to Extract the Outputs from Ultralytics YOLO Model for Custom Projects.

Aplicações no mundo real

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

Porquê utilizar Ultralytics YOLO para a inferência?

Here's why you should consider YOLO11's predict mode for your various inference needs:

  • Versatilidade: Capaz de fazer inferências em imagens, vídeos e até mesmo em transmissões ao vivo.
  • Performance: Engineered for real-time, high-speed processing without sacrificing accuracy.
  • Facilidade de utilização: interfaces intuitivas Python e CLI para uma rápida implementação e teste.
  • Altamente personalizável: Várias definições e parâmetros para ajustar o comportamento de inferência do modelo de acordo com os teus requisitos específicos.

Principais características do Modo de previsão

YOLO11's predict mode is designed to be robust and versatile, featuring:

  • Compatibilidade com várias fontes de dados: Quer os teus dados se apresentem sob a forma de imagens individuais, uma coleção de imagens, ficheiros de vídeo ou fluxos de vídeo em tempo real, o modo de previsão tem tudo o que precisas.
  • Modo de transmissão em fluxo contínuo: Utiliza a funcionalidade de transmissão para criar um gerador de memória eficiente de Results objectos. Para o ativar, define stream=True no método de chamada do preditor.
  • Processamento em lote: A capacidade de processar várias imagens ou quadros de vídeo num único lote, acelerando ainda mais o tempo de inferência.
  • Fácil de integrar: Integra-se facilmente com pipelines de dados existentes e outros componentes de software, graças à sua API flexível.

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

Prevê

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n 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
from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n model

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

# Process results generator
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

YOLO11 can process different types of input sources for inference, as shown in the table below. The sources include static images, video streams, and various data formats. The table also indicates whether each source can be used in streaming mode with the argument stream=True ✅. O modo de transmissão em fluxo é benéfico para o processamento de vídeos ou transmissões em direto, uma vez que cria um gerador de resultados em vez de carregar todos os fotogramas na memória.

Dica

Utiliza stream=True para o processamento de vídeos longos ou grandes conjuntos de dados para gerir eficientemente a memória. Quando stream=FalseSe o teu computador não tiver uma memória de dados, os resultados de todos os fotogramas ou pontos de dados são armazenados na memória, o que pode rapidamente aumentar e causar erros de memória para grandes entradas. Em contrapartida, stream=True utiliza um gerador, que apenas mantém na memória os resultados do quadro ou ponto de dados atual, reduzindo significativamente o consumo de memória e evitando problemas de falta de memória.

FonteExemploTipoNotas
imagem'image.jpg'str ou PathFicheiro de imagem único.
URL'https://ultralytics.com/images/bus.jpg'strURL para uma imagem.
captura de ecrã'screen'strCaptura uma imagem do 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 directó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. Utiliza o * como um caractere curinga.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL para um vídeo do YouTube.
fluxo ✅'rtsp://example.com/media.mp4'strURL para protocolos de transmissão como RTSP, RTMP, TCP ou um endereço IP.
multi-fluxo ✅'list.streams'str ou Path*.streams ficheiro de texto com um URL de fluxo por linha, ou seja, 8 fluxos serão executados com o tamanho de lote 8.
webcam ✅0intIndex of the connected camera device to run inference on.

Abaixo estão exemplos de código para a utilização de cada tipo de fonte:

Fontes de previsão

Executa a inferência num ficheiro de imagem.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

Executa a inferência no conteúdo do ecrã atual como uma captura de ecrã.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define current screenshot as source
source = "screen"

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

Executa a inferência numa imagem ou vídeo alojado remotamente através de URL.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"

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

Executa a inferência numa imagem aberta com Python Imaging Library (PIL).

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Open an image using PIL
source = Image.open("path/to/image.jpg")

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

Executa a inferência numa imagem lida com o OpenCV.

import cv2

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")

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

Executa a inferência numa imagem representada como uma matriz numpy.

import numpy as np

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")

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

Run inference on an image represented as a PyTorch tensor.

import torch

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)

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

Executa a inferência numa coleção de imagens, URLs, vídeos e directórios listados num ficheiro CSV.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"

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

Executa a inferência num ficheiro de vídeo. Utiliza o stream=TrueSe o utilizador tiver uma conta de resultados, pode criar um gerador de objectos de resultados para reduzir a utilização da memória.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to video file
source = "path/to/video.mp4"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Executa a inferência em todas as imagens e vídeos de um diretório. Para capturar também imagens e vídeos em subdirectórios, utiliza um padrão glob, ou seja path/to/dir/**/*.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to directory containing images and videos for inference
source = "path/to/dir"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Executa a inferência em todas as imagens e vídeos que correspondem a uma expressão glob com * caracteres.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"

# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Executa a inferência num vídeo do YouTube. Utiliza o stream=TrueSe quiseres, podes criar um gerador de objectos de Resultados para reduzir a utilização de memória em vídeos longos.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Use the stream mode to run inference on live video streams using RTSP, RTMP, TCP, or IP address protocols. If a single stream is provided, the model runs inference with a batch size of 1. For multiple streams, a .streams text file can be used to perform batched inference, where the batch size is determined by the number of streams provided (e.g., batch-size 8 for 8 streams).

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4"  # RTSP, RTMP, TCP, or IP streaming address

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

For single stream usage, the batch size is set to 1 by default, allowing efficient real-time processing of the video feed.

To handle multiple video streams simultaneously, use a .streams text file containing the streaming sources. The model will run batched inference where the batch size equals the number of streams. This setup enables efficient processing of multiple feeds concurrently.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams"  # *.streams text file with one streaming address per line

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Exemplo .streams text file:

rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...

Each row in the file represents a streaming source, allowing you to monitor and perform inference on several video streams at once.

You can run inference on a connected camera device by passing the index of that particular camera to source.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on the source
results = model(source=0, stream=True)  # generator of Results objects

Argumentos de Inferência

model.predict() aceita vários argumentos que podem ser passados no momento da inferência para substituir as predefinições:

Exemplo

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg' with arguments
model.predict("bus.jpg", save=True, imgsz=320, conf=0.5)

Argumentos de inferência:

ArgumentaTipoPredefiniçãoDescrição
sourcestr'ultralytics/assets'Specifies the data source for inference. Can be an image path, video file, directory, URL, or device ID for live feeds. Supports a wide range of formats and sources, enabling flexible application across different types of input.
conffloat0.25Define o limite mínimo de confiança para as detecções. Os objectos detectados com confiança abaixo deste limite serão ignorados. Ajustar este valor pode ajudar a reduzir os falsos positivos.
ioufloat0.7Intersection Over Union (IoU) threshold for Non-Maximum Suppression (NMS). Lower values result in fewer detections by eliminating overlapping boxes, useful for reducing duplicates.
imgszint or tuple640Define o tamanho da imagem para inferência. Pode ser um único número inteiro 640 for square resizing or a (height, width) tuple. Proper sizing can improve detection accuracy and processing speed.
halfboolFalseEnables half-precision (FP16) inference, which can speed up model inference on supported GPUs with minimal impact on accuracy.
devicestrNoneEspecifica o dispositivo para inferência (por exemplo, cpu, cuda:0 ou 0). Permite que os utilizadores seleccionem entre CPU, um GPU específico, ou outros dispositivos de computação para a execução do modelo.
max_detint300Número máximo de detecções permitidas por imagem. Limita o número total de objectos que o modelo pode detetar numa única inferência, evitando saídas excessivas em cenas densas.
vid_strideint1Avanço de fotogramas para entradas de vídeo. Permite saltar fotogramas em vídeos para acelerar o processamento à custa da resolução temporal. Um valor de 1 processa cada fotograma, valores mais altos saltam fotogramas.
stream_bufferboolFalseDetermines whether to queue incoming frames for video streams. If False, old frames get dropped to accomodate new frames (optimized for real-time applications). If `True', queues new frames in a buffer, ensuring no frames get skipped, but will cause latency if inference FPS is lower than stream FPS.
visualizeboolFalseAtiva a visualização dos recursos do modelo durante a inferência, fornecendo informações sobre o que o modelo está "vendo". Útil para depuração e interpretação do modelo.
augmentboolFalsePermite o aumento do tempo de teste (TTA) para previsões, melhorando potencialmente a robustez da deteção à custa da velocidade de inferência.
agnostic_nmsboolFalsePermite a supressão não máxima (NMS) independente de classe, que mescla caixas sobrepostas de classes diferentes. Útil em cenários de deteção de várias classes em que a sobreposição de classes é comum.
classeslist[int]NoneFiltra as previsões para um conjunto de IDs de classe. Apenas as detecções pertencentes às classes especificadas serão retornadas. Útil para se concentrar em objetos relevantes em tarefas de deteção de várias classes.
retina_masksboolFalseUsa máscaras de segmentação de alta resolução, se disponíveis no modelo. Isso pode melhorar a qualidade da máscara para tarefas de segmentação, fornecendo detalhes mais finos.
embedlist[int]NoneSpecifies the layers from which to extract feature vectors or embeddings. Useful for downstream tasks like clustering or similarity search.

Argumentos de visualização:

ArgumentaTipoPredefiniçãoDescrição
showboolFalseSe TrueApresenta as imagens ou vídeos anotados numa janela. É útil para obter feedback visual imediato durante o desenvolvimento ou o teste.
saveboolFalse ou TrueEnables saving of the annotated images or videos to file. Useful for documentation, further analysis, or sharing results. Defaults to True when using CLI & False when used in Python.
save_framesboolFalseAo processar vídeos, guarda fotogramas individuais como imagens. É útil para extrair fotogramas específicos ou para uma análise detalhada fotograma a fotograma.
save_txtboolFalseGuarda os resultados da deteção num ficheiro de texto, seguindo o formato [class] [x_center] [y_center] [width] [height] [confidence]. Útil para a integração com outras ferramentas de análise.
save_confboolFalseInclui pontuações de confiança nos arquivos de texto salvos. Aumenta o detalhe disponível para pós-processamento e análise.
save_cropboolFalseGuarda imagens cortadas de detecções. Útil para aumentar o conjunto de dados, analisar ou criar conjuntos de dados específicos para objectos específicos.
show_labelsboolTrueApresenta etiquetas para cada deteção na saída visual. Proporciona uma compreensão imediata dos objectos detectados.
show_confboolTrueApresenta a pontuação de confiança para cada deteção ao lado da etiqueta. Dá uma ideia da certeza do modelo para cada deteção.
show_boxesboolTrueDesenha caixas delimitadoras em torno dos objectos detectados. Essencial para a identificação visual e localização de objectos em imagens ou fotogramas de vídeo.
line_widthNone ou intNoneEspecifica a largura da linha das caixas delimitadoras. Se NoneSe não tiveres a certeza, a largura da linha é automaticamente ajustada com base no tamanho da imagem. Proporciona uma personalização visual para maior clareza.

Formatos de imagem e vídeo

YOLO11 supports various image and video formats, as specified in ultralytics/data/utils.py. See the tables below for the valid suffixes and example predict commands.

Imagens

A tabela seguinte contém os formatos de imagem válidos para Ultralytics .

Nota

HEIC images are supported for inference only, not for training.

Sufixos de imagemExemplo de comando PreverReferência
.bmpyolo predict source=image.bmpMicrosoft Formato de ficheiro BMP
.dngyolo predict source=image.dngAdobe DNG
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoObjeto com várias imagens
.pngyolo predict source=image.pngGráficos de rede portáteis
.tifyolo predict source=image.tifEtiqueta Formato de ficheiro de imagem
.tiffyolo predict source=image.tiffEtiqueta Formato de ficheiro de imagem
.webpyolo predict source=image.webpWebP
.pfmyolo predict source=image.pfmMapa de flutuação portátil
.HEICyolo predict source=image.HEICHigh Efficiency Image Format

Vídeos

A tabela seguinte contém os formatos de vídeo válidos para Ultralytics .

Sufixos de vídeoExemplo de comando PreverReferência
.asfyolo predict source=video.asfFormato de sistemas avançados
.aviyolo predict source=video.aviIntercalação 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 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.tsFluxo de transporte MPEG
.wmvyolo predict source=video.wmvVídeo do Windows Media
.webmyolo predict source=video.webmProjeto WebM

Trabalhar com resultados

Todos Ultralytics predict() devolverá uma lista de Results objectos:

Resultados

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("bus.jpg")  # list of 1 Results object
results = model(["bus.jpg", "zidane.jpg"])  # list of 2 Results objects

Results têm os seguintes atributos:

AtributoTipoDescrição
orig_imgnumpy.ndarrayA imagem original como uma matriz numpy.
orig_shapetupleA forma da imagem original no formato (altura, largura).
boxesBoxes, optionalUm objeto Boxes que contém as caixas delimitadoras da deteção.
masksMasks, optionalUm objeto Máscaras que contém as máscaras de deteção.
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 para cada objeto.
obbOBB, optionalUm objeto OBB que contém caixas delimitadoras orientadas.
speeddictUm dicionário de velocidades de pré-processamento, inferência e pós-processamento em milissegundos por imagem.
namesdictUm dicionário de nomes de classes.
pathstrO caminho para o ficheiro de imagem.

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

MétodoTipo de retornoDescrição
update()NoneActualiza os atributos caixas, máscaras e probs do objeto Resultados.
cpu()ResultsDevolve uma cópia do objeto Results com todos os tensores na memória CPU .
numpy()ResultsDevolve uma cópia do objeto Results com todos os tensores como arrays numpy.
cuda()ResultsDevolve uma cópia do objeto Results com todos os tensores na memória GPU .
to()ResultsDevolve uma cópia do objeto Results com tensores no dispositivo e tipo d especificados.
new()ResultsDevolve um novo objeto Results com a mesma imagem, caminho e nomes.
plot()numpy.ndarrayPlota os resultados da deteção. Devolve uma matriz numpy da imagem anotada.
show()NoneMostra os resultados anotados no ecrã.
save()NoneGuarda os resultados anotados num ficheiro.
verbose()strDevolve a cadeia de registo para cada tarefa.
save_txt()NoneGuarda as previsões num ficheiro txt.
save_crop()NoneGuarda as previsões cortadas em save_dir/cls/file_name.jpg.
tojson()strConverte o objeto para o formato JSON.

Para mais informações, consulta o Results documentação da classe.

Caixas

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

Caixas

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

Aqui tens uma tabela para o Boxes métodos e propriedades da classe, incluindo o seu nome, tipo e descrição:

NomeTipoDescrição
cpu()MétodoMove o objeto para a memória 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)Devolve as caixas no formato xyxy.
confPropriedade (torch.Tensor)Devolve os valores de confiança das caixas.
clsPropriedade (torch.Tensor)Devolve os valores de classe das caixas.
idPropriedade (torch.Tensor)Devolve as IDs de faixa das caixas (se disponíveis).
xywhPropriedade (torch.Tensor)Devolve as caixas no formato xywh.
xyxynPropriedade (torch.Tensor)Devolve as caixas no formato xyxy normalizado pelo tamanho da imagem original.
xywhnPropriedade (torch.Tensor)Devolve as caixas no formato xywh normalizado pelo tamanho da imagem original.

Para mais informações, consulta o Boxes documentação da classe.

Máscaras

Masks pode ser utilizado para indexar, manipular e converter máscaras em segmentos.

Máscaras

from ultralytics import YOLO

# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-seg.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

Aqui tens uma tabela para o Masks métodos e propriedades da classe, incluindo o seu nome, tipo e descrição:

NomeTipoDescrição
cpu()MétodoDevolve as máscaras tensor na memória CPU .
numpy()MétodoDevolve as máscaras tensor como uma matriz numpy.
cuda()MétodoDevolve as máscaras tensor na memória GPU .
to()MétodoDevolve as máscaras tensor com o dispositivo e o dtype especificados.
xynPropriedade (torch.Tensor)Uma lista de segmentos normalizados representados como tensores.
xyPropriedade (torch.Tensor)Uma lista de segmentos em coordenadas de pixéis representados como tensores.

Para mais informações, consulta o Masks documentação da classe.

Pontos-chave

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

Pontos-chave

from ultralytics import YOLO

# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-pose.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

Aqui tens uma tabela para o Keypoints métodos e propriedades da classe, incluindo o seu nome, tipo e descrição:

NomeTipoDescrição
cpu()MétodoDevolve os pontos-chave tensor na memória CPU .
numpy()MétodoDevolve os pontos-chave tensor como uma matriz numpy.
cuda()MétodoDevolve os pontos-chave tensor na memória GPU .
to()MétodoDevolve os pontos-chave tensor 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, nenhum.

Para mais informações, consulta o Keypoints documentação da classe.

Provas

Probs pode ser utilizado para indexar, obter top1 e top5 índices e pontuações de classificação.

Provas

from ultralytics import YOLO

# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-cls.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

Aqui tens uma tabela que resume os métodos e as propriedades do Probs classe:

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

Para mais informações, consulta o Probs documentação da classe.

OBB

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

OBB

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n-obb.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

Aqui tens uma tabela para o OBB métodos e propriedades da classe, incluindo o seu nome, tipo e descrição:

NomeTipoDescrição
cpu()MétodoMove o objeto para a memória 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)Devolve os valores de confiança das caixas.
clsPropriedade (torch.Tensor)Devolve os valores de classe das caixas.
idPropriedade (torch.Tensor)Devolve as IDs de faixa 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 normalizado pelo tamanho da imagem.

Para mais informações, consulta o OBB documentação da classe.

Traçar resultados

O plot() método em Results facilita a visualização das previsões ao sobrepor objectos detectados (como caixas delimitadoras, máscaras, pontos-chave e probabilidades) à imagem original. Este método devolve a imagem anotada como uma matriz NumPy, permitindo uma fácil visualização ou gravação.

Traçar

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg'
results = model(["bus.jpg", "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")

plot() Parâmetros do método

O plot() suporta vários argumentos para personalizar a saída:

ArgumentaTipoDescriçãoPredefinição
confboolInclui as pontuações de confiança da deteção.True
line_widthfloatLargura da linha das caixas delimitadoras. Escala com o tamanho da imagem se None.None
font_sizefloatTamanho do tipo de letra do texto. Escala com o tamanho da imagem se None.None
fontstrNome do tipo de letra para anotações de texto.'Arial.ttf'
pilboolDevolve a imagem como um objeto PIL Image.False
imgnumpy.ndarrayUsa a imagem original se a imagem original for usada. Usa a imagem original se None.None
im_gputorch.TensorGPU-Acelera a imagem para uma plotagem mais rápida da máscara. Forma: (1, 3, 640, 640).None
kpt_radiusintRaio para os pontos-chave desenhados.5
kpt_lineboolLiga os pontos-chave com linhas.True
labelsboolInclui etiquetas de classe nas anotações.True
boxesboolSobrepõe caixas delimitadoras na imagem.True
masksboolSobrepõe máscaras na imagem.True
probsboolInclui as probabilidades de classificação.True
showboolApresenta a imagem anotada diretamente utilizando o visualizador de imagens predefinido.False
saveboolGuarda a imagem anotada num ficheiro especificado por filename.False
filenamestrCaminho e nome do ficheiro para guardar a imagem anotada, se save é True.None
color_modestrEspecifica o modo de cor, por exemplo, 'instância' ou 'classe'.'class'

Inferência segura de threads

Garantir a segurança do thread durante a inferência é crucial quando estás a executar vários modelos YOLO em paralelo em diferentes threads. A inferência thread-safe garante que as previsões de cada thread são isoladas e não interferem umas com as outras, evitando condições de corrida e garantindo resultados consistentes e fiáveis.

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

Inferência segura de threads

Instancia um único modelo dentro de cada thread para inferência thread-safe:

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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()

Para uma análise aprofundada da inferência thread-safe com os modelos YOLO e instruções passo a passo, consulta o nosso YOLO Guia de inferência thread-safe. Este guia fornecerá todas as informações necessárias para evitar armadilhas comuns e garantir que sua inferência multithread funcione sem problemas.

Fonte de transmissão em fluxo contínuo for-loop

Aqui tens um script Python que utiliza o OpenCV (cv2) and YOLO to run inference on video frames. This script assumes you have already installed the necessary packages (opencv-python e ultralytics).

Fluxo para o loop

import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo11n.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 fotograma do vídeo, visualiza os resultados e apresenta-os numa janela. O ciclo pode ser encerrado premindo 'q'.

FAQ

What is Ultralytics YOLO and its predict mode for real-time inference?

Ultralytics YOLO is a state-of-the-art model for real-time object detection, segmentation, and classification. Its predict mode allows users to perform high-speed inference on various data sources such as images, videos, and live streams. Designed for performance and versatility, it also offers batch processing and streaming modes. For more details on its features, check out the Ultralytics YOLO predict mode.

How can I run inference using Ultralytics YOLO on different data sources?

Ultralytics YOLO can process a wide range of data sources, including individual images, videos, directories, URLs, and streams. You can specify the data source in the model.predict() chama. Por exemplo, utiliza 'image.jpg' para uma imagem local ou 'https://ultralytics.com/images/bus.jpg' para um URL. Vê os exemplos detalhados de vários fontes de inferência na documentação.

How do I optimize YOLO inference speed and memory usage?

Para otimizar a velocidade de inferência e gerir a memória de forma eficiente, podes utilizar o modo de transmissão definindo stream=True no método de chamada do preditor. O modo de streaming gera um gerador de memória eficiente de Results em vez de carregar todos os quadros na memória. Para processar vídeos longos ou grandes conjuntos de dados, o modo de transmissão é particularmente útil. Sabe mais sobre modo de transmissão.

What inference arguments does Ultralytics YOLO support?

O model.predict() method in YOLO supports various arguments such as conf, iou, imgsz, devicee mais. Estes argumentos permitem-te personalizar o processo de inferência, definindo parâmetros como limiares de confiança, 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 secção.

How can I visualize and save the results of YOLO predictions?

After running inference with YOLO, the 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. Para obter uma lista completa desses métodos, consulta a trabalhar com resultados secção.

📅 Created 11 months ago ✏️ Updated 9 days ago

Comentários