Predição de Modelos com Ultralytics YOLO
Introdução
No mundo do aprendizado de máquina e da visão computacional, o processo de extrair significado de dados visuais é chamado de 'inferência' ou 'predição'. O Ultralytics YOLO11 oferece um recurso poderoso conhecido como modo de predição, feito sob medida para inferência de alto desempenho e em tempo real em uma ampla variedade de fontes de dados.
Assista: Como Extrair as Saídas do Modelo Ultralytics YOLO para Projetos Personalizados.
Aplicações no Mundo Real
Manufatura | Esportes | Segurança |
---|---|---|
Detecção de Peças de Reposição de Veículos | Detecção de Jogadores de Futebol | Detecção de Queda de Pessoas |
Por que usar Ultralytics YOLO para Inferência?
Aqui está o porquê você deve considerar o modo de predição do YOLO11 para suas diversas necessidades de inferência:
- Versatilidade: Capaz de fazer inferências em imagens, vídeos e até transmissões ao vivo.
- Desempenho: Projetado para processamento em tempo real e de alta velocidade sem sacrificar a precisão.
- Facilidade de Uso: Interfaces intuitivas de python e CLI para rápida implantação e teste.
- Altamente Personalizável: Várias configurações e parâmetros para ajustar o comportamento de inferência do modelo de acordo com seus requisitos específicos.
Principais Características do Modo Predict
O modo de predição do YOLO11 foi projetado para ser robusto e versátil, apresentando:
- Compatibilidade com Múltiplas Fontes de Dados: Se seus dados estão na forma de imagens individuais, uma coleção de imagens, arquivos de vídeo ou transmissões de vídeo em tempo real, o modo de predição oferece suporte a todos.
- Modo de Streaming: Use o recurso de streaming para gerar um gerador de
Results
objetos com uso eficiente de memória. Habilite isso definindostream=True
no método de chamada do preditor. - Processamento em Lote: A capacidade de processar várias imagens ou quadros de vídeo em um único lote, acelerando ainda mais o tempo de inferência.
- Integração Amigável: Integre-se facilmente com pipelines de dados existentes e outros componentes de software, graças à sua API flexível.
Os modelos Ultralytics YOLO retornam uma lista python de Results
objetos ou um gerador python de Results
objetos com uso eficiente de memória quando stream=True
é passado para o modelo durante a inferência:
Prever
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
O YOLO11 pode processar diferentes tipos de fontes de entrada para inferência, como mostrado na tabela abaixo. As fontes incluem imagens estáticas, fluxos 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 é benéfico para processar vídeos ou transmissões ao vivo, pois cria um gerador de resultados em vez de carregar todos os frames na memória.
Dica
Use stream=True
para processar vídeos longos ou grandes conjuntos de dados para gerenciar a memória de forma eficiente. Quando stream=False
, os resultados para todos os frames ou pontos de dados são armazenados na memória, o que pode aumentar rapidamente e causar erros de falta de memória para grandes entradas. Em contraste, stream=True
utiliza um gerador, que mantém apenas os resultados do frame ou ponto de dados atual na memória, reduzindo significativamente o consumo de memória e evitando problemas de falta de memória.
Fonte | Exemplo | Tipo | Notas |
---|---|---|---|
imagem | 'image.jpg' |
str ou Path |
Arquivo de imagem único. |
URL | 'https://ultralytics.com/images/bus.jpg' |
str |
URL para uma imagem. |
screenshot | 'screen' |
str |
Captura um screenshot. |
PIL | Image.open('image.jpg') |
PIL.Image |
Formato HWC com canais RGB. |
OpenCV | cv2.imread('image.jpg') |
np.ndarray |
Formato HWC com canais BGR uint8 (0-255) . |
numpy | np.zeros((640,1280,3)) |
np.ndarray |
Formato HWC com canais BGR uint8 (0-255) . |
torch | torch.zeros(16,3,320,640) |
torch.Tensor |
Formato BCHW com canais RGB float32 (0.0-1.0) . |
CSV | 'sources.csv' |
str ou Path |
Arquivo CSV contendo caminhos para imagens, vídeos ou diretórios. |
vídeo ✅ | 'video.mp4' |
str ou Path |
Arquivo de vídeo em formatos como MP4, AVI, etc. |
diretório ✅ | 'path/' |
str ou Path |
Caminho para um diretório contendo imagens ou vídeos. |
glob ✅ | 'path/*.jpg' |
str |
Padrão Glob para corresponder a vários arquivos. Use o * caractere como um curinga. |
YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' |
str |
URL para um vídeo do YouTube. |
stream ✅ | 'rtsp://example.com/media.mp4' |
str |
URL para protocolos de streaming como RTSP, RTMP, TCP ou um endereço IP. |
multi-stream ✅ | 'list.streams' |
str ou Path |
*.streams Arquivo de texto com um URL de stream por linha, ou seja, 8 streams serão executados com um tamanho de lote de 8. |
webcam ✅ | 0 |
int |
Í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
Executar a inferência em um arquivo 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
Execute a inferência no conteúdo atual da tela como uma captura de tela.
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
Execute a inferência em uma imagem ou vídeo hospedado remotamente via 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
Execute a inferência em uma imagem aberta com a 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
Execute a inferência em uma imagem lida com 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
Execute a inferência em uma imagem representada como um array 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
Execute a inferência em uma imagem representada como um tensor PyTorch.
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
Execute a inferência em uma coleção de imagens, URLs, vídeos e diretórios listados em um arquivo 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
Execute a inferência em um arquivo de vídeo. Ao usar stream=True
, você pode criar um gerador de objetos Results para reduzir o uso de 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
Execute a inferência em todas as imagens e vídeos em um diretório. Para também capturar imagens e vídeos em subdiretórios, use 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
Execute 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
Execute a inferência em um vídeo do YouTube. Ao usar stream=True
, você pode criar um gerador de objetos Results para reduzir o uso de memória para 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 o modo de stream para executar a inferência em transmissões de vídeo ao vivo usando protocolos RTSP, RTMP, TCP ou endereço IP. Se um único stream for fornecido, o modelo executa a inferência com um tamanho de lote de 1. Para vários streams, um .streams
arquivo de texto pode ser usado para realizar a inferência em lote, onde o tamanho do lote é determinado pelo número de streams fornecidos (por exemplo, tamanho do lote 8 para 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
Para uso de stream único, o tamanho do lote é definido como 1 por padrão, permitindo o processamento eficiente em tempo real do feed de vídeo.
Para lidar com vários streams de vídeo simultaneamente, use um .streams
arquivo de texto contendo as fontes de streaming. O modelo executará a inferência em lote onde o tamanho do lote é igual ao número de streams. Esta configuração permite o processamento eficiente de vários feeds simultaneamente.
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
arquivo de texto:
rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...
Cada linha no arquivo representa uma fonte de streaming, permitindo que você monitore e execute a inferência em vários streams de vídeo ao mesmo tempo.
Você pode executar a inferência em um dispositivo de câmera conectado, passando o índice dessa câmera específica para 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 tempo de inferência para substituir os padrões:
Exemplo
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.5)
Argumentos de inferência:
Argumento | Tipo | Padrão | Descrição |
---|---|---|---|
source |
str |
'ultralytics/assets' |
Especifica a fonte de dados para a inferência. Pode ser um caminho de imagem, arquivo de vídeo, diretório, URL ou ID de dispositivo para feeds ao vivo. Suporta uma ampla gama de formatos e fontes, permitindo uma aplicação flexível em diferentes tipos de entrada. |
conf |
float |
0.25 |
Define o limite mínimo de confiança para as detecções. Objetos detectados com confiança abaixo deste limite serão desconsiderados. Ajustar este valor pode ajudar a reduzir falsos positivos. |
iou |
float |
0.7 |
Limite de Intersecção Sobre União (IoU) para Supressão Não Máxima (NMS). Valores mais baixos resultam em menos detecções, eliminando caixas sobrepostas, útil para reduzir duplicatas. |
imgsz |
int ou tuple |
640 |
Define o tamanho da imagem para inferência. Pode ser um único inteiro 640 para redimensionamento quadrado ou uma tupla (altura, largura). O dimensionamento adequado pode melhorar a detecção precisão e a velocidade de processamento. |
rect |
bool |
True |
Se ativado, preenche minimamente o lado mais curto da imagem até que seja divisível por stride para melhorar a velocidade de inferência. Se desativado, preenche a imagem para um quadrado durante a inferência. |
half |
bool |
False |
Ativa a inferência de meia-precisão (FP16), o que pode acelerar a inferência do modelo em GPUs suportadas com impacto mínimo na precisão. |
device |
str |
None |
Especifica o dispositivo para inferência (por exemplo, cpu , cuda:0 ou 0 ). Permite que os usuários selecionem entre CPU, uma GPU específica ou outros dispositivos de computação para a execução do modelo. |
batch |
int |
1 |
Especifica o tamanho do lote para inferência (só funciona quando a fonte é um diretório, arquivo de vídeo ou .txt arquivo). Um tamanho de lote maior pode fornecer maior throughput, encurtando o tempo total necessário para a inferência. |
max_det |
int |
300 |
Número máximo de detecções permitidas 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_stride |
int |
1 |
Stride de frames para entradas de vídeo. Permite pular frames em vídeos para acelerar o processamento ao custo da resolução temporal. Um valor de 1 processa cada frame, valores mais altos pulam frames. |
stream_buffer |
bool |
False |
Determina se os frames recebidos devem ser enfileirados para streams de vídeo. Se False , os frames antigos são descartados para acomodar novos frames (otimizado para aplicações em tempo real). Se True , enfileira novos frames em um buffer, garantindo que nenhum frame seja ignorado, mas causará latência se o FPS de inferência for menor que o FPS do stream. |
visualize |
bool |
False |
Ativa a visualização das características do modelo durante a inferência, fornecendo insights sobre o que o modelo está "vendo". Útil para depuração e interpretação do modelo. |
augment |
bool |
False |
Ativa o aumento do tempo de teste (TTA) para previsões, potencialmente melhorando a robustez da detecção ao custo da velocidade de inferência. |
agnostic_nms |
bool |
False |
Ativa a Supressão Não Máxima (NMS) agnóstica à classe, que mescla caixas sobrepostas de diferentes classes. Útil em cenários de detecção multi-classe onde a sobreposição de classes é comum. |
classes |
list[int] |
None |
Filtra as previsões para um conjunto de IDs de classe. Apenas as detecções pertencentes às classes especificadas serão retornadas. Útil para focar em objetos relevantes em tarefas de detecção multi-classe. |
retina_masks |
bool |
False |
Retorna máscaras de segmentação de alta resolução. As máscaras retornadas (masks.data ) corresponderão ao tamanho original da imagem se ativado. Se desativado, elas terão o tamanho da imagem usado durante a inferência. |
embed |
list[int] |
None |
Especifica as camadas das quais extrair vetores de características ou embeddings. Útil para tarefas downstream como clustering ou pesquisa de similaridade. |
project |
str |
None |
Nome do diretório do projeto onde as saídas de previsão são salvas se save estiver ativado. |
name |
str |
None |
Nome da execução da previsão. Usado para criar um subdiretório dentro da pasta do projeto, onde as saídas de previsão são armazenadas se save estiver ativado. |
stream |
bool |
False |
Ativa o processamento com uso eficiente de memória para vídeos longos ou inúmeras imagens, retornando um gerador de objetos Results em vez de carregar todos os frames na memória de uma só vez. |
verbose |
bool |
True |
Controla se deve exibir logs de inferência detalhados no terminal, fornecendo feedback em tempo real sobre o processo de previsão. |
Argumentos de visualização:
Argumento | Tipo | Padrão | Descrição |
---|---|---|---|
show |
bool |
False |
Se True , exibe as imagens ou vídeos anotados em uma janela. Útil para feedback visual imediato durante o desenvolvimento ou teste. |
save |
bool |
False or True |
Permite salvar as imagens ou vídeos anotados em um arquivo. Útil para documentação, análise posterior ou compartilhamento de resultados. O padrão é True ao usar a CLI e False ao usar python. |
save_frames |
bool |
False |
Ao processar vídeos, salva frames individuais como imagens. Útil para extrair frames específicos ou para análise detalhada frame a frame. |
save_txt |
bool |
False |
Salva 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_conf |
bool |
False |
Inclui os scores de confiança nos arquivos de texto salvos. Aumenta o detalhe disponível para pós-processamento e análise. |
save_crop |
bool |
False |
Salva imagens cortadas das detecções. Útil para aumento de dataset, análise ou criação de datasets focados para objetos específicos. |
show_labels |
bool |
True |
Exibe rótulos para cada detecção na saída visual. Fornece compreensão imediata dos objetos detectados. |
show_conf |
bool |
True |
Exibe o score de confiança para cada detecção junto com o rótulo. Dá uma ideia da certeza do modelo para cada detecção. |
show_boxes |
bool |
True |
Desenha caixas delimitadoras ao redor dos objetos detectados. Essencial para identificação visual e localização de objetos em imagens ou frames de vídeo. |
line_width |
None or int |
None |
Especifica a largura da linha das caixas delimitadoras. Se None , a largura da linha é ajustada automaticamente com base no tamanho da imagem. Fornece personalização visual para clareza. |
Formatos de Imagem e Vídeo
O YOLO11 suporta vários formatos de imagem e vídeo, conforme especificado em ultralytics/data/utils.py. Veja as tabelas abaixo para os sufixos válidos e exemplos de comandos de previsão.
Imagens
A tabela abaixo contém formatos de imagem Ultralytics válidos.
Nota
Imagens HEIC são suportadas apenas para inferência, não para treinamento.
Sufixos de Imagem | Exemplo de Comando Predict | Referência |
---|---|---|
.bmp |
yolo predict source=image.bmp |
Formato de Arquivo BMP da Microsoft |
.dng |
yolo predict source=image.dng |
Adobe DNG |
.jpeg |
yolo predict source=image.jpeg |
JPEG |
.jpg |
yolo predict source=image.jpg |
JPEG |
.mpo |
yolo predict source=image.mpo |
Objeto de Múltiplas Imagens |
.png |
yolo predict source=image.png |
Portable Network Graphics |
.tif |
yolo predict source=image.tif |
Tag Image File Format |
.tiff |
yolo predict source=image.tiff |
Tag Image File Format |
.webp |
yolo predict source=image.webp |
WebP |
.pfm |
yolo predict source=image.pfm |
FloatMap Portátil |
.HEIC |
yolo predict source=image.HEIC |
Formato de Imagem de Alta Eficiência |
Vídeos
A tabela abaixo contém formatos de vídeo Ultralytics válidos.
Sufixos de Vídeo | Exemplo de Comando Predict | Referência |
---|---|---|
.asf |
yolo predict source=video.asf |
Advanced Systems Format |
.avi |
yolo predict source=video.avi |
Audio Video Interleave |
.gif |
yolo predict source=video.gif |
Graphics Interchange Format |
.m4v |
yolo predict source=video.m4v |
MPEG-4 Part 14 |
.mkv |
yolo predict source=video.mkv |
Matroska |
.mov |
yolo predict source=video.mov |
QuickTime File Format |
.mp4 |
yolo predict source=video.mp4 |
MPEG-4 Part 14 - Wikipédia |
.mpeg |
yolo predict source=video.mpeg |
MPEG-1 Part 2 |
.mpg |
yolo predict source=video.mpg |
MPEG-1 Part 2 |
.ts |
yolo predict source=video.ts |
MPEG Transport Stream |
.wmv |
yolo predict source=video.wmv |
Windows Media Video |
.webm |
yolo predict source=video.webm |
WebM Project |
Trabalhando com Resultados
Todas as chamadas predict()
Ultralytics retornarão uma lista de Results
objetos:
Resultados
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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
Results
Os objetos têm os seguintes atributos:
Atributo | Tipo | Descrição |
---|---|---|
orig_img |
np.ndarray |
A imagem original como um array numpy. |
orig_shape |
tuple |
O formato original da imagem em (altura, largura). |
boxes |
Boxes, optional |
Um objeto Boxes contendo as bounding boxes de detecção. |
masks |
Masks, optional |
Um objeto Masks contendo as máscaras de detecção. |
probs |
Probs, optional |
Um objeto Probs contendo as probabilidades de cada classe para a tarefa de classificação. |
keypoints |
Keypoints, optional |
Um objeto Keypoints contendo os keypoints detetados para cada objeto. |
obb |
OBB, optional |
Um objeto OBB contendo bounding boxes orientadas. |
speed |
dict |
Um dicionário das velocidades de pré-processamento, inferência e pós-processamento em milissegundos por imagem. |
names |
dict |
Um dicionário que mapeia os índices das classes para os nomes das classes. |
path |
str |
O caminho para o arquivo de imagem. |
save_dir |
str, optional |
Diretório para salvar os resultados. |
Results
objetos têm os seguintes métodos:
Método | Tipo de Retorno | Descrição |
---|---|---|
update() |
None |
Atualiza o objeto Results com novos dados de detecção (caixas, máscaras, probs, obb, keypoints). |
cpu() |
Results |
Retorna uma cópia do objeto Results com todos os tensores movidos para a memória da CPU. |
numpy() |
Results |
Retorna uma cópia do objeto Results com todos os tensores convertidos em arrays numpy. |
cuda() |
Results |
Retorna uma cópia do objeto Results com todos os tensores movidos para a memória da GPU. |
to() |
Results |
Retorna uma cópia do objeto Results com os tensores movidos para o dispositivo e dtype especificados. |
new() |
Results |
Cria um novo objeto Results com os mesmos atributos de imagem, caminho, nomes e velocidade. |
plot() |
np.ndarray |
Plota os resultados da detecção numa imagem RGB de entrada e retorna a imagem anotada. |
show() |
None |
Exibe a imagem com os resultados de inferência anotados. |
save() |
str |
Salva a imagem dos resultados da inferência anotada em um arquivo e retorna o nome do arquivo. |
verbose() |
str |
Retorna uma string de log para cada tarefa, detalhando os resultados de detecção e classificação. |
save_txt() |
str |
Salva os resultados da detecção em um arquivo de texto e retorna o caminho para o arquivo salvo. |
save_crop() |
None |
Salva as imagens de detecção recortadas 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() |
DataFrame |
Converte os resultados da detecção em um DataFrame do Pandas. |
to_csv() |
str |
Converte os resultados da detecção para o formato CSV. |
to_xml() |
str |
Converte os resultados da detecção para o formato XML. |
to_html() |
str |
Converte os resultados da detecção para o formato HTML. |
to_json() |
str |
Converte os resultados da detecção para o formato JSON. |
to_sql() |
None |
Converte os resultados da detecção para o formato compatível com SQL e salva no banco de dados. |
Para mais detalhes, consulte a Results
documentação da classe.
Boxes
Boxes
objeto pode ser usado para indexar, manipular e converter bounding boxes para diferentes formatos.
Boxes
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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
Aqui está uma tabela para o Boxes
métodos e propriedades da classe, incluindo seu nome, tipo e descrição:
Nome | Tipo | Descrição |
---|---|---|
cpu() |
Método | Move o objeto para a memória da CPU. |
numpy() |
Método | Converte o objeto para um array numpy. |
cuda() |
Método | Move o objeto para a memória da CUDA. |
to() |
Método | Move o objeto para o dispositivo especificado. |
xyxy |
Propriedade (torch.Tensor ) |
Retorna as caixas no formato xyxy. |
conf |
Propriedade (torch.Tensor ) |
Retorna os valores de confiança das caixas. |
cls |
Propriedade (torch.Tensor ) |
Retorna os valores de classe das caixas. |
id |
Propriedade (torch.Tensor ) |
Retorna os IDs de rastreamento das caixas (se disponíveis). |
xywh |
Propriedade (torch.Tensor ) |
Retorna as caixas no formato xywh. |
xyxyn |
Propriedade (torch.Tensor ) |
Retorna as caixas no formato xyxy normalizado pelo tamanho original da imagem. |
xywhn |
Propriedade (torch.Tensor ) |
Retorna as caixas no formato xywh normalizado pelo tamanho original da imagem. |
Para mais detalhes, consulte a Boxes
documentação da classe.
Máscaras
Masks
O objeto pode ser usado 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("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
Aqui está uma tabela para o Masks
métodos e propriedades da classe, incluindo seu nome, tipo e descrição:
Nome | Tipo | Descrição |
---|---|---|
cpu() |
Método | Retorna o tensor de máscaras na memória da CPU. |
numpy() |
Método | Retorna o tensor de máscaras como um array numpy. |
cuda() |
Método | Retorna o tensor de máscaras na memória da GPU. |
to() |
Método | Retorna o tensor de máscaras com o dispositivo e dtype especificados. |
xyn |
Propriedade (torch.Tensor ) |
Uma lista de segmentos normalizados representados como tensores. |
xy |
Propriedade (torch.Tensor ) |
Uma lista de segmentos em coordenadas de pixel representados como tensores. |
Para mais detalhes, consulte a Masks
documentação da classe.
Keypoints
Keypoints
O objeto pode ser usado para indexar, manipular e normalizar coordenadas.
Keypoints
from ultralytics import YOLO
# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-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
Aqui está uma tabela para o Keypoints
métodos e propriedades da classe, incluindo seu nome, tipo e descrição:
Nome | Tipo | Descrição |
---|---|---|
cpu() |
Método | Retorna o tensor de keypoints na memória da CPU. |
numpy() |
Método | Retorna o tensor de keypoints como um array numpy. |
cuda() |
Método | Retorna o tensor de keypoints na memória da GPU. |
to() |
Método | Retorna o tensor de keypoints com o dispositivo e dtype especificados. |
xyn |
Propriedade (torch.Tensor ) |
Uma lista de keypoints normalizados representados como tensores. |
xy |
Propriedade (torch.Tensor ) |
Uma lista de keypoints em coordenadas de pixel representados como tensores. |
conf |
Propriedade (torch.Tensor ) |
Retorna os valores de confiança dos keypoints, se disponíveis; caso contrário, retorna None. |
Para mais detalhes, consulte a Keypoints
documentação da classe.
Probs
Probs
O objeto pode ser usado para indexar, obter top1
e top5
índices e scores de classificação.
Probs
from ultralytics import YOLO
# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-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
Aqui está uma tabela que resume os métodos e propriedades para a Probs
classe:
Nome | Tipo | Descrição |
---|---|---|
cpu() |
Método | Retorna uma cópia do tensor probs na memória da CPU. |
numpy() |
Método | Retorna uma cópia do tensor probs como um array numpy. |
cuda() |
Método | Retorna uma cópia do tensor probs na memória da GPU. |
to() |
Método | Retorna uma cópia do tensor probs com o dispositivo e o dtype especificados. |
top1 |
Propriedade (int ) |
Índice da classe top 1. |
top5 |
Propriedade (list[int] ) |
Índices das 5 classes top. |
top1conf |
Propriedade (torch.Tensor ) |
Confiança da classe top 1. |
top5conf |
Propriedade (torch.Tensor ) |
Confianças das 5 classes top. |
Para mais detalhes, consulte a Probs
documentação da classe.
OBB
OBB
O objeto pode ser usado 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("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
Aqui está uma tabela para o OBB
métodos e propriedades da classe, incluindo seu nome, tipo e descrição:
Nome | Tipo | Descrição |
---|---|---|
cpu() |
Método | Move o objeto para a memória da CPU. |
numpy() |
Método | Converte o objeto para um array numpy. |
cuda() |
Método | Move o objeto para a memória da CUDA. |
to() |
Método | Move o objeto para o dispositivo especificado. |
conf |
Propriedade (torch.Tensor ) |
Retorna os valores de confiança das caixas. |
cls |
Propriedade (torch.Tensor ) |
Retorna os valores de classe das caixas. |
id |
Propriedade (torch.Tensor ) |
Retorna os IDs de rastreamento das caixas (se disponíveis). |
xyxy |
Propriedade (torch.Tensor ) |
Retorna as caixas horizontais no formato xyxy. |
xywhr |
Propriedade (torch.Tensor ) |
Retorna as caixas rotacionadas no formato xywhr. |
xyxyxyxy |
Propriedade (torch.Tensor ) |
Retorna as caixas rotacionadas no formato xyxyxyxy. |
xyxyxyxyn |
Propriedade (torch.Tensor ) |
Retorna as caixas rotacionadas no formato xyxyxyxy normalizadas pelo tamanho da imagem. |
Para mais detalhes, consulte a OBB
documentação da classe.
Plotando Resultados
O plot()
método em Results
objetos facilita a visualização das predições, sobrepondo objetos detectados (como caixas delimitadoras, máscaras, keypoints e probabilidades) na imagem original. Este método retorna a imagem anotada como um array NumPy, permitindo fácil exibição ou salvamento.
Plotagem
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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")
plot()
Parâmetros do Método
O plot()
O método suporta vários argumentos para personalizar a saída:
Argumento | Tipo | Descrição | Padrão |
---|---|---|---|
conf |
bool |
Inclui os scores de confiança da detecção. | True |
line_width |
float |
Largura da linha das bounding boxes. É ajustada com o tamanho da imagem se None . |
None |
font_size |
float |
Tamanho da fonte do texto. É ajustada com o tamanho da imagem se None . |
None |
font |
str |
Nome da fonte para anotações de texto. | 'Arial.ttf' |
pil |
bool |
Retorna a imagem como um objeto PIL Image. | False |
img |
np.ndarray |
Imagem alternativa para plotagem. Usa a imagem original se None . |
None |
im_gpu |
torch.Tensor |
Imagem acelerada por GPU para plotagem de máscara mais rápida. Formato: (1, 3, 640, 640). | None |
kpt_radius |
int |
Raio para keypoints desenhados. | 5 |
kpt_line |
bool |
Conecta keypoints com linhas. | True |
labels |
bool |
Inclui rótulos de classe nas anotações. | True |
boxes |
bool |
Sobrepõe bounding boxes na imagem. | True |
masks |
bool |
Sobrepõe máscaras na imagem. | True |
probs |
bool |
Inclui probabilidades de classificação. | True |
show |
bool |
Exibe a imagem anotada diretamente usando o visualizador de imagem padrão. | False |
save |
bool |
Salva a imagem anotada em um arquivo especificado por filename . |
False |
filename |
str |
Caminho e nome do arquivo para salvar a imagem anotada se save é True . |
None |
color_mode |
str |
Especifica o modo de cor, por exemplo, 'instance' ou 'class'. | 'class' |
txt_color |
tuple[int, int, int] |
Cor do texto RGB para bounding box e rótulo de classificação de imagem. | (255, 255, 255) |
Inferência Thread-Safe
Garantir a segurança de threads durante a inferência é crucial quando você está executando vários modelos YOLO em paralelo em diferentes threads. A inferência thread-safe garante que as previsões de cada thread sejam isoladas e não interfiram umas nas outras, evitando condições de corrida e garantindo saídas consistentes e confiáveis.
Ao usar modelos YOLO em um aplicativo multi-threaded, é importante instanciar objetos de modelo separados para cada thread ou empregar armazenamento thread-local para evitar conflitos:
Inferência Thread-Safe
Instancie 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 modelos YOLO e instruções passo a passo, consulte nosso Guia de Inferência Thread-Safe YOLO. Este guia fornecerá todas as informações necessárias para evitar armadilhas comuns e garantir que sua inferência multi-threaded seja executada sem problemas.
Fonte de Streaming for
-loop
Aqui está um script python usando OpenCV (cv2
) e YOLO para executar a inferência em quadros de vídeo. Este script assume que você já instalou os pacotes necessários (opencv-python
e ultralytics
).
Loop de streaming for
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 executará previsões em cada frame do vídeo, visualizará os resultados e os exibirá em uma janela. O loop pode ser encerrado pressionando 'q'.
FAQ
O que é Ultralytics YOLO e seu modo predict para inferência em tempo real?
Ultralytics YOLO é um modelo de última geração para detecção de objetos, segmentação e classificação em tempo real. Seu modo de previsão permite que os usuários realizem inferência de alta velocidade em várias fontes de dados, como imagens, vídeos e transmissões ao vivo. Projetado para desempenho e versatilidade, também oferece modos de processamento em lote e streaming. Para mais detalhes sobre seus recursos, confira o modo de previsão do Ultralytics YOLO.
Como posso executar a inferência usando Ultralytics YOLO em diferentes fontes de dados?
Ultralytics YOLO pode processar uma ampla gama de fontes de dados, incluindo imagens individuais, vídeos, diretórios, URLs e streams. Você pode especificar a fonte de dados na model.predict()
chamada. Por exemplo, use 'image.jpg'
para uma imagem local ou 'https://ultralytics.com/images/bus.jpg'
para uma URL. Confira os exemplos detalhados para várias fontes de inferência na documentação.
Como otimizar a velocidade de inferência e o uso de memória do YOLO?
Para otimizar a velocidade de inferência e gerenciar a memória de forma eficiente, você pode usar o modo de streaming definindo stream=True
no método de chamada do preditor. O modo de transmissão gera um gerador eficiente em termos de memória de Results
em vez de carregar todos os fotogramas na memória. Para processar vídeos longos ou grandes conjuntos de dados, o modo de transmissão é particularmente útil. Saiba mais sobre modo de fluxo contínuo.
Quais argumentos de inferência o Ultralytics YOLO suporta?
O model.predict()
em YOLO suporta vários argumentos, tais como conf
, iou
, imgsz
, device
e mais. Estes argumentos permitem-lhe personalizar o processo de inferência, definindo parâmetros como os limiares de confiança, o tamanho da imagem e o dispositivo utilizado para o cálculo. As descrições pormenorizadas destes argumentos podem ser encontradas na secção argumentos de inferência secção.
Como posso visualizar e salvar os resultados das predições YOLO?
Depois de efetuar a inferência com YOLO, o Results
contêm métodos para visualizar e guardar imagens anotadas. É possível 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, consulte a trabalhar com resultados secção.