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 YOLO11 ofrece una potente función conocida como modo de predicción, 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 YOLO para proyectos personalizados.

Aplicaciones en el mundo real

FabricaciónDeportesSeguridad
Detección de recambios de vehículosDetección de jugadores de fútbolDetección de caídas de personas
Detección de recambios de vehículosDetección de jugadores de fútbolDetecció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 YOLO11 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

El modo de predicción de YOLO11 está diseñado para ser robusto y versátil, y cuenta con:

  • 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 de memoria eficiente Python Results objetos cuando stream=True se pasa al modelo durante la inferencia:

Predecir

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n model

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk
from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n model

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"], stream=True)  # return a generator of Results objects

# Process results generator
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk

Fuentes de inferencia

YOLO11 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.

FuenteEjemploTipoNotas
imagen'image.jpg'str o PathUn solo archivo de imagen.
URL'https://ultralytics.com/images/bus.jpg'strURL de una imagen.
captura de pantalla'screen'strHaz una captura de pantalla.
PILImage.open('image.jpg')PIL.ImageFormato HWC con canales RGB.
OpenCVcv2.imread('image.jpg')np.ndarrayFormato HWC con canales BGR uint8 (0-255).
numpynp.zeros((640,1280,3))np.ndarrayFormato HWC con canales BGR uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorFormato BCHW con canales RGB float32 (0.0-1.0).
CSV'sources.csv'str o PathArchivo CSV que contiene rutas a imágenes, vídeos o directorios.
vídeo ✅'video.mp4'str o PathArchivo de vídeo en formatos como MP4, AVI, etc.
directorio ✅'path/'str o PathRuta a un directorio que contenga imágenes o vídeos.
glob ✅'path/*.jpg'strPatrón glob para que coincida con varios archivos. Utiliza el patrón * como comodín.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL a un vídeo de YouTube.
flujo ✅'rtsp://example.com/media.mp4'strURL 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.
webcam ✅0intÍndice del dispositivo de cámara conectado sobre el que ejecutar la inferencia.

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 YOLO11n model
model = YOLO("yolo11n.pt")

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

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

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

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define current screenshot as source
source = "screen"

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

Ejecuta la inferencia en una imagen o vídeo alojado a distancia mediante una URL.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

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

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

Ejecuta la inferencia sobre una imagen leída con OpenCV.

import cv2

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

Ejecuta la inferencia sobre una imagen representada como una matriz numpy.

import numpy as np

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")

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

Ejecutar la inferencia sobre una imagen representada como PyTorch tensor.

import torch

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

Ejecuta la inferencia sobre una colección de imágenes, URLs, vídeos y directorios listados en un archivo CSV.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

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

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

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

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

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

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

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"

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

Utiliza el modo de flujo para ejecutar la inferencia en flujos de vídeo en directo utilizando protocolos RTSP, RTMP, TCP o direcciones IP. Si se proporciona un único flujo, el modelo ejecuta la inferencia con un tamaño del lote de 1. Para flujos múltiples, a .streams puede utilizarse para realizar inferencias por lotes, en las que el tamaño del lote viene determinado por el número de flujos proporcionados (por ejemplo, tamaño de lote 8 para 8 flujos).

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

Para el uso de un único flujo, el tamaño del lote se establece en 1 por defecto, lo que permite un procesamiento eficiente en tiempo real de la señal de vídeo.

Para manejar varios flujos de vídeo simultáneamente, utiliza un .streams archivo de texto que contiene las fuentes de flujo. El modelo ejecutará la inferencia por lotes, donde el tamaño del lote es igual al número de flujos. Esta configuración permite un procesamiento eficaz de múltiples fuentes simultáneamente.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

Ejemplo .streams archivo de texto:

rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...

Cada fila del archivo representa una fuente de flujo, lo que te permite controlar y realizar inferencias sobre varios flujos de vídeo a la vez.

Puedes ejecutar la inferencia en un dispositivo de cámara conectado pasando el índice de esa cámara concreta a source.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

Argumentos de 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 YOLO11n model
model = YOLO("yolo11n.pt")

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

Argumentos de inferencia:

ArgumentoTipoPor defectoDescripción
sourcestr'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.
conffloat0.25Establece 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.
ioufloat0.7Umbral de Intersección Sobre Unión (IoU) para la Supresión No Máxima (NMS). Los valores más bajos dan lugar a menos detecciones al eliminar las cajas superpuestas, lo que resulta útil para reducir los duplicados.
imgszint or tuple640Define el tamaño de la imagen para la inferencia. Puede ser un único número entero 640 para un cambio de tamaño cuadrado o una tupla (alto, ancho). Un tamaño adecuado puede mejorar la detección precisión y la velocidad de procesamiento.
halfboolFalsePermite 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.
devicestrNoneEspecifica el dispositivo para la inferencia (por ejemplo, cpu, cuda:0 o 0). Permite a los usuarios seleccionar entre CPU, un GPU específico u otros dispositivos de cálculo para la ejecución del modelo.
max_detint300Nú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_strideint1Salto 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_bufferboolFalseDetermina si se ponen en cola los fotogramas entrantes para las secuencias de vídeo. Si FalseSi es `Verdadero', los fotogramas antiguos se omiten para dar cabida a los nuevos (optimizado para aplicaciones en tiempo real). Si es `Verdadero', pone en cola los fotogramas nuevos en un búfer, asegurando que no se salte ningún fotograma, pero causará latencia si los FPS de la inferencia son inferiores a los FPS del flujo.
visualizeboolFalseActiva 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.
augmentboolFalsePermite 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_nmsboolFalseActiva 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.
classeslist[int]NoneFiltra 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_masksboolFalseDevuelve máscaras de segmentación de alta resolución. Las máscaras devueltas (masks.data) coincidirán con el tamaño original de la imagen si están activados. Si están desactivadas, tendrán el tamaño de imagen utilizado durante la inferencia.
embedlist[int]NoneEspecifica 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.
projectstrNoneNombre del directorio del proyecto donde se guardan los resultados de la predicción si save está activado.
namestrNoneNombre de la ejecución de la predicción. Se utiliza para crear un subdirectorio dentro de la carpeta del proyecto, donde se almacenan los resultados de la predicción si save está activado.

Argumentos de visualización:

ArgumentoTipoPor defectoDescripción
showboolFalseSi 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.
saveboolFalse o TruePermite guardar las imágenes o vídeos anotados en un archivo. Útil para documentación, análisis posteriores o para compartir resultados. Por defecto es Verdadero cuando se utiliza CLI y Falso cuando se utiliza en Python.
save_framesboolFalseAl 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_txtboolFalseGuarda 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_confboolFalseIncluye puntuaciones de confianza en los archivos de texto guardados. Aumenta el detalle disponible para el postprocesado y el análisis.
save_cropboolFalseGuarda imágenes recortadas de las detecciones. Útil para aumentar el conjunto de datos, analizarlos o crear conjuntos de datos centrados en objetos concretos.
show_labelsboolTrueMuestra etiquetas para cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados.
show_confboolTrueMuestra 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_boxesboolTrueDibuja 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_widthNone o intNoneEspecifica 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

YOLO11 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 .

Nota

Las imágenes HEIC sólo se admiten para la inferencia, no para el entrenamiento.

Sufijos de imagenEjemplo de orden PredecirReferencia
.bmpyolo predict source=image.bmpMicrosoft Formato de archivo BMP
.dngyolo predict source=image.dngAdobe DNG
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoObjeto Multiimagen
.pngyolo predict source=image.pngGráficos de red portátiles
.tifyolo predict source=image.tifEtiqueta Formato de archivo de imagen
.tiffyolo predict source=image.tiffEtiqueta Formato de archivo de imagen
.webpyolo predict source=image.webpWebP
.pfmyolo predict source=image.pfmFloatMap portátil
.HEICyolo predict source=image.HEICFormato de Imagen de Alta Eficacia

Vídeos

La siguiente tabla contiene los formatos de vídeo válidos de Ultralytics .

Sufijos de vídeoEjemplo de orden PredecirReferencia
.asfyolo predict source=video.asfFormato de sistemas avanzados
.aviyolo predict source=video.aviIntercalación de audio y vídeo
.gifyolo predict source=video.gifFormato de intercambio de gráficos
.m4vyolo predict source=video.m4vMPEG-4 Parte 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movFormato de archivo QuickTime
.mp4yolo predict source=video.mp4MPEG-4 Parte 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Parte 2
.mpgyolo predict source=video.mpgMPEG-1 Parte 2
.tsyolo predict source=video.tsFlujo de transporte MPEG
.wmvyolo predict source=video.wmvVídeo de Windows Media
.webmyolo predict source=video.webmProyecto WebM

Trabajar con resultados

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

Resultados

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

Results tienen los siguientes atributos:

AtributoTipoDescripción
orig_imgnumpy.ndarrayLa imagen original como matriz numpy.
orig_shapetupleLa forma de la imagen original en formato (alto, ancho).
boxesBoxes, optionalUn objeto Cajas que contiene las cajas delimitadoras de la detección.
masksMasks, optionalUn objeto Máscaras que contiene las máscaras de detección.
probsProbs, optionalUn objeto Probs que contiene las probabilidades de cada clase para la tarea de clasificación.
keypointsKeypoints, optionalUn objeto Puntos clave que contiene los puntos clave detectados para cada objeto.
obbOBB, optionalUn objeto OBB que contiene cuadros delimitadores orientados.
speeddictUn diccionario de velocidades de preproceso, inferencia y postproceso en milisegundos por imagen.
namesdictUn diccionario de nombres de clases.
pathstrLa ruta al archivo de imagen.

Results tienen los siguientes métodos:

MétodoTipo de devoluciónDescripción
update()NoneActualiza los atributos casillas, máscaras y probs del objeto Resultados.
cpu()ResultsDevuelve una copia del objeto Resultados con todos los tensores en la memoria CPU .
numpy()ResultsDevuelve una copia del objeto Resultados con todos los tensores como matrices numpy.
cuda()ResultsDevuelve una copia del objeto Resultados con todos los tensores en la memoria GPU .
to()ResultsDevuelve una copia del objeto Resultados con tensores en el dispositivo y dtype especificados.
new()ResultsDevuelve un nuevo objeto Resultados con la misma imagen, ruta y nombres.
plot()numpy.ndarrayTraza los resultados de la detección. Devuelve una matriz numpy de la imagen anotada.
show()NoneMostrar resultados anotados en pantalla.
save()NoneGuarda los resultados anotados en un archivo.
verbose()strDevuelve la cadena de registro de cada tarea.
save_txt()NoneGuarda las predicciones en un archivo txt.
save_crop()NoneGuardar predicciones recortadas en save_dir/cls/file_name.jpg.
tojson()strConvierte 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 YOLO11n model
model = YOLO("yolo11n.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:

NombreTipoDescripción
cpu()MétodoMueve el objeto a la memoria CPU .
numpy()MétodoConvierte el objeto en una matriz numpy.
cuda()MétodoMueve el objeto a la memoria CUDA .
to()MétodoMueve el objeto al dispositivo especificado.
xyxyPropiedad (torch.Tensor)Devuelve las casillas en formato xyxy.
confPropiedad (torch.Tensor)Devuelve los valores de confianza de las casillas.
clsPropiedad (torch.Tensor)Devuelve los valores de clase de las cajas.
idPropiedad (torch.Tensor)Devuelve los ID de pista de las cajas (si están disponibles).
xywhPropiedad (torch.Tensor)Devuelve las cajas en formato xywh.
xyxynPropiedad (torch.Tensor)Devuelve las cajas en formato xyxy normalizadas por el tamaño de la imagen original.
xywhnPropiedad (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 YOLO11n-seg Segment model
model = YOLO("yolo11n-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:

NombreTipoDescripción
cpu()MétodoDevuelve las máscaras tensor en la memoria CPU .
numpy()MétodoDevuelve las máscaras tensor como una matriz numpy.
cuda()MétodoDevuelve las máscaras tensor en la memoria GPU .
to()MétodoDevuelve las máscaras tensor con el dispositivo y dtype especificados.
xynPropiedad (torch.Tensor)Una lista de segmentos normalizados representados como tensores.
xyPropiedad (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 YOLO11n-pose Pose model
model = YOLO("yolo11n-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:

NombreTipoDescripción
cpu()MétodoDevuelve los puntos clave tensor en la memoria CPU .
numpy()MétodoDevuelve los puntos clave tensor como una matriz numpy.
cuda()MétodoDevuelve los puntos clave tensor en la memoria GPU .
to()MétodoDevuelve los puntos clave tensor con el dispositivo y dtype especificados.
xynPropiedad (torch.Tensor)Una lista de puntos clave normalizados representados como tensores.
xyPropiedad (torch.Tensor)Una lista de puntos clave en coordenadas de píxel representados como tensores.
confPropiedad (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 YOLO11n-cls Classify model
model = YOLO("yolo11n-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:

NombreTipoDescripción
cpu()MétodoDevuelve una copia de los probs tensor en la memoria CPU .
numpy()MétodoDevuelve una copia de las probs tensor como matriz numpy.
cuda()MétodoDevuelve una copia de los probs tensor en la memoria GPU .
to()MétodoDevuelve una copia de los probs tensor con el dispositivo y dtype especificados.
top1Propiedad (int)Índice de la clase 1 superior.
top5Propiedad (list[int])Índices de las 5 clases principales.
top1confPropiedad (torch.Tensor)Confianza de la clase 1 superior.
top5confPropiedad (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 YOLO11n model
model = YOLO("yolo11n-obb.pt")

# Run inference on an image
results = model("boats.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:

NombreTipoDescripción
cpu()MétodoMueve el objeto a la memoria CPU .
numpy()MétodoConvierte el objeto en una matriz numpy.
cuda()MétodoMueve el objeto a la memoria CUDA .
to()MétodoMueve el objeto al dispositivo especificado.
confPropiedad (torch.Tensor)Devuelve los valores de confianza de las casillas.
clsPropiedad (torch.Tensor)Devuelve los valores de clase de las cajas.
idPropiedad (torch.Tensor)Devuelve los ID de pista de las cajas (si están disponibles).
xyxyPropiedad (torch.Tensor)Devuelve las cajas horizontales en formato xyxy.
xywhrPropiedad (torch.Tensor)Devuelve las cajas giradas en formato xywhr.
xyxyxyxyPropiedad (torch.Tensor)Devuelve las cajas rotadas en formato xyxyxyxy.
xyxyxyxynPropiedad (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 YOLO11n model
model = YOLO("yolo11n.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 del método

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

ArgumentoTipoDescripciónPor defecto
confboolIncluye puntuaciones de confianza en la detección.True
line_widthfloatAnchura de línea de los cuadros delimitadores. Se ajusta al tamaño de la imagen si None.None
font_sizefloatTamaño de la fuente del texto. Se adapta al tamaño de la imagen si None.None
fontstrNombre de la fuente para las anotaciones de texto.'Arial.ttf'
pilboolDevuelve la imagen como un objeto PIL Imagen.False
imgnumpy.ndarrayImagen alternativa para el trazado. Utiliza la imagen original si None.None
im_gputorch.TensorGPU-Imagen acelerada para un trazado más rápido de la máscara. Forma: (1, 3, 640, 640).None
kpt_radiusintRadio de los puntos clave dibujados.5
kpt_lineboolConecta los puntos clave con líneas.True
labelsboolIncluye etiquetas de clase en las anotaciones.True
boxesboolSuperponer cuadros delimitadores en la imagen.True
masksboolSuperponer máscaras en la imagen.True
probsboolIncluye las probabilidades de clasificación.True
showboolVisualiza directamente la imagen anotada utilizando el visor de imágenes predeterminado.False
saveboolGuarda la imagen anotada en un archivo especificado por filename.False
filenamestrRuta y nombre del archivo para guardar la imagen anotada si save es True.None
color_modestrEspecifica el modo de color, por ejemplo, "instancia" o "clase".'class'

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 threading import Thread

from ultralytics import YOLO


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


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

Para conocer en profundidad la inferencia a prueba de hilos con los modelos YOLO y las 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 YOLO 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 YOLO model
model = YOLO("yolo11n.pt")

# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLO inference on the frame
        results = model(frame)

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

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

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

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

Este script ejecutará predicciones en cada fotograma del vídeo, visualizará los resultados y los mostrará en una ventana. Se puede salir del bucle pulsando "q".

PREGUNTAS FRECUENTES

¿Qué es Ultralytics YOLO y su modo de predicción para la inferencia en tiempo real?

Ultralytics YOLO es un modelo de vanguardia para la detección, segmentación y clasificación de objetos en tiempo real. Su modo de predicción permite a los usuarios realizar inferencias a alta velocidad en diversas fuentes de datos, como imágenes, vídeos y secuencias en directo. Diseñado para ofrecer rendimiento y versatilidad, también ofrece modos de procesamiento por lotes y streaming. Para más detalles sobre sus funciones, consulta Ultralytics YOLO modo predicción.

¿Cómo puedo realizar inferencias utilizando Ultralytics YOLO en diferentes fuentes de datos?

Ultralytics YOLO puede procesar una amplia gama de fuentes de datos, incluyendo imágenes individuales, vídeos, directorios, URLs y flujos. Puedes especificar la fuente de datos en el campo model.predict() llamada. Por ejemplo, utiliza 'image.jpg' para una imagen local o 'https://ultralytics.com/images/bus.jpg' para una URL. Consulta los ejemplos detallados de varios fuentes de inferencia en la documentación.

¿Cómo optimizo la velocidad de inferencia y el uso de memoria de YOLO ?

Para optimizar la velocidad de inferencia y gestionar la memoria de forma eficiente, puedes utilizar el modo streaming configurando stream=True en el método de llamada del predictor. El modo streaming genera un generador de memoria eficiente de Results en lugar de cargar todos los fotogramas en memoria. Para procesar vídeos largos o grandes conjuntos de datos, el modo streaming es especialmente útil. Más información modo streaming.

¿Qué argumentos de inferencia apoya Ultralytics YOLO ?

En model.predict() en YOLO admite varios argumentos, como conf, iou, imgsz, devicey más. Estos argumentos te permiten personalizar el proceso de inferencia, estableciendo parámetros como los umbrales de confianza, el tamaño de la imagen y el dispositivo utilizado para el cálculo. Puedes encontrar descripciones detalladas de estos argumentos en la página argumentos de inferencia sección.

¿Cómo puedo visualizar y guardar los resultados de las predicciones de YOLO ?

Tras realizar la inferencia con YOLO, la Results contienen métodos para mostrar y guardar imágenes anotadas. Puedes utilizar métodos como result.show() y result.save(filename="result.jpg") para visualizar y guardar los resultados. Para obtener una lista completa de estos métodos, consulta la página trabajar con resultados sección.

📅 C reado hace 1 año ✏️ Actualizado hace 26 días

Comentarios