Salta para o conte√ļdo

Previs√£o de modelos com Ultralytics YOLO

Ultralytics YOLO ecossistema e integra√ß√Ķes

Introdução

No mundo da aprendizagem automática e da visão computacional, o processo de dar sentido aos dados visuais é designado por "inferência" ou "previsão". Ultralytics YOLOv8 oferece uma poderosa funcionalidade conhecida como modo de previsão, concebida para inferência de alto desempenho e em tempo real numa vasta gama de fontes de dados.



Observa: Como extrair os resultados do modelo Ultralytics YOLOv8 para projectos personalizados.

Aplica√ß√Ķes no mundo real

Fabrico Desporto Segurança
Deteção de peças sobressalentes de veículos Deteção de jogadores de futebol Deteção de quedas de pessoas
Deteção de peças sobressalentes de veículos Deteção de jogadores de futebol Deteção de quedas de pessoas

Porquê utilizar Ultralytics YOLO para a inferência?

Eis porque deves considerar o modo de previsão do YOLOv8 para as tuas várias necessidades de inferência:

  • Versatilidade: Capaz de fazer infer√™ncias em imagens, v√≠deos e at√© mesmo em transmiss√Ķes ao vivo.
  • Desempenho: Concebido para processamento em tempo real e a alta velocidade sem sacrificar a precis√£o.
  • Facilidade de utiliza√ß√£o: interfaces intuitivas Python e CLI para uma r√°pida implementa√ß√£o e teste.
  • Altamente personaliz√°vel: V√°rias defini√ß√Ķes e par√Ęmetros para ajustar o comportamento de infer√™ncia do modelo de acordo com os teus requisitos espec√≠ficos.

Principais características do Modo de previsão

YOLOv8O modo de previs√£o do sistema foi concebido para ser robusto e vers√°til, apresentando:

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

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

Prevê

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(["im1.jpg", "im2.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("yolov8n.pt")  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(["im1.jpg", "im2.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

YOLOv8 pode processar diferentes tipos de fontes de entrada para infer√™ncia, como mostra a 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 fluxo cont√≠nuo com o argumento stream=True ‚úÖ. O modo de transmiss√£o em fluxo √© ben√©fico para o processamento de v√≠deos ou transmiss√Ķes em direto, uma vez que cria um gerador de resultados em vez de carregar todos os fotogramas na mem√≥ria.

Dica

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

Fonte Argumenta Tipo Notas
imagem 'image.jpg' str ou Path Ficheiro de imagem √ļnico.
URL 'https://ultralytics.com/images/bus.jpg' str URL para uma imagem.
captura de ecr√£ 'screen' str Captura uma imagem do ecr√£.
PIL Image.open('im.jpg') PIL.Image Formato HWC com canais RGB.
OpenCV cv2.imread('im.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 directó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. Utiliza o * como um caractere curinga.
YouTube ✅ 'https://youtu.be/LNwODJXcvt4' str URL para um vídeo do YouTube.
fluxo ✅ 'rtsp://example.com/media.mp4' str URL para protocolos de transmissão como RTSP, RTMP, TCP ou um endereço IP.
multi-fluxo ‚úÖ 'list.streams' str ou Path *.streams ficheiro de texto com um URL de fluxo por linha, ou seja, 8 fluxos ser√£o executados com o tamanho de lote 8.

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

Fontes de previs√£o

Executa a inferência num ficheiro de imagem.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

Executa a infer√™ncia no conte√ļdo do ecr√£ atual como uma captura de ecr√£.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

# Define current screenshot as source
source = "screen"

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

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

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

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

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

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

import cv2

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

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

import numpy as np

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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

Executa a inferência numa imagem representada como PyTorch tensor .

import torch

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

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

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

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

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

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

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

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

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

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

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

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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

Executa a inferência em fontes de transmissão remotas utilizando os protocolos RTSP, RTMP, TCP e endereço IP. Se forem fornecidos vários fluxos num *.streams ficheiro de texto, a inferência em lote será executada, ou seja, 8 fluxos serão executados com o tamanho de lote 8, caso contrário, os fluxos individuais serão executados com o tamanho de lote 1.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

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

Argumentos de Inferência

model.predict() aceita v√°rios argumentos que podem ser passados no momento da infer√™ncia para substituir as predefini√ß√Ķes:

Exemplo

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

Argumentos de inferência:

Argumenta Tipo Predefinição Descrição
source str 'ultralytics/assets' Especifica a fonte de dados para inferência. Pode ser um caminho de imagem, ficheiro de vídeo, diretório, URL ou ID de dispositivo para feeds em direto. 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 detec√ß√Ķes. Os objectos detectados com confian√ßa abaixo deste limite ser√£o ignorados. Ajustar este valor pode ajudar a reduzir os falsos positivos.
iou float 0.7 Limiar 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, o que √© √ļtil para reduzir duplicados.
imgsz int or tuple 640 Define o tamanho da imagem para infer√™ncia. Pode ser um √ļnico n√ļmero inteiro 640 para redimensionamento quadrado ou uma tupla (altura, largura). O dimensionamento correto pode melhorar a precis√£o da dete√ß√£o e a velocidade de processamento.
half bool False Permite a inferência de meia-precisão (FP16), que pode acelerar a inferência de modelos em GPUs compatíveis com um 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 utilizadores seleccionem entre CPU, um GPU específico, ou outros dispositivos de computação para a execução do modelo.
max_det int 300 N√ļmero m√°ximo de detec√ß√Ķes permitidas por imagem. Limita o n√ļmero total de objectos que o modelo pode detetar numa √ļnica infer√™ncia, evitando sa√≠das excessivas em cenas densas.
vid_stride int 1 Avanço de fotogramas para entradas de vídeo. Permite saltar fotogramas em vídeos para acelerar o processamento à custa da resolução temporal. Um valor de 1 processa cada fotograma, valores mais altos saltam fotogramas.
stream_buffer bool False Determina se todos os quadros devem ser armazenados em buffer ao processar fluxos de v√≠deo (True), ou se o modelo deve retornar o quadro mais recente (False). √ötil para aplica√ß√Ķes em tempo real.
visualize bool False Ativa a visualiza√ß√£o dos recursos do modelo durante a infer√™ncia, fornecendo informa√ß√Ķes sobre o que o modelo est√° "vendo". √ötil para depura√ß√£o e interpreta√ß√£o do modelo.
augment bool False Permite o aumento do tempo de teste (TTA) para previs√Ķes, melhorando potencialmente a robustez da dete√ß√£o √† custa da velocidade de infer√™ncia.
agnostic_nms bool False Permite a supressão não máxima (NMS) independente de classe, que mescla caixas sobrepostas de classes diferentes. Útil em cenários de deteção de várias classes em que a sobreposição de classes é comum.
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 se concentrar em objetos relevantes em tarefas de dete√ß√£o de v√°rias classes.
retina_masks bool False Usa máscaras de segmentação de alta resolução, se disponíveis no modelo. Isso pode melhorar a qualidade da máscara para tarefas de segmentação, fornecendo detalhes mais finos.
embed list[int] None Especifica as camadas a partir das quais se extraem vectores de caracter√≠sticas ou incorpora√ß√Ķes. √ötil para tarefas a jusante como o agrupamento ou a pesquisa de semelhan√ßas.

Argumentos de visualização:

Argumenta Tipo Predefinição Descrição
show bool False Se TrueApresenta as imagens ou v√≠deos anotados numa janela. √Č √ļtil para obter feedback visual imediato durante o desenvolvimento ou o teste.
save bool False Permite guardar as imagens ou vídeos anotados num ficheiro. Útil para documentação, análise posterior ou partilha de resultados.
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 Guarda os resultados da deteção num ficheiro de texto, seguindo o formato [class] [x_center] [y_center] [width] [height] [confidence]. Útil para a integração com outras ferramentas de análise.
save_conf bool False Inclui pontua√ß√Ķes de confian√ßa nos arquivos de texto salvos. Aumenta o detalhe dispon√≠vel para p√≥s-processamento e an√°lise.
save_crop bool False Guarda imagens cortadas de detec√ß√Ķes. √ötil para aumentar o conjunto de dados, analisar ou criar conjuntos de dados espec√≠ficos para objectos espec√≠ficos.
show_labels bool True Apresenta etiquetas para cada deteção na saída visual. Proporciona uma compreensão imediata dos objectos detectados.
show_conf bool True Apresenta a pontuação de confiança para cada deteção ao lado da etiqueta. Dá uma ideia da certeza do modelo para cada deteção.
show_boxes bool True Desenha caixas delimitadoras em torno dos objectos detectados. Essencial para a identificação visual e localização de objectos em imagens ou fotogramas de vídeo.
line_width None or int None Especifica a largura da linha das caixas delimitadoras. Se NoneSe não tiveres a certeza, a largura da linha é automaticamente ajustada com base no tamanho da imagem. Proporciona uma personalização visual para maior clareza.

Formatos de imagem e vídeo

YOLOv8 suporta vários formatos de imagem e vídeo, conforme especificado em ultralytics/data/utils .py. Vê as tabelas abaixo para os sufixos válidos e exemplos de comandos de previsão.

Imagens

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

Sufixos de imagem Exemplo de comando Prever Referência
.bmp yolo predict source=image.bmp Microsoft Formato de ficheiro BMP
.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 com v√°rias imagens
.png yolo predict source=image.png Gr√°ficos de rede port√°teis
.tif yolo predict source=image.tif Etiqueta Formato de ficheiro de imagem
.tiff yolo predict source=image.tiff Etiqueta Formato de ficheiro de imagem
.webp yolo predict source=image.webp WebP
.pfm yolo predict source=image.pfm Mapa de flutuação portátil

Vídeos

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

Sufixos de vídeo Exemplo de comando Prever Referência
.asf yolo predict source=video.asf Formato de sistemas avançados
.avi yolo predict source=video.avi Intercalação de áudio e vídeo
.gif yolo predict source=video.gif Formato de interc√Ęmbio de gr√°ficos
.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 Fluxo de transporte MPEG
.wmv yolo predict source=video.wmv Vídeo do Windows Media
.webm yolo predict source=video.webm Projeto WebM

Trabalhar com resultados

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

Resultados

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

Results têm os seguintes atributos:

Atributo Tipo Descrição
orig_img numpy.ndarray A imagem original como uma matriz 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 da deteção.
masks Masks, optional Um objeto Máscaras que contém as máscaras de deteção.
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 detectados para cada objeto.
obb OBB, optional Um objeto OBB que contém caixas delimitadoras orientadas.
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 de nomes de classes.
path str O caminho para o ficheiro de imagem.

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

Método Tipo de retorno Descrição
update() None Actualiza os atributos caixas, m√°scaras e probs do objeto Resultados.
cpu() Results Devolve uma cópia do objeto Results com todos os tensores na memória CPU .
numpy() Results Devolve uma cópia do objeto Results com todos os tensores como arrays numpy.
cuda() Results Devolve uma cópia do objeto Results com todos os tensores na memória GPU .
to() Results Devolve uma cópia do objeto Results com tensores no dispositivo e tipo d especificados.
new() Results Devolve um novo objeto Results com a mesma imagem, caminho e nomes.
plot() numpy.ndarray Plota os resultados da deteção. Devolve uma matriz numpy da imagem anotada.
show() None Mostra os resultados anotados no ecr√£.
save() None Guarda os resultados anotados num ficheiro.
verbose() str Devolve a cadeia de registo para cada tarefa.
save_txt() None Guarda as previs√Ķes num ficheiro txt.
save_crop() None Guarda as previs√Ķes cortadas em save_dir/cls/file_name.jpg.
tojson() str Converte o objeto para o formato JSON.

Para mais informa√ß√Ķes, consulta o Results documenta√ß√£o da classe.

Caixas

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

Caixas

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

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

Nome Tipo Descrição
cpu() Método Move o objeto para a memória CPU .
numpy() Método Converte o objeto em 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) 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 de classe das caixas.
id Propriedade (torch.Tensor) Devolve as IDs de faixa 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 normalizado pelo tamanho da imagem original.
xywhn Propriedade (torch.Tensor) Devolve as caixas no formato xywh normalizado pelo tamanho da imagem original.

Para mais informa√ß√Ķes, consulta o Boxes documenta√ß√£o da classe.

M√°scaras

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

M√°scaras

from ultralytics import YOLO

# Load a pretrained YOLOv8n-seg Segment model
model = YOLO("yolov8n-seg.pt")

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

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

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

Nome Tipo Descrição
cpu() Método Devolve as máscaras tensor na memória CPU .
numpy() Método Devolve as máscaras tensor como uma matriz numpy.
cuda() Método Devolve as máscaras tensor na memória GPU .
to() Método Devolve as máscaras tensor com o dispositivo e o 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 pixéis representados como tensores.

Para mais informa√ß√Ķes, consulta o Masks documenta√ß√£o da classe.

Pontos-chave

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

Pontos-chave

from ultralytics import YOLO

# Load a pretrained YOLOv8n-pose Pose model
model = YOLO("yolov8n-pose.pt")

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

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

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

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

Para mais informa√ß√Ķes, consulta o Keypoints documenta√ß√£o da classe.

Provas

Probs pode ser utilizado para indexar, obter top1 e top5 √≠ndices e pontua√ß√Ķes de classifica√ß√£o.

Provas

from ultralytics import YOLO

# Load a pretrained YOLOv8n-cls Classify model
model = YOLO("yolov8n-cls.pt")

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

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

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

Nome Tipo Descrição
cpu() Método Devolve uma cópia dos problemas tensor na memória CPU .
numpy() Método Devolve uma cópia do probs tensor como uma matriz numpy.
cuda() Método Devolve uma cópia dos problemas tensor na memória GPU .
to() Método Devolve uma cópia do probs tensor com o dispositivo e o dtype especificados.
top1 Propriedade (int) √ćndice da classe 1 superior.
top5 Propriedade (list[int]) √ćndices das 5 primeiras classes.
top1conf Propriedade (torch.Tensor) Confiança na classe 1.
top5conf Propriedade (torch.Tensor) Confidências das 5 primeiras classes.

Para mais informa√ß√Ķes, consulta o Probs documenta√ß√£o da classe.

OBB

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

OBB

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n-obb.pt")

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

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

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

Nome Tipo Descrição
cpu() Método Move o objeto para a memória CPU .
numpy() Método Converte o objeto em 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) Devolve os valores de confiança das caixas.
cls Propriedade (torch.Tensor) Devolve os valores de classe das caixas.
id Propriedade (torch.Tensor) Devolve as IDs de faixa 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 normalizado pelo tamanho da imagem.

Para mais informa√ß√Ķes, consulta o OBB documenta√ß√£o da classe.

Traçar resultados

O plot() m√©todo em Results facilita a visualiza√ß√£o das previs√Ķes ao sobrepor objectos detectados (como caixas delimitadoras, m√°scaras, pontos-chave e probabilidades) √† imagem original. Este m√©todo devolve a imagem anotada como uma matriz NumPy, permitindo uma f√°cil visualiza√ß√£o ou grava√ß√£o.

Traçar

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

# Run inference on 'bus.jpg'
results = model(["bus.jpg", "zidane.jpg"])  # results list

# Visualize the results
for i, r in enumerate(results):
    # Plot results image
    im_bgr = r.plot()  # BGR-order numpy array
    im_rgb = Image.fromarray(im_bgr[..., ::-1])  # RGB-order PIL image

    # Show results to screen (in supported environments)
    r.show()

    # Save results to disk
    r.save(filename=f"results{i}.jpg")

plot() Par√Ęmetros do m√©todo

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

Argumenta Tipo Descrição Predefinição
conf bool Inclui as pontua√ß√Ķes de confian√ßa da dete√ß√£o. True
line_width float Largura da linha das caixas delimitadoras. Escala com o tamanho da imagem se None. None
font_size float Tamanho do tipo de letra do texto. Escala com o tamanho da imagem se None. None
font str Nome do tipo de letra para anota√ß√Ķes de texto. 'Arial.ttf'
pil bool Devolve a imagem como um objeto PIL Image. False
img numpy.ndarray Usa a imagem original se a imagem original for usada. Usa a imagem original se None. None
im_gpu torch.Tensor GPU-Acelera a imagem para uma plotagem mais r√°pida da m√°scara. Forma: (1, 3, 640, 640). None
kpt_radius int Raio para os pontos-chave desenhados. 5
kpt_line bool Liga os pontos-chave com linhas. True
labels bool Inclui etiquetas de classe nas anota√ß√Ķes. True
boxes bool Sobrep√Ķe caixas delimitadoras na imagem. True
masks bool Sobrep√Ķe m√°scaras na imagem. True
probs bool Inclui as probabilidades de classificação. True
show bool Apresenta a imagem anotada diretamente utilizando o visualizador de imagens predefinido. False
save bool Guarda a imagem anotada num ficheiro especificado por filename. False
filename str Caminho e nome do ficheiro para guardar a imagem anotada, se save é True. None

Inferência segura de threads

Garantir a seguran√ßa do thread durante a infer√™ncia √© crucial quando est√°s a executar v√°rios modelos YOLO em paralelo em diferentes threads. A infer√™ncia thread-safe garante que as previs√Ķes de cada thread s√£o isoladas e n√£o interferem umas com as outras, evitando condi√ß√Ķes de corrida e garantindo resultados consistentes e fi√°veis.

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

Inferência segura de threads

Instancia um √ļnico modelo dentro de cada thread para infer√™ncia thread-safe:

from threading import Thread

from ultralytics import YOLO


def thread_safe_predict(image_path):
    """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
    local_model = YOLO("yolov8n.pt")
    results = local_model.predict(image_path)
    # Process results


# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("image1.jpg",)).start()
Thread(target=thread_safe_predict, args=("image2.jpg",)).start()

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

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

Aqui tens um script Python que utiliza o OpenCV (cv2) e YOLOv8 para executar a inferência em quadros de vídeo. Este script assume que já instalaste os pacotes necessários (opencv-python e ultralytics).

Fluxo para o loop

import cv2

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.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 YOLOv8 inference on the frame
        results = model(frame)

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

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

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

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

Este script executa previs√Ķes em cada fotograma do v√≠deo, visualiza os resultados e apresenta-os numa janela. O ciclo pode ser encerrado premindo 'q'.

FAQ

O que é Ultralytics YOLOv8 e o seu modo de previsão para inferência em tempo real?

Ultralytics YOLOv8 √© um modelo topo de gama para dete√ß√£o, segmenta√ß√£o e classifica√ß√£o de objectos em tempo real. O seu modo de previs√£o permite aos utilizadores realizar infer√™ncias a alta velocidade em v√°rias fontes de dados, como imagens, v√≠deos e transmiss√Ķes em direto. Concebido para desempenho e versatilidade, tamb√©m oferece modos de processamento em lote e de transmiss√£o. Para mais pormenores sobre as suas caracter√≠sticas, consulta Ultralytics YOLOv8 predict mode.

Como é que posso fazer inferência utilizando Ultralytics YOLOv8 em diferentes fontes de dados?

Ultralytics YOLOv8 pode processar uma vasta gama de fontes de dados, incluindo imagens individuais, vídeos, directórios, URLs e fluxos. Podes especificar a fonte de dados no campo model.predict() chama. Por exemplo, utiliza 'image.jpg' para uma imagem local ou 'https://ultralytics.com/images/bus.jpg' para um URL. Vê os exemplos detalhados de vários fontes de inferência na documentação.

Como posso otimizar a velocidade de inferência de YOLOv8 e a utilização da memória?

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

Que argumentos de inferência apoia Ultralytics YOLOv8 ?

O model.predict() em YOLOv8 suporta v√°rios argumentos, tais como conf, iou, imgsz, devicee mais. Estes argumentos permitem-te personalizar o processo de infer√™ncia, definindo par√Ęmetros como limiares de confian√ßa, tamanho da imagem e o dispositivo utilizado para o c√°lculo. Podes encontrar descri√ß√Ķes detalhadas destes argumentos na sec√ß√£o argumentos de infer√™ncia sec√ß√£o.

Como √© que posso visualizar e guardar os resultados das previs√Ķes de YOLOv8 ?

Depois de executares a inferência com YOLOv8, o Results contêm métodos para apresentar e guardar imagens anotadas. Podes utilizar métodos como result.show() e result.save(filename="result.jpg") para visualizar e guardar os resultados. Para obter uma lista completa desses métodos, consulta a trabalhar com resultados secção.



Criado em 2023-11-12, Atualizado em 2024-07-04
Autores: glenn-jocher (24), IvorZhu331 (1), RizwanMunawar (1), UltralyticsAssistant (1), Burhan-Q (1), plashchynski (1), tensorturtle (1), AyushExel (1), Laughing-q (1)

Coment√°rios