Predição de modelo com Ultralytics YOLO#
Introdução#
No mundo do machine learning e da computer vision, o processo de dar sentido a dados visuais é frequentemente chamado de inferência ou predição. O Ultralytics YOLO26 oferece um recurso poderoso conhecido como predict mode, adaptado para inferência de alto desempenho e em tempo real em uma ampla gama de fontes de dados.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
Aplicações do 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 o Ultralytics YOLO para inferência?#
Veja por que você deve considerar o modo predict do YOLO26 para suas várias necessidades de inferência:
- Versatilidade: Capaz de executar inferência em imagens, vídeos e até mesmo transmissões ao vivo.
- Desempenho: Projetado para processamento de alta velocidade em tempo real sem sacrificar a accuracy.
- Facilidade de uso: Interfaces intuitivas em Python e CLI para implantação e teste rápidos.
- Altamente personalizável: Várias configurações e parâmetros para ajustar o comportamento de inferência do modelo de acordo com suas necessidades específicas.
- Pronto para produção: Implante modelos como endpoints de inferência da Ultralytics Platform com auto-scaling e monitoramento, ou execute a inferência localmente.
Principais recursos do modo predict#
O modo predict do YOLO26 foi projetado para ser robusto e versátil, apresentando:
- Compatibilidade com múltiplas fontes de dados: Seja com dados em formato de imagens individuais, uma coleção de imagens, arquivos de vídeo ou fluxos de vídeo em tempo real, o modo predict resolve para você.
- Streaming Mode: Use o recurso de streaming para gerar um gerador eficiente em termos de memória de objetos
Results. Ative isso definindostream=Trueno método de chamada do preditor. Ao contrário do comportamento padrão (stream=False), que retorna uma lista contendo todos os resultados,stream=Trueproduz resultados um por um, tornando-o especialmente útil para vídeos longos e transmissões ao vivo. - Processamento em lote: Processe várias imagens ou quadros de vídeo em um único lote, reduzindo ainda mais o tempo total de inferência.
- Fácil de integrar: Integre facilmente com pipelines de dados existentes e outros componentes de software, graças à sua API flexível.
Os modelos do Ultralytics YOLO retornam uma lista em Python de objetos Results ou um gerador eficiente em termos de memória de objetos Results quando stream=True é passado para o modelo durante a inferência:
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 diskFontes de inferência#
O YOLO26 pode processar diferentes tipos de fontes de entrada para inferência, conforme 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 em streaming mode com o argumento stream=True ✅. O streaming mode é benéfico para o processamento de vídeos ou transmissões ao vivo, pois cria um gerador de resultados em vez de carregar todos os quadros na memória.
Use stream=True para processar vídeos longos ou grandes conjuntos de dados para gerenciar a memória com eficiência. Quando stream=False, os resultados para todos os quadros ou pontos de dados são armazenados na memória, o que pode acumular rapidamente e causar erros de falta de memória (out-of-memory) para entradas grandes. Em contrapartida, stream=True utiliza um gerador, que mantém apenas os resultados do quadro ou ponto de dados atual na memória, reduzindo significativamente o consumo de memória e prevenindo problemas de falta de memória.
| Origem | Exemplo | Tipo | Notas |
|---|---|---|---|
| image | 'image.jpg' | str ou Path | Arquivo de imagem única. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | URL para uma imagem. |
| screenshot | 'screen' | str | Capturar uma captura de tela. |
| 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. |
| video ✅ | 'video.mp4' | str ou Path | Arquivo de vídeo em formatos como MP4, AVI, etc. |
| directory ✅ | '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 caractere 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 | Arquivo de texto *.streams com uma URL de transmissão por linha, ou seja, 8 transmissões serão executadas com batch-size 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:
Execute a inferência em um arquivo 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 objectsArgumentos de inferência#
model.predict() aceita vários argumentos que podem ser passados no momento da inferência para substituir os padrões:
Forma fixa vs retângulo mínimo (rect)#
Por padrão, o predict usa rect=True, o que habilita o preenchimento (padding) de retângulo mínimo quando possível. A imagem é redimensionada para caber dentro de imgsz e preenchida apenas até o múltiplo de stride mais próximo, de modo que o tensor final pode ser menor do que imgsz. O preenchimento de retângulo mínimo é usado apenas quando todas as imagens no 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é o destino completo de imgsz.
Use rect=False para sempre preencher até o destino completo de imgsz. Isso é recomendado quando você precisa de um tamanho de entrada fixo para corresponder a modelos exportados (ONNX, TensorRT, etc.).
Inteiro vs tupla imgsz
- Um
imgsz=640inteiro se torna um destino quadrado(640, 640)após o arredondamento do stride. - Uma tupla
imgsz=(384, 672)define um destino retangular. Comrect=Trueeauto=True, o tensor real pode ser menor do que esse destino.
Treino vs predict/export
O treinamento aceita apenas um único inteiro imgsz (uma lista [h, w] é convertida para o maior valor). Predict e export aceitam um inteiro ou uma tupla (height, width).
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:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
source | str ou int ou None | None | 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. Se omitido, um aviso é registrado e o modelo recorre aos ativos de demonstração integrados (ultralytics/assets, ou uma URL de demonstração para OBB). Suporta uma ampla gama de formatos e fontes, permitindo uma aplicação flexível em different types of input. |
conf | float | 0.25 | Define o limiar de confiança mínimo para deteções. Objetos detetados com uma confiança inferior a este limiar serão ignorados. Ajustar este valor pode ajudar a reduzir falsos positivos. |
iou | float | 0.7 | Limite de Intersection Over Union (IoU) para a Non-Maximum Suppression (NMS). Valores mais baixos resultam em menos detecções, eliminando caixas sobrepostas, o que é útil para reduzir duplicatas. |
imgsz | int ou tuple | 640 | Destino do letterbox. Um número inteiro fornece um quadrado N×N; uma tupla fornece (height, width). Com rect=True, o tensor real pode ser menor que este destino devido ao preenchimento de retângulo mínimo. Use rect=False para um tamanho fixo. Consulte Fixed shape vs minimum rectangle. |
rect | bool | True | Se True, use o preenchimento de retângulo mínimo quando possível (lote de mesma forma e backend suportado). Se False, sempre preencha até o imgsz completo. Consulte Fixed shape vs minimum rectangle. |
quantize | int ou str | None | Precisão da inferência: 16/"fp16" ativa a inferência FP16 em GPUs suportadas; 32/"fp32"/não definido é FP32. A quantização INT8/PTQ é configurada durante a export e, em seguida, usada carregando o modelo exportado. Substitui o sinalizador obsoleto half. |
device | str | None | Especifica o dispositivo para inferência (por exemplo, cpu, cuda:0, 0, npu ou npu:0). Permite aos usuários selecionar entre CPU, uma GPU específica, Huawei Ascend NPU ou outros dispositivos de computação para a execução do modelo. |
dnn | bool | False | Se True, utiliza o módulo DNN do OpenCV em vez do ONNX Runtime para a inferência de modelos ONNX. |
data | str | None | Caminho para um YAML de dataset (por exemplo, coco8.yaml) lido apenas para o seu names, e apenas quando o modelo carregado não trouxer nomes de classes próprios: uma exportação de terceiros ou uma exportação do Ultralytics separada dos metadados com que é fornecida. Caso contrário, um modelo desses devolve class0, class1 e assim por diante. |
batch | int | 1 | Especifica o tamanho do lote para inferência (funciona apenas quando a fonte é a directory, video file, or .txt file). Um tamanho de lote maior pode fornecer maior rendimento, encurtando o tempo total necessário para a inferência. |
max_det | int | 300 | Nú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 saídas excessivas em cenas densas. |
vid_stride | int | 1 | Intervalo 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 todos os fotogramas, valores mais altos saltam fotogramas. |
stream_buffer | bool | False | Determina se os quadros recebidos devem ser colocados na fila para fluxos de vídeo. Se False, quadros antigos são descartados para acomodar novos quadros (otimizado para aplicações em tempo real). Se True, novos quadros são enfileirados em um buffer, garantindo que nenhum quadro seja ignorado, mas isso causará latência se o FPS da inferência for inferior ao FPS do fluxo. |
visualize | bool | False | Guarda um mapa de calor de ativação de classe junto a cada previsão, mostrando quais pixpto aumentaram as pontuações da classe prevista. Respeita conf e classes, logo classes=[0] mapeia apenas essa classe. Apenas disponível para modelos PyTorch da Ultralytics. |
augment | bool | False | Ativa a augmentação em tempo de teste (TTA) para previsões, o que pode melhorar a robustez da deteção à custa da velocidade de inferência. Apenas disponível para modelos PyTorch da Ultralytics. |
agnostic_nms | bool | False | Ativa a Supressão Não Máxima (NMS) agnóstica de classes, suprimindo caixas sobrepostas com pontuações mais baixas entre diferentes classes, em vez de apenas dentro da mesma classe. Útil em cenários de deteção multi-classe onde a sobreposição de classes é comum. Para modelos de ponta a ponta (YOLO26, YOLOv10), isto apenas evita que a mesma deteção apareça com múltiplos rótulos de classe (duplicados com IoU=1.0) e não executa supressão baseada em limiar de IoU entre caixas distintas. |
classes | list[int] | None | Filtra as predições para um conjunto de IDs de classe. Apenas as deteções pertencentes às classes especificadas serão devolvidas. Útil para focar em objetos relevantes em tarefas de deteçã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 ativadas. Se desativadas, elas terão o tamanho da imagem usado durante a inferência. |
embed | list[int] | None | Especifica as camadas de onde 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 a jusante como agrupamento ou pesquisa de similaridade. Apenas disponível para modelos PyTorch da Ultralytics. |
project | str | None | Nome do diretório do projeto onde as saídas de predição são salvas se save estiver ativado. |
name | str | None | Nome da execução de predição. Usado para criar um subdiretório dentro da pasta do projeto, onde as saídas de predição são armazenadas se save estiver ativado. |
stream | bool | False | Ativa o processamento eficiente em termos de memória para vídeos longos ou numerosas imagens, devolvendo um gerador de objetos de Resultados em vez de carregar todos os fotogramas na memória de uma só vez. |
verbose | bool | True | Controla se deve mostrar registos de inferência detalhados no terminal, fornecendo feedback em tempo real sobre o processo de predição. |
compile | bool ou str | False | Ativa a compilação de grafos PyTorch 2.x torch.compile com backend='inductor'. Aceita True → "default", False → desativa, ou um modo de string como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Retorna para o modo ávido (eager) com um aviso se não for suportado. |
channels_last | bool | False | Usa o formato de memória channels_last (NHWC) para convoluções durante a inferência, acelerando GPUs CUDA Tensor Core sem alteração nos resultados. Aplica-se apenas a modelos PyTorch nativos; é ignorado para CPU, MPS e formatos exportados como TensorRT e ONNX. |
end2end | bool | None | Substitui o modo ponta a ponta (end-to-end) em modelos YOLO que suportam inferência sem NMS (YOLO26, YOLOv10). Configurá-lo como False permite executar a predição usando o pipeline tradicional de NMS, permitindo adicionalmente o uso do argumento iou. Consulte o End-to-End Detection guide para obter detalhes. |
Argumentos de visualização:
| Argumento | Tipo | Predefiniçã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 | Ativa a gravação das imagens ou vídeos anotados em ficheiros. Útil para documentação, análise posterior ou partilha de resultados. Predefinição como True ao usar CLI e False quando usado em Python. |
save_frames | bool | False | Ao processar vídeos, guarda fotogramas individuais como imagens. Útil para extrair fotogramas específicos ou para uma análise detalhada fotograma a fotograma. |
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 pontuações de confiança nos ficheiros de texto guardados. Melhora os detalhes disponíveis para pós-processamento e análise. |
save_crop | bool | False | Guarda imagens recortadas das deteções. Útil para aumento de conjuntos de dados, análise ou criação de conjuntos de dados 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 a pontuação de confiança para cada detecção ao lado do rótulo. Fornece uma visão sobre a certeza do modelo para cada detecção. |
show_boxes | bool | True | Desenha caixas delimitadoras à volta dos objetos detetados. Essencial para identificação visual e localização de objetos em imagens ou fotogramas de vídeo. |
line_width | int or None | 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 maior clareza. |
Formatos de imagem e vídeo#
O 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 predição.
Imagens#
A tabela abaixo contém formatos de imagem Ultralytics válidos.
Os formatos HEIC/HEIF exigem pi-heif, que é instalado automaticamente no primeiro uso. O AVIF é suportado nativamente pelo Pillow.
| Sufixos de imagem | Exemplo de comando predict | Referência |
|---|---|---|
.avif | yolo predict source=image.avif | AV1 Image File Format |
.bmp | yolo predict source=image.bmp | Microsoft BMP File Format |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | High Efficiency Image Format |
.heif | yolo predict source=image.heif | High Efficiency Image Format |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | Multi Picture Object |
.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 |
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 - Wikipedia |
.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 do Ultralytics predict() retornarão uma lista de objetos Results:
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 inferenceOs objetos Results 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 da imagem original em (altura, largura). |
boxes | Boxes, optional | Um objeto Boxes contendo as caixas delimitadoras 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 tarefas de classificação. |
keypoints | Keypoints, optional | Um objeto Keypoints contendo os pontos-chave detectados para cada objeto. |
obb | OBB, optional | Um objeto OBB contendo caixas delimitadoras orientadas. |
semantic_mask | SemanticMask, optional | Um objeto SemanticMask contendo um mapa de classe denso por pixel. |
speed | dict | Um dicionário de velocidades de pré-processamento, inferência e pós-processamento em milissegundos por imagem. |
names | dict | Um dicionário mapeando índices de classe para nomes de classe. |
path | str | O caminho para o arquivo de imagem. |
save_dir | str, optional | Diretório para salvar os resultados. |
Resultados por Tarefa#
Quais campos abaixo são preenchidos depende da tarefa do seu modelo — compare detecção, segmentação, segmentação semântica, estimativa de profundidade, classificação, pose e OBB se você ainda não escolheu uma. Cada predição retorna um objeto Results por imagem ou quadro. 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, confiança e probabilidade são torch.float32, a menos que a precisão reduzida (half precision) seja usada, caso em que se tornam torch.float16. Após result.numpy(), os tensores se tornam arrays do NumPy com os dtypes correspondentes do NumPy. As máscaras de instância são tensores binários torch.uint8, enquanto as máscaras semânticas usam o dtype inteiro prático menor para IDs de classe: torch.uint8, torch.int16 ou torch.int32, dependendo da contagem de classes.
| Atributo | Tipo | Forma | Descrição |
|---|---|---|---|
result.boxes | Boxes | (N) | Caixas de detecção. |
result.boxes.data | torch.float32 | (N,6/7) | [x1,y1,x2,y2,conf,cls] bruto, mais ID de rastreamento opcional. |
result.boxes.xyxy | torch.float32 | (N,4) | Caixas de pixels xyxy. |
result.boxes.conf | torch.float32 | (N,) | Pontuações de confiança. |
result.boxes.cls | torch.float32 | (N,) | IDs de classe; convertidos para int para nomes. |
Os objetos Results têm os seguintes métodos:
| Método | Tipo de Retorno | Descrição |
|---|---|---|
update() | None | Atualiza o objeto Results com novos dados, como caixas, máscaras, probabilidades, obb, keypoints ou máscaras semânticas. |
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 para 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 | Desenha os resultados da detecção em uma imagem BGR de entrada e retorna a imagem anotada. |
show() | None | Exibe a imagem com os resultados da inferência anotados. |
save() | str | Salva a imagem dos resultados da inferência anotados 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 imagens de detecção cortadas no diretório especificado. |
summary() | List[Dict[str, Any]] | Converte os resultados da inferência para um dicionário resumido com normalização opcional. |
to_df() | DataFrame | Converte os resultados da detecção para um DataFrame do Polars. |
to_csv() | str | Converte os resultados da detecção para o formato CSV. |
to_json() | str | Converte os resultados da detecção para o formato JSON. |
Para mais detalhes, consulta a documentação da classe Results.
Caixas (Boxes)#
O objeto Boxes pode ser usado para indexar, manipular e converter caixas delimitadoras para diferentes formatos.
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 boxesAqui está uma tabela para os métodos e propriedades da classe Boxes, incluindo 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 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, consulta a documentação da classe Boxes.
Máscaras#
O objeto Masks pode ser usado para indexar, manipular e converter máscaras em segmentos.
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 masksAqui está uma tabela para os métodos e propriedades da classe Masks, incluindo nome, tipo e descrição:
| Nome | Tipo | Descrição |
|---|---|---|
data | Propriedade (torch.Tensor) | Tensor de máscara binária torch.uint8 com formato (N,H,W) e valores 0 ou 1. |
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 (list[np.ndarray]) | Uma lista de polígonos de máscara normalizados. |
xy | Propriedade (list[np.ndarray]) | Uma lista de polígonos de máscara em coordenadas de pixel. |
Para mais detalhes, consulta a documentação da classe Masks.
SemanticMask#
SemanticMask armazena um mapa de classe denso para resultados de segmentação semântica. Ao contrário de Masks, ele não contém uma máscara binária por objeto e não fornece utilitários de polígono.
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| Nome | Tipo | Descrição |
|---|---|---|
data | Propriedade (torch.Tensor) | Mapa de IDs de classe com formato (H,W). O Dtype é torch.uint8, torch.int16 ou torch.int32, selecionado pela contagem de classes. |
shape | Propriedade (tuple) | Formato do mapa de classe, geralmente correspondendo a result.orig_shape. |
cpu() | Método | Retorna o tensor da máscara semântica na memória da CPU. |
numpy() | Método | Retorna o tensor da máscara semântica como um array NumPy. |
cuda() | Método | Retorna o tensor da máscara semântica na memória da GPU. |
to() | Método | Retorna o tensor da máscara semântica com o dispositivo e dtype especificados. |
Keypoints#
O objeto Keypoints pode ser usado para indexar, manipular e normalizar coordenadas.
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 keypointsAqui está uma tabela para os métodos e propriedades da classe Keypoints, incluindo nome, tipo e descrição:
| Nome | Tipo | Descrição |
|---|---|---|
cpu() | Método | Retorna o tensor dos keypoints na memória da CPU. |
numpy() | Método | Retorna o tensor dos keypoints como um array NumPy. |
cuda() | Método | Retorna o tensor dos 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, consulta a documentação da classe Keypoints.
Probs#
O objeto Probs pode ser usado para obter índices e pontuações de classificação de top1 e top5.
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 probabilitiesAqui está uma tabela resumindo os métodos e propriedades para a classe Probs:
| Nome | Tipo | Descrição |
|---|---|---|
cpu() | Método | Retorna uma cópia do tensor de probs na memória da CPU. |
numpy() | Método | Retorna uma cópia do tensor de probs como um array NumPy. |
cuda() | Método | Retorna uma cópia do tensor de probs na memória da GPU. |
to() | Método | Retorna uma cópia do tensor de probs com o dispositivo e dtype especificados. |
top1 | Propriedade (int) | Índice da classe top 1. |
top5 | Propriedade (list[int]) | Índices das classes top 5. |
top1conf | Propriedade (torch.Tensor) | Confiança da classe top 1. |
top5conf | Propriedade (torch.Tensor) | Confianças das classes top 5. |
Para mais detalhes, consulta a documentação da classe Probs.
OBB#
O objeto OBB pode ser usado para indexar, manipular e converter caixas delimitadoras orientadas para diferentes formatos.
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 boxesAqui está uma tabela para os métodos e propriedades da classe OBB, incluindo 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 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 normalizado pelo tamanho da imagem. |
Para mais detalhes, consulta a documentação da classe OBB.
Plotando Resultados#
O método plot() em objetos Results facilita a visualização de 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 do NumPy, permitindo fácil exibição ou salvamento.
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() suporta vários argumentos para personalizar a saída:
| Argumento | Tipo | Descrição | Predefinição |
|---|---|---|---|
conf | bool | Incluir pontuações de confiança de detecção. | True |
line_width | float | Espessura da linha das caixas delimitadoras. É dimensionada com o tamanho da imagem se None. | None |
font_size | float | Tamanho da fonte do texto. É dimensionado com o tamanho da imagem se None. | None |
font | str | Nome da fonte para anotações de texto. | 'Arial.ttf' |
pil | bool | Retornar imagem como um objeto PIL Image. | False |
img | np.ndarray | torch.Tensor | Imagem alternativa. Os tensors devem ser contíguos HWC BGR uint8. | None |
kpt_radius | int | Raio para os keypoints desenhados. | 5 |
kpt_line | bool | Conectar keypoints com linhas. | True |
labels | bool | Incluir rótulos de classe nas anotações. | True |
boxes | bool | Sobrepor caixas delimitadoras na imagem. | True |
masks | bool | Sobrepor máscaras na imagem. | True |
probs | bool | Incluir probabilidades de classificação. | True |
show | bool | Exibir a imagem anotada diretamente usando o visualizador de imagens 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 for True. | None |
color_mode | str | Especifique o modo de cor, por exemplo, 'instance' ou 'class'. | 'class' |
txt_color | tuple[int, int, int] | Cor do texto BGR para a caixa delimitadora e rótulo de classificação da imagem. | (255, 255, 255) |
Inferência Thread-Safe#
Garantir a segurança de thread durante a inferência é crucial quando você está executando vários modelos YOLO em paralelo em threads diferentes. A inferência thread-safe garante que as prediçõ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 uma aplicação multi-thread, é importante instanciar objetos de modelo separados para cada thread ou empregar armazenamento local de thread para evitar conflitos:
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=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()Para uma análise detalhada da inferência thread-safe com modelos YOLO e instruções passo a passo, consulte nosso Guia de Inferência Thread-Safe do YOLO. Este guia fornecerá todas as informações necessárias para evitar armadilhas comuns e garantir que sua inferência multithread seja executada sem problemas.
Loop for de fonte de streaming#
Aqui está um script Python usando OpenCV (cv2) e YOLO para executar inferência em quadros de vídeo. Este script assume que você já instalou os pacotes necessários (opencv-python e ultralytics).
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 executará predições em cada quadro do vídeo, visualizará os resultados e os exibirá em uma janela. O loop pode ser encerrado pressionando 'q'.
O que vem a seguir#
Tudo pronto para ir além de um modelo pré-treinado? Confirme que sua tarefa se adapta ao seu problema, formate seus próprios dados com o Guia de Datasets e, em seguida, treine com eles.
FAQ#
O que é o Ultralytics YOLO e seu modo predict para inferência em tempo real?#
O Ultralytics YOLO é um modelo de última geração para object detection, instance segmentation, semantic segmentation, depth estimation e classification em tempo real. O seu predict mode 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, ele também oferece processamento em lote e streaming modes. Para obter mais detalhes sobre seus recursos, confira o predict mode do Ultralytics YOLO.
Como posso executar inferência usando o Ultralytics YOLO em diferentes fontes de dados?#
O 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 chamada model.predict(). Por exemplo, use 'image.jpg' para uma imagem local ou 'https://ultralytics.com/images/bus.jpg' para uma URL. Confira os exemplos detalhados para várias fontes de inferência na documentação.
Como otimizo 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 com eficiência, você pode usar o streaming mode definindo stream=True no método de chamada do preditor. O streaming mode gera um gerador eficiente em termos de memória de objetos Results em vez de carregar todos os quadros na memória. Para processar vídeos longos ou grandes conjuntos de dados, o streaming mode é particularmente útil. Saiba mais sobre o streaming mode.
Quais argumentos de inferência o Ultralytics YOLO suporta?#
O método model.predict() no YOLO suporta vários argumentos, como conf, iou, imgsz, device e muito mais. Esses argumentos permitem que você personalize o processo de inferência, definindo parâmetros como limites de confiança, tamanho da imagem e o dispositivo usado para computação. Descrições detalhadas desses argumentos podem ser encontradas na seção argumentos de inferência.
Como extraio embeddings de um modelo YOLO?#
Use model.embed(source) para extrair embeddings de características da penúltima camada, ou passe embed=[layer_index] para model.predict() para escolher camadas específicas.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
source = "https://ultralytics.com/images/bus.jpg"
results = model.predict(source) # Results objects
embeddings = model.embed(source) # list of torch.Tensor embeddingsComo posso visualizar e salvar os resultados das predições do YOLO?#
Após executar a inferência com o YOLO, os objetos Results contêm métodos para exibir e salvar imagens anotadas. Você pode usar métodos como result.show() e result.save(filename="result.jpg") para visualizar e salvar os resultados. Quaisquer diretórios pai ausentes no caminho do nome do arquivo são criados automaticamente (por exemplo, result.save("path/to/result.jpg")). Para obter uma lista abrangente desses métodos, consulte a seção trabalhando com resultados.


