Saltar al contenido

Modelo de predicci贸n con Ultralytics YOLO

Ultralytics YOLO ecosistema e integraciones

Introducci贸n

En el mundo del aprendizaje autom谩tico y la visi贸n por ordenador, el proceso de dar sentido a los datos visuales se denomina "inferencia" o "predicci贸n". Ultralytics YOLOv8 ofrece una potente funci贸n conocida como modo de predicci贸n, que est谩 dise帽ada para realizar inferencias de alto rendimiento y en tiempo real sobre una amplia gama de fuentes de datos.



Observa: C贸mo extraer los resultados del modelo Ultralytics YOLOv8 para proyectos personalizados.

Aplicaciones en el mundo real

Fabricaci贸n Deportes Seguridad
Detecci贸n de recambios de veh铆culos Detecci贸n de jugadores de f煤tbol Detecci贸n de ca铆das de personas
Detecci贸n de recambios de veh铆culos Detecci贸n de jugadores de f煤tbol Detecci贸n de ca铆das de personas

驴Por qu茅 utilizar Ultralytics YOLO para la inferencia?

He aqu铆 por qu茅 deber铆as considerar el modo de predicci贸n de YOLOv8 para tus diversas necesidades de inferencia:

  • Versatilidad: Capaz de hacer inferencias sobre im谩genes, v铆deos e incluso transmisiones en directo.
  • Rendimiento: Dise帽ado para el procesamiento en tiempo real a alta velocidad sin sacrificar la precisi贸n.
  • Facilidad de uso: interfaces intuitivas Python y CLI para una r谩pida implantaci贸n y pruebas.
  • Altamente personalizable: Varios ajustes y par谩metros para ajustar el comportamiento de inferencia del modelo seg煤n tus requisitos espec铆ficos.

Caracter铆sticas principales del modo Predecir

YOLOv8est谩 dise帽ado para ser robusto y vers谩til:

  • Compatibilidad con m煤ltiples fuentes de datos: Tanto si tus datos est谩n en forma de im谩genes individuales, una colecci贸n de im谩genes, archivos de v铆deo o flujos de v铆deo en tiempo real, el modo Predecir te tiene cubierto.
  • Modo Streaming: Utiliza la funci贸n de streaming para generar un generador de memoria eficiente de Results objetos. Act铆valo configurando stream=True en el m茅todo de llamada del predictor.
  • Procesamiento por lotes: La capacidad de procesar varias im谩genes o fotogramas de v铆deo en un solo lote, lo que acelera a煤n m谩s el tiempo de inferencia.
  • F谩cil de integrar: se integra f谩cilmente con las canalizaciones de datos existentes y otros componentes de software, gracias a su flexible API.

Ultralytics YOLO devuelven una lista Python de Results o un generador de objetos Python de memoria eficiente. Results objetos cuando stream=True se pasa al modelo durante la inferencia:

Predecir

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
    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
    result.show()  # display to screen
    result.save(filename='result.jpg')  # save to disk

Fuentes de inferencia

YOLOv8 puede procesar distintos tipos de fuentes de entrada para la inferencia, como se muestra en la tabla siguiente. Las fuentes incluyen im谩genes est谩ticas, secuencias de v铆deo y diversos formatos de datos. La tabla tambi茅n indica si cada fuente puede utilizarse en modo streaming con el argumento stream=True 鉁. El modo Streaming es beneficioso para procesar v铆deos o transmisiones en directo, ya que crea un generador de resultados en lugar de cargar todos los fotogramas en la memoria.

Consejo

Utiliza stream=True para procesar v铆deos largos o grandes conjuntos de datos, con el fin de gestionar eficazmente la memoria. Cuando stream=Falselos resultados de todos los fotogramas o puntos de datos se almacenan en memoria, lo que puede sumarse r谩pidamente y provocar errores de falta de memoria para entradas grandes. Por el contrario, stream=True utiliza un generador, que s贸lo mantiene en memoria los resultados del fotograma o punto de datos actual, reduciendo significativamente el consumo de memoria y evitando problemas de falta de memoria.

Fuente Argumento Tipo Notas
imagen 'image.jpg' str o Path Un solo archivo de imagen.
URL 'https://ultralytics.com/images/bus.jpg' str URL de una imagen.
captura de pantalla 'screen' str Haz una captura de pantalla.
PIL Image.open('im.jpg') PIL.Image Formato HWC con canales RGB.
OpenCV cv2.imread('im.jpg') np.ndarray Formato HWC con canales BGR uint8 (0-255).
numpy np.zeros((640,1280,3)) np.ndarray Formato HWC con canales BGR uint8 (0-255).
torch torch.zeros(16,3,320,640) torch.Tensor Formato BCHW con canales RGB float32 (0.0-1.0).
CSV 'sources.csv' str o Path Archivo CSV que contiene rutas a im谩genes, v铆deos o directorios.
v铆deo 鉁 'video.mp4' str o Path Archivo de v铆deo en formatos como MP4, AVI, etc.
directorio 鉁 'path/' str o Path Ruta a un directorio que contenga im谩genes o v铆deos.
glob 鉁 'path/*.jpg' str Patr贸n glob para que coincida con varios archivos. Utiliza el patr贸n * como comod铆n.
YouTube 鉁 'https://youtu.be/LNwODJXcvt4' str URL a un v铆deo de YouTube.
flujo 鉁 'rtsp://example.com/media.mp4' str URL para protocolos de streaming como RTSP, RTMP, TCP, o una direcci贸n IP.
multiflujo 鉁 'list.streams' str o Path *.streams archivo de texto con una URL de flujo por fila, es decir, 8 flujos se ejecutar谩n con un tama帽o de lote 8.

A continuaci贸n encontrar谩s ejemplos de c贸digo para utilizar cada tipo de fuente:

Fuentes de predicci贸n

Ejecuta la inferencia en un archivo de imagen.

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

Ejecuta la inferencia sobre el contenido de la pantalla actual como una captura de pantalla.

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

Ejecuta la inferencia en una imagen o v铆deo alojado a distancia mediante una 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

Ejecuta la inferencia en una imagen abierta con Python Biblioteca de Im谩genes (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

Ejecuta la inferencia sobre una imagen le铆da con 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

Ejecuta la inferencia sobre una imagen representada como una 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

Ejecuta la inferencia sobre una imagen 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

Ejecuta la inferencia sobre una colecci贸n de im谩genes, URLs, v铆deos y directorios listados en un archivo CSV.

import torch
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

Ejecuta la inferencia en un archivo de v铆deo. Utilizando stream=Truepuedes crear un generador de objetos Resultados para reducir el uso de memoria.

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

Ejecuta la inferencia en todas las im谩genes y v铆deos de un directorio. Para capturar tambi茅n im谩genes y v铆deos en subdirectorios, utiliza un patr贸n glob, es decir 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

Ejecuta la inferencia en todas las im谩genes y v铆deos que coincidan con una expresi贸n glob con * 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

Ejecuta la inferencia en un v铆deo de YouTube. Utilizando stream=Truepuedes crear un generador de objetos Resultados para reducir el uso de memoria en los v铆deos largos.

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

Ejecuta la inferencia en fuentes de streaming remotas utilizando protocolos RTSP, RTMP, TCP y direcciones IP. Si se proporcionan varios flujos en un *.streams entonces se ejecutar谩 la inferencia por lotes, es decir, se ejecutar谩n 8 secuencias con un tama帽o de lote de 8, de lo contrario se ejecutar谩n secuencias individuales con un tama帽o de lote de 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 inferencia

model.predict() acepta m煤ltiples argumentos que pueden pasarse en el momento de la inferencia para anular los valores por defecto:

Ejemplo

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 inferencia:

Argumento Tipo Por defecto Descripci贸n
source str 'ultralytics/assets' Especifica la fuente de datos para la inferencia. Puede ser una ruta de imagen, un archivo de v铆deo, un directorio, una URL o el ID de un dispositivo para transmisiones en directo. Admite una amplia gama de formatos y fuentes, lo que permite una aplicaci贸n flexible en distintos tipos de entrada.
conf float 0.25 Establece el umbral m铆nimo de confianza para las detecciones. Los objetos detectados con una confianza inferior a este umbral ser谩n descartados. Ajustar este valor puede ayudar a reducir los falsos positivos.
iou float 0.7 Umbral de Intersecci贸n sobre Uni贸n (IoU) para la Supresi贸n No M谩xima (NMS). Los valores m谩s altos dan lugar a menos detecciones al eliminar las cajas superpuestas, lo que resulta 煤til para reducir los duplicados.
imgsz int or tuple 640 Define el tama帽o de la imagen para la inferencia. Puede ser un 煤nico n煤mero entero 640 para un redimensionamiento cuadrado o una tupla (alto, ancho). Un tama帽o adecuado puede mejorar la precisi贸n de la detecci贸n y la velocidad de procesamiento.
half bool False Permite la inferencia de media precisi贸n (FP16), que puede acelerar la inferencia del modelo en las GPU compatibles con un impacto m铆nimo en la precisi贸n.
device str None Especifica el dispositivo para la inferencia (por ejemplo, cpu, cuda:0 o 0). Permite a los usuarios seleccionar entre la CPU, una GPU espec铆fica u otros dispositivos de c谩lculo para la ejecuci贸n del modelo.
max_det int 300 N煤mero m谩ximo de detecciones permitidas por imagen. Limita el n煤mero total de objetos que el modelo puede detectar en una sola inferencia, evitando salidas excesivas en escenas densas.
vid_stride int 1 Salto de fotogramas para entradas de v铆deo. Permite saltar fotogramas en los v铆deos para acelerar el procesamiento a costa de la resoluci贸n temporal. Un valor de 1 procesa cada fotograma, valores superiores omiten fotogramas.
stream_buffer bool False Determina si todos los fotogramas deben almacenarse en la memoria intermedia al procesar secuencias de v铆deo (True), o si el modelo debe devolver el fotograma m谩s reciente (False). 脷til para aplicaciones en tiempo real.
visualize bool False Activa la visualizaci贸n de las caracter铆sticas del modelo durante la inferencia, proporcionando informaci贸n sobre lo que el modelo est谩 "viendo". 脷til para la depuraci贸n y la interpretaci贸n del modelo.
augment bool False Permite el aumento del tiempo de prueba (TTA) para las predicciones, mejorando potencialmente la robustez de la detecci贸n a costa de la velocidad de inferencia.
agnostic_nms bool False Activa la Supresi贸n No M谩xima (NMS) agn贸stica de clases, que fusiona las cajas superpuestas de clases diferentes. 脷til en escenarios de detecci贸n multiclase en los que el solapamiento de clases es habitual.
classes list[int] None Filtra las predicciones a un conjunto de ID de clase. S贸lo se devolver谩n las detecciones que pertenezcan a las clases especificadas. 脷til para centrarse en objetos relevantes en tareas de detecci贸n multiclase.
retina_masks bool False Utiliza m谩scaras de segmentaci贸n de alta resoluci贸n si est谩n disponibles en el modelo. Esto puede mejorar la calidad de la m谩scara para las tareas de segmentaci贸n, proporcionando detalles m谩s finos.
embed list[int] None Especifica las capas de las que extraer vectores de caracter铆sticas o incrustaciones. 脷til para tareas posteriores como la agrupaci贸n o la b煤squeda de similitudes.

Argumentos de visualizaci贸n:

Argumento Tipo Por defecto Descripci贸n
show bool False Si Truemuestra las im谩genes o v铆deos anotados en una ventana. Resulta 煤til para obtener informaci贸n visual inmediata durante el desarrollo o las pruebas.
save bool False Permite guardar las im谩genes o v铆deos anotados en un archivo. 脷til para documentaci贸n, an谩lisis posteriores o para compartir resultados.
save_frames bool False Al procesar v铆deos, guarda fotogramas individuales como im谩genes. Es 煤til para extraer fotogramas concretos o para un an谩lisis detallado fotograma a fotograma.
save_txt bool False Guarda los resultados de la detecci贸n en un archivo de texto, siguiendo el formato [class] [x_center] [y_center] [width] [height] [confidence]. 脷til para la integraci贸n con otras herramientas de an谩lisis.
save_conf bool False Incluye puntuaciones de confianza en los archivos de texto guardados. Aumenta el detalle disponible para el postprocesado y el an谩lisis.
save_crop bool False Guarda im谩genes recortadas de las detecciones. 脷til para aumentar el conjunto de datos, analizarlos o crear conjuntos de datos centrados en objetos concretos.
show_labels bool True Muestra etiquetas para cada detecci贸n en la salida visual. Proporciona una comprensi贸n inmediata de los objetos detectados.
show_conf bool True Muestra la puntuaci贸n de confianza de cada detecci贸n junto a la etiqueta. Da una idea de la certeza del modelo para cada detecci贸n.
show_boxes bool True Dibuja recuadros delimitadores alrededor de los objetos detectados. Esencial para la identificaci贸n visual y la localizaci贸n de objetos en im谩genes o fotogramas de v铆deo.
line_width None or int None Especifica la anchura de l铆nea de los cuadros delimitadores. Si NoneEl ancho de l铆nea se ajusta autom谩ticamente en funci贸n del tama帽o de la imagen. Proporciona personalizaci贸n visual para mayor claridad.

Formatos de imagen y v铆deo

YOLOv8 admite varios formatos de imagen y v铆deo, como se especifica en ultralytics/data/utils .py. Consulta las tablas siguientes para ver los sufijos v谩lidos y los comandos predict de ejemplo.

Im谩genes

La siguiente tabla contiene los formatos de imagen v谩lidos de Ultralytics .

Sufijos de imagen Ejemplo de orden Predecir Referencia
.bmp yolo predict source=image.bmp Formato de archivo BMP de Microsoft
.dng yolo predict source=image.dng Adobe DNG
.jpeg yolo predict source=image.jpeg JPEG
.jpg yolo predict source=image.jpg JPEG
.mpo yolo predict source=image.mpo Objeto Multiimagen
.png yolo predict source=image.png Gr谩ficos de red port谩tiles
.tif yolo predict source=image.tif Etiqueta Formato de archivo de imagen
.tiff yolo predict source=image.tiff Etiqueta Formato de archivo de imagen
.webp yolo predict source=image.webp WebP
.pfm yolo predict source=image.pfm FloatMap port谩til

V铆deos

La siguiente tabla contiene los formatos de v铆deo v谩lidos de Ultralytics .

Sufijos de v铆deo Ejemplo de orden Predecir Referencia
.asf yolo predict source=video.asf Formato de sistemas avanzados
.avi yolo predict source=video.avi Intercalaci贸n de audio y v铆deo
.gif yolo predict source=video.gif Formato de intercambio 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 archivo QuickTime
.mp4 yolo predict source=video.mp4 MPEG-4 Parte 14 - Wikipedia
.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 Flujo de transporte MPEG
.wmv yolo predict source=video.wmv V铆deo de Windows Media
.webm yolo predict source=video.webm Proyecto WebM

Trabajar con resultados

Todos Ultralytics predict() devolver谩 una lista de Results objetos:

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 tienen los siguientes atributos:

Atributo Tipo Descripci贸n
orig_img numpy.ndarray La imagen original como matriz numpy.
orig_shape tuple La forma de la imagen original en formato (alto, ancho).
boxes Boxes, optional Un objeto Cajas que contiene las cajas delimitadoras de la detecci贸n.
masks Masks, optional Un objeto M谩scaras que contiene las m谩scaras de detecci贸n.
probs Probs, optional Un objeto Probs que contiene las probabilidades de cada clase para la tarea de clasificaci贸n.
keypoints Keypoints, optional Un objeto Puntos clave que contiene los puntos clave detectados para cada objeto.
obb OBB, optional Un objeto OBB que contiene cuadros delimitadores orientados.
speed dict Un diccionario de velocidades de preproceso, inferencia y postproceso en milisegundos por imagen.
names dict Un diccionario de nombres de clases.
path str La ruta al archivo de imagen.

Results tienen los siguientes m茅todos:

M茅todo Tipo de devoluci贸n Descripci贸n
update() None Actualiza los atributos casillas, m谩scaras y probs del objeto Resultados.
cpu() Results Devuelve una copia del objeto Resultados con todos los tensores en la memoria de la CPU.
numpy() Results Devuelve una copia del objeto Resultados con todos los tensores como matrices numpy.
cuda() Results Devuelve una copia del objeto Resultados con todos los tensores en la memoria de la GPU.
to() Results Devuelve una copia del objeto Resultados con tensores en el dispositivo y dtype especificados.
new() Results Devuelve un nuevo objeto Resultados con la misma imagen, ruta y nombres.
plot() numpy.ndarray Traza los resultados de la detecci贸n. Devuelve una matriz numpy de la imagen anotada.
show() None Mostrar resultados anotados en pantalla.
save() None Guarda los resultados anotados en un archivo.
verbose() str Devuelve la cadena de registro de cada tarea.
save_txt() None Guarda las predicciones en un archivo txt.
save_crop() None Guardar predicciones recortadas en save_dir/cls/file_name.jpg.
tojson() str Convierte el objeto a formato JSON.

Para m谩s detalles, consulta Results documentaci贸n de clase.

Cajas

Boxes puede utilizarse para indexar, manipular y convertir cuadros delimitadores a distintos formatos.

Cajas

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

Aqu铆 tienes una tabla para la Boxes m茅todos y propiedades de la clase, incluyendo su nombre, tipo y descripci贸n:

Nombre Tipo Descripci贸n
cpu() M茅todo Mueve el objeto a la memoria de la CPU.
numpy() M茅todo Convierte el objeto en una matriz numpy.
cuda() M茅todo Mueve el objeto a la memoria CUDA.
to() M茅todo Mueve el objeto al dispositivo especificado.
xyxy Propiedad (torch.Tensor) Devuelve las casillas en formato xyxy.
conf Propiedad (torch.Tensor) Devuelve los valores de confianza de las casillas.
cls Propiedad (torch.Tensor) Devuelve los valores de clase de las cajas.
id Propiedad (torch.Tensor) Devuelve los ID de pista de las cajas (si est谩n disponibles).
xywh Propiedad (torch.Tensor) Devuelve las cajas en formato xywh.
xyxyn Propiedad (torch.Tensor) Devuelve las cajas en formato xyxy normalizadas por el tama帽o original de la imagen.
xywhn Propiedad (torch.Tensor) Devuelve las cajas en formato xywh normalizadas por tama帽o de imagen original.

Para m谩s detalles, consulta Boxes documentaci贸n de clase.

M谩scaras

Masks se puede utilizar para indexar, manipular y convertir m谩scaras en 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

Aqu铆 tienes una tabla para la Masks m茅todos y propiedades de la clase, incluyendo su nombre, tipo y descripci贸n:

Nombre Tipo Descripci贸n
cpu() M茅todo Devuelve las m谩scaras tensor en la memoria de la CPU.
numpy() M茅todo Devuelve las m谩scaras tensor como una matriz numpy.
cuda() M茅todo Devuelve las m谩scaras tensor en la memoria de la GPU.
to() M茅todo Devuelve las m谩scaras tensor con el dispositivo y dtype especificados.
xyn Propiedad (torch.Tensor) Una lista de segmentos normalizados representados como tensores.
xy Propiedad (torch.Tensor) Una lista de segmentos en coordenadas de p铆xel representados como tensores.

Para m谩s detalles, consulta Masks documentaci贸n de clase.

Puntos clave

Keypoints se puede utilizar para indexar, manipular y normalizar coordenadas.

Puntos clave

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

Aqu铆 tienes una tabla para la Keypoints m茅todos y propiedades de la clase, incluyendo su nombre, tipo y descripci贸n:

Nombre Tipo Descripci贸n
cpu() M茅todo Devuelve los puntos clave tensor en la memoria de la CPU.
numpy() M茅todo Devuelve los puntos clave tensor como una matriz numpy.
cuda() M茅todo Devuelve los puntos clave tensor en la memoria de la GPU.
to() M茅todo Devuelve los puntos clave tensor con el dispositivo y dtype especificados.
xyn Propiedad (torch.Tensor) Una lista de puntos clave normalizados representados como tensores.
xy Propiedad (torch.Tensor) Una lista de puntos clave en coordenadas de p铆xel representados como tensores.
conf Propiedad (torch.Tensor) Devuelve los valores de confianza de los puntos clave si est谩n disponibles, en caso contrario Ninguno.

Para m谩s detalles, consulta Keypoints documentaci贸n de clase.

Probs

Probs se puede utilizar indexar, obtener top1 y top5 铆ndices y puntuaciones de clasificaci贸n.

Probs

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

Aqu铆 tienes una tabla que resume los m茅todos y propiedades de la funci贸n Probs clase:

Nombre Tipo Descripci贸n
cpu() M茅todo Devuelve una copia de los probs tensor en la memoria de la CPU.
numpy() M茅todo Devuelve una copia de las probs tensor como matriz numpy.
cuda() M茅todo Devuelve una copia de los probs tensor en la memoria de la GPU.
to() M茅todo Devuelve una copia de los probs tensor con el dispositivo y dtype especificados.
top1 Propiedad (int) 脥ndice de la clase 1 superior.
top5 Propiedad (list[int]) 脥ndices de las 5 clases principales.
top1conf Propiedad (torch.Tensor) Confianza de la clase 1 superior.
top5conf Propiedad (torch.Tensor) Confidencias de las 5 primeras clases.

Para m谩s detalles, consulta Probs documentaci贸n de clase.

OBB

OBB puede utilizarse para indexar, manipular y convertir cuadros delimitadores orientados a distintos 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

Aqu铆 tienes una tabla para la OBB m茅todos y propiedades de la clase, incluyendo su nombre, tipo y descripci贸n:

Nombre Tipo Descripci贸n
cpu() M茅todo Mueve el objeto a la memoria de la CPU.
numpy() M茅todo Convierte el objeto en una matriz numpy.
cuda() M茅todo Mueve el objeto a la memoria CUDA.
to() M茅todo Mueve el objeto al dispositivo especificado.
conf Propiedad (torch.Tensor) Devuelve los valores de confianza de las casillas.
cls Propiedad (torch.Tensor) Devuelve los valores de clase de las cajas.
id Propiedad (torch.Tensor) Devuelve los ID de pista de las cajas (si est谩n disponibles).
xyxy Propiedad (torch.Tensor) Devuelve las cajas horizontales en formato xyxy.
xywhr Propiedad (torch.Tensor) Devuelve las cajas giradas en formato xywhr.
xyxyxyxy Propiedad (torch.Tensor) Devuelve las cajas rotadas en formato xyxyxyxy.
xyxyxyxyn Propiedad (torch.Tensor) Devuelve las cajas rotadas en formato xyxyxyxy normalizadas por el tama帽o de la imagen.

Para m谩s detalles, consulta OBB documentaci贸n de clase.

Trazar resultados

En plot() m茅todo en Results facilita la visualizaci贸n de las predicciones superponiendo los objetos detectados (como cuadros delimitadores, m谩scaras, puntos clave y probabilidades) sobre la imagen original. Este m茅todo devuelve la imagen anotada como una matriz NumPy, lo que permite visualizarla o guardarla f谩cilmente.

Trazando

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_array[..., ::-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 del m茅todo

En plot() admite varios argumentos para personalizar la salida:

Argumento Tipo Descripci贸n Por defecto
conf bool Incluye puntuaciones de confianza en la detecci贸n. True
line_width float Anchura de l铆nea de los cuadros delimitadores. Se ajusta al tama帽o de la imagen si None. None
font_size float Tama帽o de la fuente del texto. Se adapta al tama帽o de la imagen si None. None
font str Nombre de la fuente para las anotaciones de texto. 'Arial.ttf'
pil bool Devuelve la imagen como un objeto PIL Imagen. False
img numpy.ndarray Imagen alternativa para el trazado. Utiliza la imagen original si None. None
im_gpu torch.Tensor Imagen acelerada en la GPU para un trazado m谩s r谩pido de la m谩scara. Forma: (1, 3, 640, 640). None
kpt_radius int Radio de los puntos clave dibujados. 5
kpt_line bool Conecta los puntos clave con l铆neas. True
labels bool Incluye etiquetas de clase en las anotaciones. True
boxes bool Superponer cuadros delimitadores en la imagen. True
masks bool Superponer m谩scaras en la imagen. True
probs bool Incluye las probabilidades de clasificaci贸n. True
show bool Muestra directamente la imagen anotada utilizando el visor de im谩genes predeterminado. False
save bool Guarda la imagen anotada en un archivo especificado por filename. False
filename str Ruta y nombre del archivo para guardar la imagen anotada si save es True. None

Inferencia segura de hilos

Garantizar la seguridad de los hilos durante la inferencia es crucial cuando ejecutas varios modelos YOLO en paralelo a trav茅s de distintos hilos. La inferencia a prueba de hilos garantiza que las predicciones de cada hilo est茅n aisladas y no interfieran entre s铆, evitando condiciones de carrera y asegurando resultados coherentes y fiables.

Cuando utilices modelos YOLO en una aplicaci贸n multihilo, es importante instanciar objetos modelo distintos para cada hilo o emplear almacenamiento local de hilos para evitar conflictos:

Inferencia segura de hilos

Instanciar un 煤nico modelo dentro de cada hilo para una inferencia a prueba de hilos:

from ultralytics import YOLO
from threading import Thread

def thread_safe_predict(image_path):
    # Instantiate a new model inside the thread
    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 una visi贸n en profundidad de la inferencia a prueba de hilos con los modelos YOLO e instrucciones paso a paso, consulta nuestra Gu铆a de inferencia a prueba de hilosYOLO . Esta gu铆a te proporcionar谩 toda la informaci贸n necesaria para evitar errores comunes y garantizar que tu inferencia multihilo se ejecute sin problemas.

Fuente de streaming for-bucle

Aqu铆 tienes un script Python que utiliza OpenCV (cv2) y YOLOv8 para ejecutar la inferencia sobre fotogramas de v铆deo. Este script supone que ya tienes instalados los paquetes necesarios (opencv-python y ultralytics).

Flujo for-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 ejecutar谩 predicciones en cada fotograma del v铆deo, visualizar谩 los resultados y los mostrar谩 en una ventana. Se puede salir del bucle pulsando "q".



Creado 2023-11-12, Actualizado 2024-02-13
Autores: glenn-jocher (15), tensorturtle (1), AyushExel (1), Laughing-q (1)

Comentarios