Modelo de predicción con Ultralytics YOLO
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 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 reales
Fabricación | Deportes | Seguridad |
---|---|---|
Detección de piezas de recambio 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ía considerar el modo de predicción de YOLO11 para sus 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 de alta velocidad en tiempo real sin sacrificar la precisión.
- Facilidad de uso: interfaces intuitivas Python y CLI para una implantación y pruebas rápidas.
- Altamente personalizable: Varios ajustes y parámetros para ajustar el comportamiento de inferencia del modelo según sus requisitos específicos.
Características principales del modo Predecir
YOLO11está diseñado para ser robusto y versátil:
- Compatibilidad con múltiples fuentes de datos: Si sus datos están en forma de imágenes individuales, una colección de imágenes, archivos de vídeo o secuencias de vídeo en tiempo real, el modo predictivo lo tiene cubierto.
- Modo streaming: Utilice la función de streaming para generar un generador de memoria eficiente de
Results
objetos. Habilítelo configurandostream=True
en el método de llamada del predictor. - Procesamiento por lotes: Capacidad para 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 integración: se integra fácilmente con los canales 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("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
Utilice stream=True
para procesar vídeos largos o grandes conjuntos de datos y gestionar la memoria de forma eficiente. Cuando stream=False
Los resultados de todos los fotogramas o puntos de datos se almacenan en memoria, lo que puede dar lugar a errores de memoria en el caso de entradas de gran tamaño. Por el contrario, stream=True
utiliza un generador, que sólo mantiene en memoria los resultados del fotograma o punto de datos actual, lo que reduce significativamente el consumo de memoria y evita problemas de falta de memoria.
Fuente | Ejemplo | Tipo | Notas |
---|---|---|---|
imagen | 'image.jpg' |
str o Path |
Un único archivo de imagen. |
URL | 'https://ultralytics.com/images/bus.jpg' |
str |
URL de una imagen. |
captura de pantalla | 'screen' |
str |
Captura una pantalla. |
PIL | Image.open('image.jpg') |
PIL.Image |
Formato HWC con canales RGB. |
OpenCV | cv2.imread('image.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 global para coincidir con varios archivos. Utilice el patrón * como comodín. |
YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' |
str |
URL de un vídeo de YouTube. |
stream ✅ | 'rtsp://example.com/media.mp4' |
str |
URL para protocolos de streaming como RTSP, RTMP, TCP, o una dirección IP. |
multi-stream ✅ | 'list.streams' |
str o Path |
*.streams con una URL de flujo por fila, es decir, se ejecutarán 8 flujos con un tamaño de lote 8. |
webcam ✅ | 0 |
int |
Índice del dispositivo de cámara conectado para ejecutar la inferencia. |
A continuación se muestran ejemplos de código para utilizar cada tipo de fuente:
Fuentes de predicción
Ejecutar la inferencia en un archivo de imagen.
Ejecutar la inferencia sobre el contenido de la pantalla actual como una captura de pantalla.
Ejecute la inferencia sobre una imagen o un vídeo alojado a distancia a través de una URL.
Ejecute la inferencia en una imagen abierta con Python Imaging Library (PIL).
Ejecutar inferencia sobre una imagen leída con OpenCV.
Ejecuta la inferencia sobre una imagen representada como un array 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
Ejecute la inferencia sobre una colección de imágenes, URL, vídeos y directorios listados en un archivo CSV.
Ejecutar la inferencia en un archivo de vídeo. Utilizando stream=True
puede crear un generador de objetos Resultados para reducir el uso de memoria.
Ejecute la inferencia en todas las imágenes y vídeos de un directorio. Para capturar también imágenes y vídeos en subdirectorios utilice un patrón glob, es decir path/to/dir/**/*
.
Ejecutar la inferencia en todas las imágenes y vídeos que coincidan con una expresión glob con *
personajes.
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
Ejecutar la inferencia en un vídeo de YouTube. Utilizando stream=True
puede crear un generador de objetos de resultados para reducir el uso de memoria en los vídeos largos.
Utilice 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, donde 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, utilice 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 permite supervisar y realizar inferencias sobre varios flujos de vídeo a la vez.
Puede ejecutar la inferencia en un dispositivo de cámara conectado pasando el índice de esa cámara en particular a source
.
Argumentos de inferencia
model.predict()
acepta múltiples argumentos que pueden pasarse en el momento de la inferencia para anular los valores predeterminados:
Ejemplo
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 las transmisiones en directo. Admite una amplia gama de formatos y fuentes, lo que permite una aplicación flexible a través de diferentes 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 no se tendrán en cuenta. 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 bajos 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 el redimensionamiento cuadrado o una tupla (alto, ancho). Un tamaño adecuado puede mejorar la detección precisión y la velocidad de procesamiento. |
half |
bool |
False |
Permite la inferencia de media precisión (FP16), lo 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 CPU, un GPU específico u otros dispositivos de cálculo para la ejecución del modelo. |
batch |
int |
1 |
Especifica el tamaño del lote para la inferencia (sólo funciona cuando la fuente es un directorio, un archivo de vídeo o .txt archivo). Un tamaño de lote mayor puede proporcionar un mayor rendimiento, acortando el tiempo total necesario para la inferencia. |
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 se ponen en cola los fotogramas entrantes para los flujos de vídeo. Si False Si `True', los fotogramas antiguos se eliminan para acomodar los nuevos (optimizado para aplicaciones en tiempo real). Si es `True', pone en cola los nuevos fotogramas en un búfer, asegurando que no se salte ningún fotograma, pero causará latencia si los FPS de inferencia son inferiores a los FPS de flujo. |
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". Resulta ú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 |
Permite la supresión no máxima (NMS) independiente de la clase, que fusiona los cuadros superpuestos de clases diferentes. Resulta útil en situaciones de detección multiclase en las 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. Resulta útil para centrarse en objetos relevantes en tareas de detección multiclase. |
retina_masks |
bool |
False |
Devuelve 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 desactivados, tendrán el tamaño de imagen utilizado durante la inferencia. |
embed |
list[int] |
None |
Especifica las capas de las que extraer vectores de características o incrustaciones. Resulta útil para tareas posteriores como la agrupación o la búsqueda de similitudes. |
project |
str |
None |
Nombre del directorio del proyecto donde se guardan los resultados de las predicciones si save está activado. |
name |
str |
None |
Nombre 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:
Argumento | Tipo | Por defecto | Descripción |
---|---|---|---|
show |
bool |
False |
Si True muestra 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 o True |
Permite guardar las imágenes o vídeos anotados en un archivo. Resulta útil para documentación, análisis posteriores o para compartir resultados. Por defecto es True cuando se utiliza CLI y False cuando se utiliza en Python. |
save_frames |
bool |
False |
Al procesar vídeos, guarda fotogramas individuales como imágenes. Resulta útil para extraer fotogramas concretos o para realizar análisis detallados 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. Mejora los detalles disponibles para el postprocesamiento y el análisis. |
save_crop |
bool |
False |
Guarda imágenes recortadas de las detecciones. Resulta útil para aumentar el conjunto de datos, realizar análisis o crear conjuntos de datos centrados en objetos específicos. |
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 cuadros 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 o int |
None |
Especifica el ancho de línea de los cuadros delimitadores. Si None El 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. Consulte 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 la formación.
Sufijos de imagen | Ejemplo de orden Predecir | Referencia |
---|---|---|
.bmp |
yolo predict source=image.bmp |
Microsoft Formato de archivo 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 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 |
.HEIC |
yolo predict source=image.HEIC |
Formato de imagen de alta eficacia |
Vídeos
La tabla siguiente contiene los formatos de vídeo Ultralytics válidos.
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
Results
tienen los siguientes atributos:
Atributo | Tipo | Descripción |
---|---|---|
orig_img |
numpy.ndarray |
La imagen original como un array numpy. |
orig_shape |
tuple |
La forma original de la imagen en formato (alto, ancho). |
boxes |
Boxes, optional |
Un objeto Boxes 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 Keypoints 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 preprocesamiento, inferencia y postprocesamiento 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 boxes, masks y probs del objeto Resultados. |
cpu() |
Results |
Devuelve una copia del objeto Resultados con todos los tensores en la memoria CPU . |
numpy() |
Results |
Devuelve una copia del objeto Results con todos los tensores como matrices numpy. |
cuda() |
Results |
Devuelve una copia del objeto Resultados con todos los tensores en la memoria GPU . |
to() |
Results |
Devuelve una copia del objeto Results con tensores en el dispositivo y dtype especificados. |
new() |
Results |
Devuelve un nuevo objeto Results con la misma imagen, ruta y nombres. |
plot() |
numpy.ndarray |
Traza los resultados de la detección. Devuelve un array numpy de la imagen anotada. |
show() |
None |
Mostrar resultados anotados en pantalla. |
save() |
None |
Guardar 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 información, consulte el Results
documentación de clase.
Cajas
Boxes
puede utilizarse para indexar, manipular y convertir cuadros delimitadores a diferentes formatos.
Cajas
He aquí una tabla para el 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 CPU . |
numpy() |
Método | Convierte el objeto en un array 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 información, consulte el Boxes
documentación de clase.
Máscaras
Masks
se puede utilizar para indexar, manipular y convertir máscaras en segmentos.
Máscaras
He aquí una tabla para el 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 CPU . |
numpy() |
Método | Devuelve las máscaras tensor como una matriz numpy. |
cuda() |
Método | Devuelve las máscaras tensor en la memoria 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 información, consulte el Masks
documentación de clase.
Puntos clave
Keypoints
se puede utilizar para indexar, manipular y normalizar coordenadas.
Puntos clave
He aquí una tabla para el 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 CPU . |
numpy() |
Método | Devuelve los puntos clave tensor como una matriz numpy. |
cuda() |
Método | Devuelve los puntos clave tensor en la memoria 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íxeles 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 información, consulte el Keypoints
documentación de clase.
Probs
Probs
se puede utilizar indexar, obtener top1
y top5
índices y puntuaciones de clasificación.
Probs
A continuación se muestra 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 CPU . |
numpy() |
Método | Devuelve una copia de las pruebas tensor como una matriz numpy. |
cuda() |
Método | Devuelve una copia de los probs tensor en la memoria 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 información, consulte el Probs
documentación de clase.
OBB
OBB
puede utilizarse para indexar, manipular y convertir cuadros delimitadores orientados a diferentes formatos.
OBB
He aquí una tabla para el 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 CPU . |
numpy() |
Método | Convierte el objeto en un array 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 rotadas 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 información, consulte el OBB
documentación de clase.
Trazado de 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.
Trazado
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:
Argumento | Tipo | Descripción | Por defecto |
---|---|---|---|
conf |
bool |
Incluir puntuaciones de confianza de detección. | True |
line_width |
float |
Anchura de línea de los cuadros delimitadores. Se adapta 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 Image. | False |
img |
numpy.ndarray |
Imagen alternativa para el trazado. Utiliza la imagen original si None . |
None |
im_gpu |
torch.Tensor |
GPU-Imagen acelerada para un trazado más rápido de la máscara. Forma: (1, 3, 640, 640). | None |
kpt_radius |
int |
Radio para los puntos clave dibujados. | 5 |
kpt_line |
bool |
Conecte los puntos clave con líneas. | True |
labels |
bool |
Incluir 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 |
Incluir probabilidades de clasificación. | True |
show |
bool |
Visualice la imagen anotada directamente utilizando el visor de imágenes predeterminado. | False |
save |
bool |
Guardar 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 |
color_mode |
str |
Especifique el modo de color, por ejemplo, 'instancia' o 'clase'. | 'class' |
Inferencia segura de subprocesos
Garantizar la seguridad de los subprocesos durante la inferencia es crucial cuando se ejecutan varios modelos de YOLO en paralelo en distintos subprocesos. La inferencia segura de subprocesos garantiza que las predicciones de cada subproceso estén aisladas y no interfieran entre sí, evitando condiciones de carrera y asegurando resultados coherentes y fiables.
Cuando se utilizan modelos YOLO en una aplicación multihilo, es importante instanciar objetos de modelo separados para cada hilo o emplear almacenamiento local de hilos para evitar conflictos:
Inferencia segura de subprocesos
Instanciar un único modelo dentro de cada subproceso para una inferencia segura:
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 obtener información detallada sobre la inferencia segura con hilos con los modelos de YOLO e instrucciones paso a paso, consulte nuestra Guía de inferencia segura con hilosYOLO . Esta guía le proporcionará toda la información necesaria para evitar errores comunes y asegurarse de que su inferencia multihilo se ejecuta sin problemas.
Fuente de streaming for
-bucle
He aquí un script Python que utiliza OpenCV (cv2
) y YOLO para ejecutar la inferencia sobre fotogramas de vídeo. Este script asume que usted ya ha instalado los paquetes necesarios (opencv-python
y ultralytics
).
Streaming 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 obtener más información sobre sus funciones, consulte Ultralytics YOLO predict mode.
¿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 streams. Puede especificar la fuente de datos en el campo model.predict()
llamada. Por ejemplo, utilice 'image.jpg'
para una imagen local o 'https://ultralytics.com/images/bus.jpg'
para una URL. Consulte los ejemplos detallados de varios fuentes de inferencia en la documentación.
¿Cómo puedo optimizar la velocidad de inferencia y el uso de memoria de YOLO ?
Para optimizar la velocidad de inferencia y gestionar la memoria de forma eficiente, puede utilizar el modo streaming configurando stream=True
en el método de llamada del predictor. El modo streaming genera un generador de Results
en lugar de cargar todos los fotogramas en la memoria. Para procesar vídeos largos o grandes conjuntos de datos, el modo streaming resulta especialmente útil. Más información modo streaming.
¿Qué argumentos de inferencia apoya Ultralytics YOLO ?
En model.predict()
de YOLO admite varios argumentos, como conf
, iou
, imgsz
, device
etc. Estos argumentos le 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. Encontrará descripciones detalladas de estos argumentos en la sección argumentos de inferencia sección.
¿Cómo puedo visualizar y guardar los resultados de las predicciones de YOLO ?
Tras realizar la inferencia con YOLO, el Results
contienen métodos para mostrar y guardar imágenes anotadas. Puede 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, consulte la página trabajar con resultados sección.