Predicción de modelos con Ultralytics YOLO
Introducción
En el mundo del machine learning y la visión artificial, el proceso de interpretar datos visuales se denomina a menudo inferencia o predicción. Ultralytics YOLO26 ofrece una función potente conocida como modo predict, diseñada para una inferencia de alto rendimiento y en tiempo real a través de una amplia gama de fuentes de datos.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
Aplicaciones en el mundo real
| Fabricación | Deportes | Seguridad |
|---|---|---|
![]() | ![]() | ![]() |
| Detección de repuestos de vehículos | Detección de jugadores de fútbol | Detección de caídas de personas |
¿Por qué usar Ultralytics YOLO para la inferencia?
Aquí tienes los motivos por los que deberías considerar el modo predict de YOLO26 para tus diversas necesidades de inferencia:
- Versatilidad: Capaz de ejecutar inferencias en imágenes, vídeos e incluso transmisiones en directo.
- Rendimiento: Diseñado para un procesamiento de alta velocidad en tiempo real sin sacrificar la precisión.
- Facilidad de uso: Interfaces intuitivas de Python y CLI para un despliegue y pruebas rápidos.
- Altamente personalizable: Diversos ajustes y parámetros para adaptar el comportamiento de inferencia del modelo según tus requisitos específicos.
- Listo para producción: Despliega modelos como endpoints de API en la Ultralytics Platform con escalado automático y monitorización, o ejecuta la inferencia localmente.
Características clave del modo predict
El modo predict de YOLO26 está diseñado para ser robusto y versátil, presentando:
- Compatibilidad con múltiples fuentes de datos: Ya sea que tus datos estén en forma de imágenes individuales, una colección de imágenes, archivos de vídeo o transmisiones de vídeo en tiempo real, el modo predict te cubre.
- Modo streaming: Utiliza la función de streaming para generar un generador de objetos
Resultseficiente en memoria. Habilítalo configurandostream=Trueen el método de llamada del predictor. - Procesamiento por lotes: Procesa varias imágenes o fotogramas de vídeo en un solo lote, lo que reduce aún más el tiempo total de inferencia.
- Amigable con la integración: Integra fácilmente con pipelines de datos existentes y otros componentes de software gracias a su API flexible.
Los modelos de Ultralytics YOLO devuelven una lista de Python de objetos Results o un generador de objetos Results eficiente en memoria cuando se pasa stream=True al modelo durante la inferencia:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # pretrained YOLO26n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"]) # return a list of Results objects
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to diskFuentes de inferencia
YOLO26 puede procesar diferentes tipos de fuentes de entrada para la inferencia, como se muestra en la tabla siguiente. Las fuentes incluyen imágenes estáticas, flujos de vídeo y varios formatos de datos. La tabla también indica si cada fuente puede utilizarse en modo de streaming con el argumento stream=True ✅. El modo de streaming es beneficioso para procesar vídeos o transmisiones en vivo, ya que crea un generador de resultados en lugar de cargar todos los fotogramas en la memoria.
Utiliza stream=True para procesar vídeos largos o grandes conjuntos de datos y gestionar la memoria de manera eficiente. Cuando stream=False, los resultados de todos los fotogramas o puntos de datos se almacenan en la memoria, lo que puede acumularse rápidamente y causar errores de falta de memoria en entradas grandes. Por el contrario, stream=True utiliza un generador, que solo mantiene en memoria los resultados del fotograma o punto de datos actual, reduciendo significativamente el consumo de memoria y evitando problemas de memoria insuficiente.
| Fuente | Ejemplo | Tipo | Notas |
|---|---|---|---|
| image | 'image.jpg' | str o Path | Archivo de imagen única. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | URL a una imagen. |
| screenshot | 'screen' | str | Captura de 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. |
| video ✅ | 'video.mp4' | str o Path | Archivo de vídeo en formatos como MP4, AVI, etc. |
| directory ✅ | 'path/' | str o Path | Ruta a un directorio que contiene imágenes o vídeos. |
| glob ✅ | 'path/*.jpg' | str | Patrón glob para coincidir con varios archivos. Usa el carácter * como comodín. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | URL a 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 | Archivo de texto *.streams con una URL de flujo por fila; por ejemplo, 8 flujos se ejecutarán con un tamaño de lote de 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:
Ejecuta la inferencia en un archivo de imagen.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objectsArgumentos de inferencia
model.predict() acepta múltiples argumentos que pueden pasarse durante la inferencia para sobrescribir los valores por defecto:
Forma fija vs rectángulo mínimo (rect)
Por defecto, la predicción utiliza rect=True, que activa el relleno de rectángulo mínimo cuando es posible. La imagen se escala para encajar dentro de imgsz y se rellena solo hasta el múltiplo de stride más cercano, por lo que el tensor final puede ser más pequeño que imgsz. El relleno de rectángulo mínimo solo se utiliza cuando todas las imágenes del lote tienen la misma forma y el backend lo admite (PyTorch .pt, o ONNX / Triton dinámico). De lo contrario, las imágenes se rellenan hasta el objetivo imgsz completo.
Utiliza rect=False para rellenar siempre hasta el objetivo imgsz completo. Esto se recomienda cuando necesites un tamaño de entrada fijo para que coincida con modelos exportados (ONNX, TensorRT, etc.).
imgsz como entero vs tupla
- Un entero
imgsz=640se convierte en un objetivo cuadrado(640, 640)después del redondeo de stride. - Una tupla
imgsz=(384, 672)establece un objetivo rectangular. Conrect=Trueyauto=True, el tensor real puede ser más pequeño que este objetivo.
Entrenamiento vs predicción/exportación
El entrenamiento solo acepta un único entero imgsz (una lista [h, w] se ajusta al valor más grande). La predicción y la exportación aceptan un entero o una tupla (height, width).
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)Argumentos de inferencia:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
source | str o int o None | None | Especifica la fuente de datos para la inferencia. Puede ser una ruta de imagen, un archivo de video, un directorio, una URL o un ID de dispositivo para transmisiones en vivo. Si se omite, se registra una advertencia y el modelo recurre a los activos de demostración integrados (ultralytics/assets, o una URL de demostración para OBB). Admite una amplia gama de formatos y fuentes, permitiendo una aplicación flexible a través de diferentes tipos de entrada. |
conf | float | 0.25 | Establece el umbral de confianza mínimo 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 de No Máximos (NMS). Los valores más bajos resultan en menos detecciones al eliminar cajas superpuestas, útil para reducir duplicados. |
imgsz | int o tuple | 640 | Letterbox target. An integer gives a square N×N; a tuple gives (height, width). With rect=True, the actual tensor may be smaller than this target due to minimum-rectangle padding. Use rect=False for a fixed size. See Fixed shape vs minimum rectangle. |
rect | bool | True | Si es True, usa relleno de rectángulo mínimo cuando sea posible (lotes de la misma forma y backend compatible). Si es False, rellena siempre hasta el imgsz completo. Consulta Forma fija vs. rectángulo mínimo. |
half | bool | False | Activa la inferencia de precisión media (FP16), lo que puede acelerar la inferencia del modelo en GPUs compatibles con un impacto mínimo en la precisión. |
device | str | None | Especifica el dispositivo para la inferencia (p. ej., cpu, cuda:0, 0, npu o npu:0). Permite a los usuarios seleccionar entre CPU, una GPU específica, NPU Huawei Ascend u otros dispositivos de cómputo para la ejecución del modelo. |
batch | int | 1 | Especifica el tamaño de lote para la inferencia (solo funciona cuando la fuente es un directorio, archivo de video o archivo .txt). Un tamaño de lote mayor puede proporcionar un mayor rendimiento, reduciendo la cantidad total de tiempo necesaria 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 resultados excesivos en escenas densas. |
vid_stride | int | 1 | Intervalo de fotogramas para entradas de vídeo. Permite saltar fotogramas en vídeos para acelerar el procesamiento a costa de la resolución temporal. Un valor de 1 procesa cada fotograma, mientras que valores mayores saltan fotogramas. |
stream_buffer | bool | False | Determina si se deben poner en cola los fotogramas entrantes para flujos de vídeo. Si es False, los fotogramas antiguos se descartan para dar cabida a 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 ninguno, pero causará latencia si los FPS de inferencia son menores que los FPS del 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". Útil para la depuración y la interpretación del modelo. |
augment | bool | False | Habilita la aumentación durante la inferencia (TTA) para las predicciones, mejorando potencialmente la robustez de la detección a costa de la velocidad de inferencia. |
agnostic_nms | bool | False | Habilita la Supresión de No Máximos (NMS) agnóstica a la clase, que fusiona cajas superpuestas de diferentes clases. Útil en escenarios de detección multiclase donde la superposición de clases es común. Para modelos de extremo a extremo (YOLO26, YOLOv10), esto solo evita que la misma detección aparezca con múltiples etiquetas de clase (duplicados de IoU=1.0) y no realiza una supresión basada en el umbral de IoU entre cajas distintas. |
classes | list[int] | None | Filtra las predicciones a un conjunto de IDs de clase. Solo 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 | 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 se habilita. Si se deshabilita, 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 embeddings. Útil para tareas posteriores como agrupación o búsqueda de similitud. |
project | str | None | Nombre del directorio del proyecto donde se guardan los resultados de la predicción si save está habilitado. |
name | str | None | Nombre de la ejecución de 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á habilitado. |
stream | bool | False | Habilita el procesamiento eficiente en memoria para vídeos largos o numerosas imágenes al devolver un generador de objetos Results en lugar de cargar todos los fotogramas en memoria a la vez. |
verbose | bool | True | Controla si se deben mostrar registros detallados de inferencia en el terminal, proporcionando información en tiempo real sobre el proceso de predicción. |
compile | bool o str | False | Activa la compilación de grafos torch.compile de PyTorch 2.x con backend='inductor'. Acepta True → "default", False → desactiva, o un modo de cadena como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Vuelve a la ejecución ansiosa (eager) con una advertencia si no es compatible. |
end2end | bool | None | Anula el modo de extremo a extremo en modelos YOLO que admiten inferencia sin NMS (YOLO26, YOLOv10). Configurarlo en False te permite ejecutar la predicción utilizando la canalización NMS tradicional, permitiéndote además utilizar el argumento iou. Consulta la guía de Detección de extremo a extremo para más detalles. |
Argumentos de visualización:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
show | bool | False | Si es True, muestra las imágenes o vídeos anotados en una ventana. Útil para obtener información visual inmediata durante el desarrollo o las pruebas. |
save | bool | False or True | Habilita el guardado de las imágenes o vídeos anotados en archivos. Útil para documentación, análisis adicional o compartir resultados. Por defecto es True cuando se usa CLI y False cuando se usa en Python. |
save_frames | bool | False | Al procesar vídeos, guarda fotogramas individuales como imágenes. Útil para extraer fotogramas específicos 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 las puntuaciones de confianza en los archivos de texto guardados. Mejora el detalle disponible para el post-procesamiento y análisis. |
save_crop | bool | False | Guarda imágenes recortadas de las detecciones. Útil para el aumento de conjuntos de datos, análisis o la creación de conjuntos de datos enfocados en objetos específicos. |
show_labels | bool | True | Muestra etiquetas para cada detección en el resultado visual. Proporciona una comprensión inmediata de los objetos detectados. |
show_conf | bool | True | Muestra la puntuación de confianza para cada detección junto a la etiqueta. Ofrece información sobre la certeza del modelo para cada detección. |
show_boxes | bool | True | Dibuja cajas delimitadoras alrededor de los objetos detectados. Esencial para la identificación visual y la ubicación de objetos en imágenes o fotogramas de vídeo. |
line_width | int or None | None | Especifica el ancho de línea de las cajas delimitadoras. Si es None, el ancho de línea se ajusta automáticamente según el tamaño de la imagen. Proporciona personalización visual para mayor claridad. |
Formatos de imagen y vídeo
YOLO26 soporta varios formatos de imagen y vídeo, tal como se especifica en ultralytics/data/utils.py. Consulta las tablas a continuación para ver los sufijos válidos y comandos de ejemplo de predicción.
Imágenes
La siguiente tabla contiene formatos de imagen válidos en Ultralytics.
Los formatos HEIC/HEIF requieren pi-heif, que se instala automáticamente en el primer uso. AVIF es compatible de forma nativa con Pillow.
| Sufijos de imagen | Comando de predicción de ejemplo | Referencia |
|---|---|---|
.avif | yolo predict source=image.avif | Formato de archivo de imagen AV1 |
.bmp | yolo predict source=image.bmp | Formato de archivo Microsoft BMP |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | Formato de imagen de alta eficiencia |
.heif | yolo predict source=image.heif | Formato de imagen de alta eficiencia |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | Multi Picture Object |
.png | yolo predict source=image.png | Portable Network Graphics |
.tif | yolo predict source=image.tif | Formato de archivo de imagen con etiquetas |
.tiff | yolo predict source=image.tiff | Formato de archivo de imagen con etiquetas |
.webp | yolo predict source=image.webp | WebP |
Vídeos
La siguiente tabla contiene formatos de vídeo válidos en Ultralytics.
| Sufijos de vídeo | Comando de predicción de ejemplo | Referencia |
|---|---|---|
.asf | yolo predict source=video.asf | Formato de sistemas avanzados |
.avi | yolo predict source=video.avi | Audio Video Interleave |
.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 | MPEG Transport Stream |
.wmv | yolo predict source=video.wmv | Windows Media Video |
.webm | yolo predict source=video.webm | Proyecto WebM |
Trabajar con resultados
Todas las llamadas a predict() de Ultralytics devolverán una lista de objetos Results:
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
[
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
) # batch inferenceLos objetos Results tienen los siguientes atributos:
| Atributo | Tipo | Descripción |
|---|---|---|
orig_img | np.ndarray | La imagen original como un array de NumPy. |
orig_shape | tuple | La forma de la imagen original en formato (altura, anchura). |
boxes | Boxes, optional | Un objeto Boxes que contiene las cajas delimitadoras de la detección. |
masks | Masks, optional | Un objeto Masks que contiene las máscaras de la detección. |
probs | Probs, optional | Un objeto Probs que contiene las probabilidades de cada clase para tareas 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 cajas delimitadoras orientadas. |
speed | dict | Un diccionario con las velocidades de preprocesamiento, inferencia y postprocesamiento en milisegundos por imagen. |
names | dict | Un diccionario que mapea los índices de clase a los nombres de las clases. |
path | str | La ruta al archivo de imagen. |
save_dir | str, optional | Directorio para guardar los resultados. |
Los objetos Results tienen los siguientes métodos:
| Método | Tipo de retorno | Descripción |
|---|---|---|
update() | None | Actualiza el objeto Results con nuevos datos de detección (cajas, máscaras, probabilidades, obb, puntos clave). |
cpu() | Results | Devuelve una copia del objeto Results con todos los tensores movidos a la memoria de la CPU. |
numpy() | Results | Devuelve una copia del objeto Results con todos los tensores convertidos a arrays de NumPy. |
cuda() | Results | Devuelve una copia del objeto Results con todos los tensores movidos a la memoria de la GPU. |
to() | Results | Devuelve una copia del objeto Results con los tensores movidos al dispositivo y tipo de datos especificados. |
new() | Results | Crea un nuevo objeto Results con los mismos atributos de imagen, ruta, nombres y velocidad. |
plot() | np.ndarray | Dibuja los resultados de la detección en una imagen RGB de entrada y devuelve la imagen anotada. |
show() | None | Muestra la imagen con los resultados de la inferencia anotados. |
save() | str | Guarda la imagen de los resultados de inferencia anotados en un archivo y devuelve el nombre del archivo. |
verbose() | str | Devuelve una cadena de registro para cada tarea, detallando los resultados de la detección y clasificación. |
save_txt() | str | Guarda los resultados de la detección en un archivo de texto y devuelve la ruta al archivo guardado. |
save_crop() | None | Guarda las imágenes de detección recortadas en el directorio especificado. |
summary() | List[Dict[str, Any]] | Convierte los resultados de la inferencia en un diccionario resumido con normalización opcional. |
to_df() | DataFrame | Convierte los resultados de la detección en un DataFrame de Polars. |
to_csv() | str | Convierte los resultados de la detección a formato CSV. |
to_json() | str | Convierte los resultados de la detección a formato JSON. |
Para más detalles, consulta la documentación de la clase Results.
Boxes
El objeto Boxes puede utilizarse para indexar, manipular y convertir cajas delimitadoras a diferentes formatos.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.boxes) # print the Boxes object containing the detection bounding boxesAquí tienes una tabla con los métodos y propiedades de la clase Boxes, 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 a un array de 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 cajas en formato xyxy. |
conf | Propiedad (torch.Tensor) | Devuelve los valores de confianza de las cajas. |
cls | Propiedad (torch.Tensor) | Devuelve los valores de clase de las cajas. |
id | Propiedad (torch.Tensor) | Devuelve los ID de seguimiento 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 normalizado por el tamaño de la imagen original. |
xywhn | Propiedad (torch.Tensor) | Devuelve las cajas en formato xywh normalizado por el tamaño de la imagen original. |
Para más detalles, consulta la documentación de la clase Boxes.
Masks
El objeto Masks puede utilizarse para indexar, manipular y convertir máscaras a segmentos.
from ultralytics import YOLO
# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-seg.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.masks) # print the Masks object containing the detected instance masksAquí tienes una tabla con los métodos y propiedades de la clase Masks, incluyendo su nombre, tipo y descripción:
| Nombre | Tipo | Descripción |
|---|---|---|
cpu() | Método | Devuelve el tensor de las máscaras en la memoria de la CPU. |
numpy() | Método | Devuelve el tensor de las máscaras como un array de NumPy. |
cuda() | Método | Devuelve el tensor de las máscaras en la memoria de la GPU. |
to() | Método | Devuelve el tensor de las máscaras con el dispositivo y tipo de datos 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íxeles representados como tensores. |
Para más detalles, consulta la documentación de la clase Masks.
Keypoints
El objeto Keypoints puede utilizarse para indexar, manipular y normalizar coordenadas.
from ultralytics import YOLO
# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-pose.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.keypoints) # print the Keypoints object containing the detected keypointsAquí tienes una tabla con los métodos y propiedades de la clase Keypoints, incluyendo su nombre, tipo y descripción:
| Nombre | Tipo | Descripción |
|---|---|---|
cpu() | Método | Devuelve el tensor de puntos clave en la memoria de la CPU. |
numpy() | Método | Devuelve el tensor de puntos clave como un array de NumPy. |
cuda() | Método | Devuelve el tensor de puntos clave en la memoria de la GPU. |
to() | Método | Devuelve el tensor de puntos clave con el dispositivo y el 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, de lo contrario None. |
Para más detalles, consulta la documentación de la clase Keypoints.
Probs
El objeto Probs puede utilizarse para indexar y obtener índices y puntuaciones top1 y top5 de la clasificación.
from ultralytics import YOLO
# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-cls.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.probs) # print the Probs object containing the detected class probabilitiesAquí tienes una tabla que resume los métodos y propiedades de la clase Probs:
| Nombre | Tipo | Descripción |
|---|---|---|
cpu() | Método | Devuelve una copia del tensor probs en la memoria de la CPU. |
numpy() | Método | Devuelve una copia del tensor probs como un array de NumPy. |
cuda() | Método | Devuelve una copia del tensor probs en la memoria de la GPU. |
to() | Método | Devuelve una copia del tensor probs con el dispositivo y el dtype especificados. |
top1 | Propiedad (int) | Índice de la clase top 1. |
top5 | Propiedad (list[int]) | Índices de las clases top 5. |
top1conf | Propiedad (torch.Tensor) | Confianza de la clase top 1. |
top5conf | Propiedad (torch.Tensor) | Confianzas de las clases top 5. |
Para más detalles, consulta la documentación de la clase Probs.
OBB
El objeto OBB puede utilizarse para indexar, manipular y convertir cajas delimitadoras orientadas a diferentes formatos.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n-obb.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/boats.jpg") # results list
# View results
for r in results:
print(r.obb) # print the OBB object containing the oriented detection bounding boxesAquí tienes una tabla con los métodos y propiedades de la clase OBB, 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 a un array de 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 cajas. |
cls | Propiedad (torch.Tensor) | Devuelve los valores de clase de las cajas. |
id | Propiedad (torch.Tensor) | Devuelve los ID de seguimiento 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 según el tamaño de la imagen. |
Para más detalles, consulta la documentación de la clase OBB.
Visualización de resultados
El método plot() en los objetos Results facilita la visualización de las predicciones al superponer los objetos detectados (como cajas delimitadoras, máscaras, puntos clave y probabilidades) sobre la imagen original. Este método devuelve la imagen anotada como un array de NumPy, lo que permite mostrarla o guardarla fácilmente.
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]) # results list
# Visualize the results
for i, r in enumerate(results):
# Plot results image
im_bgr = r.plot() # BGR-order numpy array
im_rgb = Image.fromarray(im_bgr[..., ::-1]) # RGB-order PIL image
# Show results to screen (in supported environments)
r.show()
# Save results to disk
r.save(filename=f"results{i}.jpg")Parámetros del método plot()
El método plot() admite varios argumentos para personalizar el resultado:
| Argumento | Tipo | Descripción | Predeterminado |
|---|---|---|---|
conf | bool | Incluye puntuaciones de confianza de detección. | True |
line_width | float | Grosor de línea de las cajas delimitadoras. Se escala con el tamaño de la imagen si es None. | None |
font_size | float | Tamaño de fuente del texto. Se escala con el tamaño de la imagen si es 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 | np.ndarray | Imagen alternativa para representar. Usa la imagen original si es None. | None |
im_gpu | torch.Tensor | Imagen acelerada por GPU para una representación más rápida de máscaras. Forma: (1, 3, 640, 640). | None |
kpt_radius | int | Radio para 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 | Superpone las cajas delimitadoras en la imagen. | True |
masks | bool | Superpone las máscaras en la imagen. | True |
probs | bool | Incluye las probabilidades de clasificación. | True |
show | bool | Muestra la imagen anotada directamente usando 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 |
color_mode | str | Especifica el modo de color, por ejemplo, 'instance' o 'class'. | 'class' |
txt_color | tuple[int, int, int] | Color de texto RGB para la caja delimitadora y la etiqueta de clasificación de imagen. | (255, 255, 255) |
Inferencia segura para hilos
Garantizar la seguridad para hilos (thread safety) durante la inferencia es crucial cuando ejecutas múltiples modelos YOLO en paralelo a través de diferentes hilos. La inferencia segura para hilos garantiza que las predicciones de cada hilo estén aisladas y no interfieran entre sí, evitando condiciones de carrera y asegurando resultados consistentes y fiables.
Al usar modelos YOLO en una aplicación multihilo, es importante instanciar objetos de modelo separados para cada hilo o emplear almacenamiento local de hilo para evitar conflictos:
Instancia un único modelo dentro de cada hilo para una inferencia segura para 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=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()Para una visión detallada de la inferencia segura para hilos con modelos YOLO e instrucciones paso a paso, consulta nuestra Guía de inferencia segura para hilos de YOLO. Esta guía te proporcionará toda la información necesaria para evitar problemas comunes y garantizar que tu inferencia multihilo funcione correctamente.
Bucle for de origen en streaming
Aquí tienes un script de Python que utiliza OpenCV (cv2) y YOLO para ejecutar la inferencia en fotogramas de vídeo. Este script asume que ya has instalado los paquetes necesarios (opencv-python y ultralytics).
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo26n.pt")
# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# Loop through the video frames
while cap.isOpened():
# Read a frame from the video
success, frame = cap.read()
if success:
# Run YOLO inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the annotated frame
cv2.imshow("YOLO Inference", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# Break the loop if the end of the video is reached
break
# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()Este script ejecutará predicciones en cada fotograma del vídeo, visualizará los resultados y los mostrará en una ventana. Puedes salir del bucle pulsando 'q'.
Preguntas frecuentes
¿Qué es Ultralytics YOLO y su modo predict para inferencia en tiempo real?
Ultralytics YOLO es un modelo de última generación para detección de objetos, segmentación y clasificación en tiempo real. Su modo predict permite a los usuarios realizar inferencias de alta velocidad en diversas fuentes de datos como imágenes, vídeos y flujos en directo. Diseñado para ofrecer rendimiento y versatilidad, también ofrece procesamiento por lotes y modos de streaming. Para más detalles sobre sus características, echa un vistazo al modo predict de Ultralytics YOLO.
¿Cómo puedo ejecutar la inferencia usando 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 la llamada model.predict(). Por ejemplo, usa 'image.jpg' para una imagen local o 'https://ultralytics.com/images/bus.jpg' para una URL. Consulta los ejemplos detallados para diversas 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 manera eficiente, puedes usar el modo de streaming configurando stream=True en el método de llamada del predictor. El modo de streaming genera un generador eficiente en memoria de objetos Results en lugar de cargar todos los fotogramas en la memoria. Para procesar vídeos largos o grandes conjuntos de datos, el modo de streaming es particularmente útil. Aprende más sobre el modo de streaming.
¿Qué argumentos de inferencia admite Ultralytics YOLO?
El método model.predict() en YOLO admite varios argumentos como conf, iou, imgsz, device y más. Estos argumentos te permiten personalizar el proceso de inferencia, configurando parámetros como umbrales de confianza, tamaño de la imagen y el dispositivo utilizado para el cálculo. Encontrarás descripciones detalladas de estos argumentos en la sección de argumentos de inferencia.
¿Cómo puedo visualizar y guardar los resultados de las predicciones de YOLO?
Después de ejecutar la inferencia con YOLO, los objetos Results contienen métodos para mostrar y guardar imágenes anotadas. Puedes usar métodos como result.show() y result.save(filename="result.jpg") para visualizar y guardar los resultados. Cualquier directorio padre faltante en la ruta del nombre del archivo se crea automáticamente (p. ej., result.save("path/to/result.jpg")). Para obtener una lista completa de estos métodos, consulta la sección de trabajar con resultados.


