Predição de modelos com Ultralytics YOLO#
Introdução#
No mundo da aprendizagem automática e da visão computacional, o processo de interpretar dados visuais é frequentemente chamado de inferência ou predição. O Ultralytics YOLO26 oferece uma funcionalidade avançada conhecida como modo predict, concebida para inferência de alto desempenho e em tempo real numa ampla variedade de fontes de dados.
Consulta a pré-visualização não lançada do YOLO27 para ver exemplos de inferência planeados.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
Aplicações no mundo real#
| Fabrico | Desporto | Segurança |
|---|---|---|
| Deteção de peças sobresselentes de veículos | Deteção de jogadores de futebol | Deteção de quedas de pessoas |
Porquê usar o Ultralytics YOLO para inferência?#
Eis por que deves considerar o modo predict do YOLO26 para as tuas várias necessidades de inferência:
- Versatilidade: Capaz de executar inferência em imagens, vídeos e até transmissões em direto.
- Desempenho: Desenvolvido para processamento em tempo real e de alta velocidade, sem sacrificar a precisão.
- Facilidade de utilização: Interfaces intuitivas de Python e CLI para implementação e testes rápidos.
- Altamente personalizável: Várias definições e parâmetros permitem ajustar o comportamento de inferência do modelo de acordo com os teus requisitos específicos.
- Pronto para produção: Implementa modelos como endpoints de inferência da Ultralytics Platform, com escalabilidade automática e monitorização, ou executa a inferência localmente.
Principais funcionalidades do modo predict#
O modo predict do YOLO26 foi concebido para ser robusto e versátil, incluindo:
- Compatibilidade com várias fontes de dados: Quer os teus dados estejam na forma de imagens individuais, uma coleção de imagens, ficheiros de vídeo ou transmissões de vídeo em tempo real, o modo predict trata de tudo.
- Modo de streaming: Usa a funcionalidade de streaming para gerar um gerador eficiente em termos de memória de objetos
Results. Ativa-a definindostream=Trueno método de chamada do preditor. Ao contrário do comportamento predefinido (stream=False), que devolve uma lista com todos os resultados,stream=Trueproduz os resultados um de cada vez, sendo especialmente útil para vídeos longos e transmissões em direto. - Processamento em lotes: Processa várias imagens ou frames de vídeo num único lote, reduzindo ainda mais o tempo total de inferência.
- Fácil integração: Integra facilmente com pipelines de dados existentes e outros componentes de software, graças à sua API flexível.
Os modelos Ultralytics YOLO devolvem uma lista Python de objetos Results ou um gerador eficiente em termos de memória de objetos Results quando stream=True é passado ao modelo durante a inferência:
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 apresentado na tabela abaixo. As fontes incluem imagens estáticas, transmissões de vídeo e vários formatos de dados. A tabela também indica se cada fonte pode ser usada no modo de streaming com o argumento stream=True ✅. O modo de streaming é útil para processar vídeos ou transmissões em direto, pois cria um gerador de resultados em vez de carregar todos os frames para a memória.
Usa stream=True para processar vídeos longos ou grandes conjuntos de dados e gerir a memória de forma eficiente. Quando stream=False, os resultados de todos os frames ou pontos de dados são armazenados na memória, o que pode aumentar rapidamente e causar erros de memória insuficiente em entradas grandes. Em contrapartida, stream=True utiliza um gerador que mantém na memória apenas os resultados do frame ou ponto de dados atual, reduzindo significativamente o consumo de memória e evitando problemas de memória insuficiente.
| Origem | Exemplo | Tipo | Notas |
|---|---|---|---|
| imagem | 'image.jpg' | str ou Path | Ficheiro de imagem individual. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | URL para uma imagem. |
| captura de ecrã | 'screen' | str | Captura uma captura de ecrã. |
| 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 | Ficheiro CSV que contém caminhos para imagens, vídeos ou diretórios. |
| vídeo ✅ | 'video.mp4' | str ou Path | Ficheiro de vídeo em formatos como MP4, AVI, etc. |
| diretório ✅ | 'path/' | str ou Path | Caminho para um diretório que contém imagens ou vídeos. |
| glob ✅ | 'path/*.jpg' | str | Padrão Glob para corresponder a vários ficheiros. Usa o carácter * como 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 | Ficheiro de texto *.streams com um URL de stream por linha; por exemplo, 8 streams serão executados com um tamanho de lote 8. |
| webcam ✅ | 0 | int | Índice do dispositivo de câmara ligado no qual executar a inferência. |
Abaixo encontram-se exemplos de código para utilizar cada tipo de fonte:
Executa a inferência num ficheiro de imagem.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objectsArgumentos de inferência#
model.predict() aceita vários argumentos que podem ser passados no momento da inferência para substituir os valores predefinidos:
Forma fixa vs retângulo mínimo (rect)#
Por predefinição, predict usa rect=True, que ativa o preenchimento de retângulo mínimo quando possível. A imagem é redimensionada para caber em imgsz e preenchida apenas até ao múltiplo de stride mais próximo, pelo que o tensor final pode ser menor do que imgsz. O preenchimento de retângulo mínimo só é utilizado quando todas as imagens do lote têm a mesma forma e o backend o suporta (.pt do PyTorch ou ONNX / Triton dinâmico). Caso contrário, as imagens são preenchidas até ao destino completo imgsz.
Usa rect=False para preencher sempre até ao destino completo imgsz. Isto é recomendado quando precisas de um tamanho de entrada fixo para corresponder a modelos exportados (ONNX, TensorRT, etc.).
Inteiro vs tuplo imgsz
- Um inteiro
imgsz=640torna-se num destino quadrado(640, 640)após o arredondamento pelo stride. - Um tuplo
imgsz=(384, 672)define um destino retangular. Comrect=Trueeauto=True, o tensor real pode ser menor do que este destino.
Treino vs predict/export
O treino aceita apenas um único inteiro imgsz (uma lista [h, w] é convertida no maior valor). Predict e export aceitam um inteiro ou um tuplo (height, width).
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, um ficheiro de vídeo, um diretório, um URL ou um ID de dispositivo para transmissões em direto. Se for omitida, é registado um aviso e o modelo recorre aos recursos de demonstração integrados (ultralytics/assets ou um URL de demonstração para OBB). Suporta uma vasta gama de formatos e fontes, permitindo uma aplicação flexível em diferentes tipos de entrada. |
conf | float | 0.25 | Define o limite mínimo de confiança para as deteções. Os objetos detetados com confiança abaixo deste limite serão ignorados. Ajustar este valor pode ajudar a reduzir falsos positivos. |
iou | float | 0.7 | Limite de Interseção sobre União (IoU) para a Supressão de Não Máximos (NMS). Valores mais baixos resultam em menos deteções ao eliminar caixas sobrepostas, o que é útil para reduzir duplicados. |
imgsz | int ou tuple | 640 | Alvo do letterbox. Um inteiro fornece um N×N quadrado; uma tupla fornece (height, width). Com rect=True, o tensor real pode ser menor do que este alvo devido ao preenchimento de retângulo mínimo. Usa rect=False para um tamanho fixo. Consulta Forma fixa vs. retângulo mínimo. |
rect | bool | True | Se True, usa preenchimento de retângulo mínimo quando possível (batch com a mesma forma e backend compatível). Se False, preenche sempre até ao imgsz completo. Consulta Forma fixa vs. retângulo mínimo. |
quantize | int ou str | None | Precisão de inferência: 16/"fp16" e 32/"fp32"/unset selecionam computação FP16 ou FP32 para modelos PyTorch e TorchScript; outros formatos computam na precisão que o artefato e o tempo de execução selecionam. Em 16, o OpenVINO ainda arredonda a entrada para FP16 no cliente e a expande de volta para FP32, sem alterar o que o tempo de execução calcula. A quantização INT8/PTQ é configurada durante a export, sendo usada posteriormente ao carregar o modelo exportado. Substitui a flag obsoleta half. |
device | str | None | Especifica o dispositivo para a inferência (por exemplo, cpu, cuda:0, 0, npu ou npu:0). Permite selecionar entre CPU, uma GPU específica, NPU Huawei Ascend ou outros dispositivos de computação para executar o modelo. |
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 tem nomes de classes próprios: uma exportação de terceiros ou uma exportação da Ultralytics separada dos metadados que a acompanham. Caso contrário, esse modelo comunica class0, class1 e assim por diante. |
batch | int | 1 | Especifica o tamanho do batch para a inferência (funciona apenas quando a origem é um diretório, um ficheiro de vídeo ou um ficheiro .txt). Um tamanho de batch maior pode proporcionar um débito superior, reduzindo o tempo total necessário para a inferência. |
max_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 resultados excessivos em cenas densas. |
vid_stride | int | 1 | Passo de frames para entradas de vídeo. Permite ignorar frames em vídeos para acelerar o processamento, com o custo de reduzir a resolução temporal. Um valor de 1 processa todos os frames; valores superiores ignoram frames. |
stream_buffer | bool | False | Determina se os frames recebidos devem ser colocados numa fila para streams de vídeo. Se False, os frames antigos são descartados para acomodar os novos (otimizado para aplicações em tempo real). Se True, os novos frames são colocados numa fila num buffer, garantindo que nenhum frame é ignorado, mas causando latência se o FPS da inferência for inferior ao FPS do stream. |
visualize | bool | False | Guarda um mapa de calor de ativação das classes junto a cada predição, mostrando quais pixels aumentaram as pontuações das classes previstas. Respeita conf e classes, pelo que classes=[0] mapeia apenas essa classe. Disponível apenas para modelos PyTorch da Ultralytics. |
augment | bool | False | Ativa o aumento em tempo de teste (TTA) para as predições, podendo melhorar a robustez da deteção à custa da velocidade de inferência. Disponível apenas para modelos PyTorch da Ultralytics. |
agnostic_nms | bool | False | Ativa a Supressão Não Máxima (NMS) agnóstica de classes, suprimindo caixas sobrepostas com pontuações mais baixas em diferentes classes, em vez de apenas na mesma classe. Útil em cenários de deteção multi-classe onde a sobreposição de classes é comum. Com a inferência sem NMS (nms=False no YOLO26 ou YOLOv10), isto apenas evita que a mesma deteção apareça com múltiplos rótulos de classe (duplicados de IoU=1.0) e não efetua a supressão baseada no limiar de IoU entre caixas distintas. |
classes | list[int] | None | Filtra as predições para um conjunto de IDs de classes. Apenas serão devolvidas as deteções pertencentes às classes especificadas. É útil para te concentrares nos objetos relevantes em tarefas de deteção multiclasse. |
retina_masks | bool | False | Devolve máscaras de segmentação de alta resolução. Quando ativadas, as máscaras devolvidas (masks.data) corresponderão ao tamanho da imagem original. Quando desativadas, terão o tamanho da imagem utilizado durante a inferência. |
embed | list[int] | None | Especifica as camadas das quais extrair vetores de características ou embeddings. Usa model.embed(source) para embeddings da penúltima camada ou model.predict(source, embed=[layer]) para selecionar camadas específicas. É útil para tarefas posteriores, como agrupamento ou pesquisa por similaridade. Disponível apenas para modelos PyTorch da Ultralytics. |
project | str | None | Nome do diretório do projeto onde os resultados das predições são guardados se save estiver ativado. |
name | str | None | Nome da execução da predição. Utilizado para criar um subdiretório dentro da pasta do projeto, onde os resultados das predições são guardados se save estiver ativado. |
stream | bool | False | Ativa o processamento eficiente em termos de memória para vídeos longos ou numerosas imagens, devolvendo um gerador de objetos Results em vez de carregar todos os frames na memória de uma só vez. |
verbose | bool | True | Controla se os registos detalhados da inferência são apresentados no terminal, fornecendo feedback em tempo real sobre o processo de predição. |
compile | bool ou str | False | Ativa a compilação de grafos torch.compile do PyTorch 2.x com backend='inductor'. Aceita True → "default", False → desativa, ou um modo de string, como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Recorre ao modo eager com um aviso se não houver suporte. |
channels_last | bool | None | Utiliza o formato de memória channels_last (NHWC) para a inferência nativa do PyTorch. None ativa-o automaticamente em CPUs x86 Linux e Windows com oneDNN ativado e PyTorch 1.13 ou posterior; False desativa-o; e True solicita-o em CPUs x86 ou dispositivos CUDA compatíveis. ARM64, MPS, versões antigas do PyTorch, CPUs sem oneDNN e formatos exportados como TensorRT e ONNX permanecem inalterados. |
nms | bool, opcional | None | Executa inferência de um para muitos com NMS por predefinição (None ou True). Define False para utilizar o cabeçote de um para um sem NMS quando disponível. Vê o guia de Deteção de Ponta a Ponta para obter detalhes. |
Argumentos de visualização:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
show | bool | False | Se True, apresenta as imagens ou vídeos anotados numa janela. É útil para obter feedback visual imediato durante o desenvolvimento ou os testes. |
save | bool | False or True | Ativa a gravação das imagens ou vídeos anotados em ficheiros. É útil para documentação, análises adicionais ou partilha de resultados. O valor predefinido é True ao utilizar a CLI e False ao utilizar Python. |
save_frames | bool | False | Ao processar vídeos, guarda os frames individuais como imagens. É útil para extrair frames específicos ou para uma análise detalhada frame a frame. |
save_txt | bool | False | Guarda os resultados das deteções num ficheiro de texto, seguindo o formato [class] [x_center] [y_center] [width] [height] [confidence]. É útil para integração com outras ferramentas de análise. |
save_conf | bool | False | Inclui as pontuações de confiança nos ficheiros de texto guardados. Aumenta o nível de detalhe disponível para pós-processamento e análise. |
save_crop | bool | False | Guarda imagens recortadas das deteções. É útil para aumento de datasets, análise ou criação de datasets focados em objetos específicos. |
show_labels | bool | True | Apresenta etiquetas para cada deteção no resultado visual. Permite compreender imediatamente os objetos detetados. |
show_conf | bool | True | Apresenta a pontuação de confiança de cada deteção junto à etiqueta. Permite compreender o grau de certeza do modelo em cada deteção. |
show_boxes | bool | True | Desenha caixas delimitadoras à volta dos objetos detetados. É essencial para a identificação visual e a localização de objetos em imagens ou fotogramas de vídeo. |
line_width | int or None | None | Especifica a largura das linhas das caixas delimitadoras. Se None, a largura da linha é ajustada automaticamente com base no tamanho da imagem. Permite uma personalização visual para maior clareza. |
Formatos de imagem e vídeo#
YOLO26 suporta vários formatos de imagem e vídeo, conforme especificado em ultralytics/data/utils.py. Consulte as tabelas abaixo para ver os sufixos válidos e exemplos de comandos de previsão.
Imagens#
A tabela abaixo contém formatos de imagem Ultralytics válidos.
Os formatos HEIC/HEIF requerem pi-heif, que é instalado automaticamente na primeira utilização. AVIF é suportado nativamente pelo Pillow.
| Sufixos de imagem | Comando de previsão de exemplo | Referência |
|---|---|---|
.avif | yolo predict source=image.avif | Formato de ficheiro de imagem AV1 |
.bmp | yolo predict source=image.bmp | Formato de ficheiro BMP da Microsoft |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | Formato de imagem de alta eficiência |
.heif | yolo predict source=image.heif | Formato de imagem de alta eficiência |
.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 | Comando de previsão de exemplo | 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 Parte 14 |
.mkv | yolo predict source=video.mkv | Matroska |
.mov | yolo predict source=video.mov | Formato de ficheiro QuickTime |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Parte 14 - Wikipédia |
.mpeg | yolo predict source=video.mpeg | MPEG-1 Parte 2 |
.mpg | yolo predict source=video.mpg | MPEG-1 Parte 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 | Projeto WebM |
Trabalhar com resultados#
Todas as chamadas Ultralytics predict() devolvem 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 | A forma da imagem original no formato (altura, largura). |
boxes | Boxes, optional | Um objeto Boxes que contém as caixas delimitadoras das deteções. |
masks | Masks, optional | Um objeto Masks que contém as máscaras das deteções. |
probs | Probs, optional | Um objeto Probs que contém as probabilidades de cada classe para a tarefa de classificação. |
keypoints | Keypoints, optional | Um objeto Keypoints que contém os pontos-chave detetados de cada objeto. |
obb | OBB, optional | Um objeto OBB que contém caixas delimitadoras orientadas. |
semantic_mask | SemanticMask, optional | Um objeto SemanticMask que contém um mapa de classes denso por pixel. |
speed | dict | Um dicionário com as velocidades de pré-processamento, inferência e pós-processamento em milissegundos por imagem. |
names | dict | Um dicionário que associa índices de classe a nomes de classe. |
path | str | O caminho para o ficheiro de imagem. |
save_dir | str, optional | Diretório onde guardar os resultados. |
Resultados por tarefa#
Quais campos abaixo são preenchidos depende da tarefa do teu modelo — compara deteção, segmentação, segmentação semântica, estimativa de profundidade, classificação, pose e OBB se ainda não escolheste uma. Cada predição devolve um objeto Results por imagem ou fotograma. Os campos comuns acima estão sempre disponíveis, enquanto os dados de predição específicos da tarefa são armazenados nos campos abaixo. Os tensores de coordenadas e confiança YOLO são torch.float32; os tensores de probabilidade são torch.float32, a menos que seja usada precisão misturada/metade, caso em que são torch.float16. Após result.numpy(), os tensores tornam-se matrizes do NumPy com tipos de dados (dtypes) do NumPy correspondentes. As máscaras de instância são tensores binários torch.uint8, enquanto as máscaras semânticas utilizam o tipo de dados inteiro mais prático para IDs de classe: torch.uint8, torch.int16 ou torch.int32, dependendo da contagem de classes.
| Atributo | Tipo | Forma | Descrição |
|---|---|---|---|
result.boxes | Boxes | (N) | Caixas de deteção. |
result.boxes.data | torch.float32 | (N,6/7) | [x1,y1,x2,y2,conf,cls] bruto, além de um ID de rastreio 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; converte para int para obter os 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, probs, obb, pontos-chave ou máscaras semânticas. |
cpu() | Results | Devolve uma cópia do objeto Results com todos os tensores movidos para a memória da CPU. |
numpy() | Results | Devolve uma cópia do objeto Results com todos os tensores convertidos em arrays NumPy. |
cuda() | Results | Devolve uma cópia do objeto Results com todos os tensores movidos para a memória da GPU. |
to() | Results | Devolve uma cópia do objeto Results com os tensores movidos para o dispositivo e tipo de dados 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 deteção numa imagem BGR de entrada e devolve a imagem anotada. |
show() | None | Apresenta a imagem com os resultados da inferência anotados. |
save() | str | Guarda a imagem dos resultados da inferência anotados num ficheiro e devolve o nome do ficheiro. |
verbose() | str | Devolve uma cadeia de registo para cada tarefa, detalhando os resultados da deteção e da classificação. |
save_txt() | str | Guarda os resultados da deteção num ficheiro de texto e devolve o caminho para o ficheiro guardado. |
save_crop() | None | Guarda as imagens recortadas das deteções no diretório especificado. |
summary() | List[Dict[str, Any]] | Converte os resultados da inferência num dicionário resumido, com normalização opcional. |
to_df() | DataFrame | Converte os resultados da deteção num DataFrame do Polars. |
to_csv() | str | Converte os resultados da deteção para o formato CSV. |
to_json() | str | Converte os resultados da deteção para o formato JSON. |
Para mais detalhes, consulta a documentação da classe Results.
Caixas#
O objeto Boxes pode ser utilizado para indexar, manipular e converter caixas delimitadoras para diferentes formatos.
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 boxesEis uma tabela com os métodos e propriedades da classe Boxes, incluindo o respetivo 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 numa matriz 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) | Devolve as caixas no formato xyxy. |
conf | Propriedade (torch.Tensor) | Devolve os valores de confiança das caixas. |
cls | Propriedade (torch.Tensor) | Devolve os valores das classes das caixas. |
id | Propriedade (torch.Tensor) | Devolve os IDs de rastreamento das caixas (se disponíveis). |
xywh | Propriedade (torch.Tensor) | Devolve as caixas no formato xywh. |
xyxyn | Propriedade (torch.Tensor) | Devolve as caixas no formato xyxy normalizadas pelo tamanho da imagem original. |
xywhn | Propriedade (torch.Tensor) | Devolve as caixas no formato xywh normalizadas pelo tamanho da imagem original. |
Para mais detalhes, consulta a documentação da classe Boxes.
Máscaras#
O objeto Masks pode ser utilizado para indexar, manipular e converter máscaras em segmentos.
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 masksEis uma tabela com os métodos e propriedades da classe Masks, incluindo o respetivo nome, tipo e descrição:
| Nome | Tipo | Descrição |
|---|---|---|
data | Propriedade (torch.Tensor) | Tensor de máscara binária torch.uint8 com a forma (N,H,W) e valores 0 ou 1. |
cpu() | Método | Devolve o tensor de máscaras na memória da CPU. |
numpy() | Método | Devolve o tensor de máscaras como uma matriz NumPy. |
cuda() | Método | Devolve o tensor de máscaras na memória da GPU. |
to() | Método | Devolve o tensor de máscaras com o dispositivo e o 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 píxeis. |
Para mais detalhes, consulta a documentação da classe Masks.
SemanticMask#
SemanticMask armazena um mapa denso de classes para resultados de segmentação semântica. Ao contrário de Masks, não contém uma máscara binária por objeto e não fornece auxiliares para polígonos.
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 a forma (H,W). O dtype é torch.uint8, torch.int16 ou torch.int32, selecionado pela quantidade de classes. |
shape | Propriedade (tuple) | Forma do mapa de classes, geralmente correspondente a result.orig_shape. |
cpu() | Método | Devolve o tensor de máscara semântica na memória da CPU. |
numpy() | Método | Devolve o tensor de máscara semântica como uma matriz NumPy. |
cuda() | Método | Devolve o tensor de máscara semântica na memória da GPU. |
to() | Método | Devolve o tensor de máscara semântica com o dispositivo e o dtype especificados. |
Pontos-chave#
O objeto Keypoints pode ser utilizado para indexar, manipular e normalizar coordenadas.
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 keypointsEis uma tabela com os métodos e propriedades da classe Keypoints, incluindo o respetivo nome, tipo e descrição:
| Nome | Tipo | Descrição |
|---|---|---|
cpu() | Método | Devolve o tensor de pontos-chave na memória da CPU. |
numpy() | Método | Devolve o tensor de pontos-chave como uma matriz NumPy. |
cuda() | Método | Devolve o tensor de pontos-chave na memória da GPU. |
to() | Método | Devolve o tensor de pontos-chave com o dispositivo e o dtype especificados. |
xyn | Propriedade (torch.Tensor) | Uma lista de pontos-chave normalizados representados como tensores. |
xy | Propriedade (torch.Tensor) | Uma lista de pontos-chave em coordenadas de píxeis representados como tensores. |
conf | Propriedade (torch.Tensor) | Devolve os valores de confiança dos pontos-chave, se disponíveis; caso contrário, None. |
Para mais detalhes, consulta a documentação da classe Keypoints.
Probs#
O objeto Probs pode ser utilizado para obter os índices e as pontuações de classificação top1 e top5.
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 probabilitiesEis uma tabela que resume os métodos e as propriedades da classe Probs:
| Nome | Tipo | Descrição |
|---|---|---|
cpu() | Método | Devolve uma cópia do tensor probs na memória da CPU. |
numpy() | Método | Devolve uma cópia do tensor probs como uma matriz NumPy. |
cuda() | Método | Devolve uma cópia do tensor probs na memória da GPU. |
to() | Método | Devolve uma cópia do tensor probs com o dispositivo e o dtype especificados. |
top1 | Propriedade (int) | Índice da classe com maior probabilidade. |
top5 | Propriedade (list[int]) | Índices das 5 classes com maior probabilidade. |
top1conf | Propriedade (torch.Tensor) | Confiança da classe com maior probabilidade. |
top5conf | Propriedade (torch.Tensor) | Confianças das 5 classes com maior probabilidade. |
Para mais detalhes, consulta a documentação da classe Probs.
OBB#
O objeto OBB pode ser utilizado para indexar, manipular e converter caixas delimitadoras orientadas para diferentes formatos.
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 boxesEis uma tabela com os métodos e propriedades da classe OBB, incluindo o respetivo 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 numa matriz 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) | Devolve os valores de confiança das caixas. |
cls | Propriedade (torch.Tensor) | Devolve os valores das classes das caixas. |
id | Propriedade (torch.Tensor) | Devolve os IDs de rastreamento das caixas (se disponíveis). |
xyxy | Propriedade (torch.Tensor) | Devolve as caixas horizontais no formato xyxy. |
xywhr | Propriedade (torch.Tensor) | Devolve as caixas rodadas no formato xywhr. |
xyxyxyxy | Propriedade (torch.Tensor) | Devolve as caixas rodadas no formato xyxyxyxy. |
xyxyxyxyn | Propriedade (torch.Tensor) | Devolve as caixas rodadas no formato xyxyxyxy normalizadas pelo tamanho da imagem. |
Para mais detalhes, consulta a documentação da classe OBB.
Resultados da plotagem#
O método plot() nos objetos Results facilita a visualização das previsões ao sobrepor objetos detetados (como caixas delimitadoras, máscaras, pontos-chave e probabilidades) na imagem original. Este método devolve a imagem anotada como uma matriz NumPy, permitindo apresentá-la ou guardá-la facilmente.
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]) # results list
# Visualize the results
for i, r in enumerate(results):
# Plot results image
im_bgr = r.plot() # BGR-order numpy array
im_rgb = Image.fromarray(im_bgr[..., ::-1]) # RGB-order PIL image
# Show results to screen (in supported environments)
r.show()
# Save results to disk
r.save(filename=f"results{i}.jpg")Parâmetros do método plot()#
O método plot() aceita vários argumentos para personalizar o resultado:
| Argumento | Tipo | Descrição | Predefinição |
|---|---|---|---|
conf | bool | Incluir as pontuações de confiança das deteções. | True |
line_width | float | Largura das linhas das caixas delimitadoras. É ajustada de acordo com o tamanho da imagem se None. | None |
font_size | float | Tamanho do tipo de letra do texto. É ajustado de acordo com o tamanho da imagem se None. | None |
font | str | Nome do tipo de letra das anotações de texto. | 'Arial.ttf' |
pil | bool | Devolver a imagem como um objeto PIL Image. | False |
img | np.ndarray | torch.Tensor | Imagem alternativa. Os tensores têm de ser HWC BGR uint8 contíguos. | None |
kpt_radius | int | Raio dos pontos-chave desenhados. | 5 |
kpt_line | bool | Ligar os pontos-chave com linhas. | True |
labels | bool | Incluir os rótulos das classes nas anotações. | True |
boxes | bool | Sobrepor caixas delimitadoras na imagem. | True |
masks | bool | Sobrepor máscaras na imagem. | True |
probs | bool | Incluir as probabilidades de classificação. | True |
show | bool | Apresentar diretamente a imagem anotada utilizando o visualizador de imagens predefinido. | False |
save | bool | Guardar a imagem anotada num ficheiro especificado por filename. | False |
filename | str | Caminho e nome do ficheiro onde guardar a imagem anotada se save for True. | None |
color_mode | str | Especificar o modo de cor, por exemplo, 'instance' ou 'class'. | 'class' |
txt_color | tuple[int, int, int] | Cor do texto BGR do rótulo da caixa delimitadora e da classificação da imagem. | (255, 255, 255) |
Inferência segura para threads#
Garantir a segurança dos threads durante a inferência é essencial quando executas vários modelos YOLO em paralelo em diferentes threads. A inferência segura para threads garante que as previsões de cada thread ficam isoladas e não interferem umas com as outras, evitando condições de corrida e assegurando resultados consistentes e fiáveis.
Ao utilizar modelos YOLO numa aplicação multithread, é importante instanciar objetos de modelo separados para cada thread ou utilizar armazenamento local ao thread para evitar conflitos:
Instancia um único modelo dentro de cada thread para garantir uma inferência segura para threads:
from threading import Thread
from ultralytics import YOLO
def thread_safe_predict(model, image_path):
"""Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
model = YOLO(model)
results = model.predict(image_path)
# Process results
# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()Para uma análise aprofundada da inferência segura para threads com modelos YOLO e instruções passo a passo, consulta o nosso Guia de inferência YOLO segura para threads. Este guia fornece todas as informações necessárias para evitar problemas comuns e garantir que a tua inferência multithread funciona sem problemas.
Ciclo for de origem em streaming#
Eis um script Python que utiliza OpenCV (cv2) e YOLO para executar inferência em frames de vídeo. Este script pressupõe que já instalaste os pacotes necessários (opencv-python e ultralytics).
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo26n.pt")
# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# Loop through the video frames
while cap.isOpened():
# Read a frame from the video
success, frame = cap.read()
if success:
# Run YOLO inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the annotated frame
cv2.imshow("YOLO Inference", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# Break the loop if the end of the video is reached
break
# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()Este script executa previsões em cada frame do vídeo, visualiza os resultados e apresenta-os numa janela. Podes sair do ciclo premindo 'q'.
E agora?#
Pronto para avançar para além de um modelo pré-treinado? Confirma que a tua tarefa se adequa ao teu problema, formata os teus próprios dados com o guia de conjuntos de dados e, em seguida, treina o modelo com eles.
Perguntas frequentes#
O Ultralytics YOLO é um modelo de última geração para deteção de objetos, segmentação de instâncias, segmentação semântica, estimativa de profundidade e classificação em tempo real. O seu modo de previsão permite realizar inferência de alta velocidade em várias fontes de dados, como imagens, vídeos e transmissões em direto. Concebido para oferecer desempenho e versatilidade, também disponibiliza modos de processamento em lote e de streaming. Para mais detalhes sobre as suas funcionalidades, consulta o modo de previsão do Ultralytics YOLO.
O Ultralytics YOLO pode processar uma vasta gama de fontes de dados, incluindo imagens individuais, vídeos, diretórios, URLs e transmissões. Podes especificar a fonte de dados na chamada
model.predict(). Por exemplo, utiliza'image.jpg'para uma imagem local ou'https://ultralytics.com/images/bus.jpg'para um URL. Consulta os exemplos detalhados de várias fontes de inferência na documentação.Para otimizar a velocidade da inferência e gerir a memória de forma eficiente, podes utilizar o modo de streaming definindo
stream=Trueno método de chamada do preditor. O modo de streaming gera um iterador eficiente em termos de memória de objetosResults, em vez de carregar todos os frames para a memória. O modo de streaming é particularmente útil para processar vídeos longos ou grandes conjuntos de dados. Obtém mais informações sobre o modo de streaming.O método
model.predict()no YOLO é compatível com vários argumentos, comoconf,iou,imgsz,devicee muito mais. Estes argumentos permitem personalizar o processo de inferência, definindo parâmetros como limiares de confiança, o tamanho da imagem e o dispositivo utilizado para o cálculo. Podes encontrar descrições detalhadas destes argumentos na secção argumentos de inferência.Utiliza
model.embed(source)para extrair embeddings de características da penúltima camada ou passaembed=[layer_index]amodel.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 embeddingsDepois de executares a inferência com o YOLO, os objetos
Resultscontêm métodos para apresentar e guardar imagens anotadas. Podes utilizar métodos comoresult.show()eresult.save(filename="result.jpg")para visualizar e guardar os resultados. Quaisquer diretórios-pai em falta no caminho do nome do ficheiro são criados automaticamente (por exemplo,result.save("path/to/result.jpg")). Para obteres uma lista completa destes métodos, consulta a secção trabalhar com resultados.