Meet YOLO26: next-gen vision AI.

Link to this sectionPredicción de modelos con Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionIntroducción#

En el mundo del machine learning y la computer vision, el proceso de interpretar datos visuales se denomina a menudo inferencia o predicción. Ultralytics YOLO26 ofrece una potente función 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 🚀

Link to this sectionAplicaciones en el mundo real#

FabricaciónDeportesSeguridad
Detección de piezas de repuesto de vehículosDetección de jugadores de fútbolDetección de caídas de personas
Detección de piezas de repuesto de vehículosDetección de jugadores de fútbolDetección de caídas de personas

Link to this section¿Por qué usar Ultralytics YOLO para inferencia?#

Aquí tienes por qué deberías considerar el modo predict de YOLO26 para tus diversas necesidades de inferencia:

  • Versatilidad: Capaz de ejecutar inferencia 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 accuracy.
  • 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 necesidades específicas.
  • Listo para producción: Despliega modelos como endpoints de API en Ultralytics Platform con escalado automático y supervisión, o ejecuta la inferencia localmente.

Link to this sectionCaracterísticas clave del modo predict#

El modo predict de YOLO26 está diseñado para ser robusto y versátil, incluyendo:

  • 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 transmisiones de vídeo en tiempo real, el modo predict cubre tus necesidades.
  • Modo streaming: Utiliza la función de streaming para generar un generador de objetos Results eficiente en cuanto a memoria. Habilítalo configurando stream=True en el método de llamada del predictor.
  • Procesamiento por lotes: Procesa múltiples imágenes o fotogramas de vídeo en un solo lote, lo que reduce aún más el tiempo total de inferencia.
  • Fácil 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:

Predecir
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 disk

Link to this sectionFuentes de inferencia#

YOLO26 puede procesar diferentes tipos de fuentes de entrada para la inferencia, como se muestra en la tabla a continuación. Las fuentes incluyen imágenes estáticas, transmisiones de vídeo y diversos formatos de datos. La tabla también indica si cada fuente se puede utilizar 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

Usa stream=True para procesar vídeos largos o grandes conjuntos de datos para gestionar la memoria de forma 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.

FuenteEjemploTipoNotas
imagen'image.jpg'str o PathArchivo de imagen único.
URL'https://ultralytics.com/images/bus.jpg'strURL a una imagen.
captura de pantalla'screen'strCapturar 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 contiene imágenes o vídeos.
glob ✅'path/*.jpg'strPatrón glob para coincidir con múltiples archivos. Usa el carácter * como comodín.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL a un vídeo de YouTube.
stream ✅'rtsp://example.com/media.mp4'strURL para protocolos de streaming como RTSP, RTMP, TCP o una dirección IP.
multi-stream ✅'list.streams'str o PathArchivo de texto *.streams con una URL de stream por fila, es decir, 8 streams se ejecutarán con un tamaño de lote de 8.
webcam ✅0intÍndice del dispositivo de cámara conectado para ejecutar la inferencia.

A continuación, se muestran ejemplos de código para usar cada tipo de fuente:

Fuentes de predicción

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 objects

Link to this sectionArgumentos de inferencia#

model.predict() acepta múltiples argumentos que pueden pasarse durante la inferencia para anular los valores predeterminados:

Link to this sectionForma fija frente a rectángulo mínimo (rect)#

De forma predeterminada, predict utiliza rect=True, lo que habilita el relleno de rectángulo mínimo cuando es posible. La imagen se escala para ajustarse dentro de imgsz y se rellena solo hasta el múltiplo de paso 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 completo de imgsz.

Utiliza rect=False para rellenar siempre hasta el objetivo completo de imgsz. Esto se recomienda cuando necesites un tamaño de entrada fijo para que coincida con modelos exportados (ONNX, TensorRT, etc.).

imgsz como entero frente a tupla

  • Un entero imgsz=640 se convierte en un objetivo cuadrado (640, 640) tras el redondeo del paso.
  • Una tupla imgsz=(384, 672) establece un objetivo rectangular. Con rect=True y auto=True, el tensor real puede ser más pequeño que este objetivo.

Entrenamiento frente a predicción/exportación

El entrenamiento acepta solo un único entero imgsz (una lista [h, w] se fuerza al valor más grande). La predicción y la exportación aceptan tanto un entero como una tupla (height, width).

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

ArgumentoTipoPredeterminadoDescripción
sourcestr o int o NoneNoneEspecifica la fuente de datos para la inferencia. Puede ser una ruta de imagen, un archivo de vídeo, un directorio, una URL o un ID de dispositivo para transmisiones en vivo. Si se omite, se registra una advertencia y el modelo vuelve a los recursos de demostración integrados (ultralytics/assets, o una URL de demostración para OBB). Admite una amplia gama de formatos y fuentes, lo que permite una aplicación flexible en diferentes tipos de entrada.
conffloat0.25Establece 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.
ioufloat0.7Umbral de Intersección sobre Unión (IoU) para la Supresión de No Máximos (NMS). Los valores más bajos dan como resultado menos detecciones al eliminar cajas superpuestas, útil para reducir duplicados.
imgszint o tuple640Objetivo de Letterbox. Un entero da un cuadrado N×N; una tupla da (height, width). Con rect=True, el tensor real puede ser más pequeño que este objetivo debido al relleno de rectángulo mínimo. Usa rect=False para un tamaño fijo. Consulta Forma fija frente a rectángulo mínimo.
rectboolTrueSi es True, usa el relleno de rectángulo mínimo cuando sea posible (lote de la misma forma y backend admitido). Si es False, siempre rellena hasta el imgsz completo. Consulta Forma fija frente a rectángulo mínimo.
halfboolFalseHabilita la inferencia de precisión media (FP16), que puede acelerar la inferencia del modelo en GPU compatibles con un impacto mínimo en la precisión.
devicestrNoneEspecifica el dispositivo para la inferencia (por ejemplo, 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 computación para la ejecución del modelo.
batchint1Especifica el tamaño del lote para la inferencia (solo funciona cuando la fuente es un directorio, un archivo de vídeo o un archivo .txt). Un tamaño de lote mayor puede proporcionar un mayor rendimiento, reduciendo la cantidad total de tiempo requerido para la inferencia.
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 resultados excesivos en escenas densas.
vid_strideint1Paso 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, valores más altos saltan fotogramas.
stream_bufferboolFalseDetermina si se deben poner en cola los fotogramas entrantes para transmisiones de vídeo. Si es False, los fotogramas antiguos se descartan para dar cabida a nuevos fotogramas (optimizado para aplicaciones en tiempo real). Si es True, pone en cola nuevos fotogramas en un búfer, asegurando que no se salten fotogramas, pero causará latencia si los FPS de inferencia son inferiores a los FPS de la transmisión.
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.
augmentboolFalseHabilita la aumentación durante la prueba (TTA) para predicciones, mejorando potencialmente la robustez de la detección a costa de la velocidad de inferencia.
agnostic_nmsboolFalseHabilita la Supresión de No Máximos (NMS) agnóstica de 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.
classeslist[int]NoneFiltra las predicciones a un conjunto de IDs de clase. Solo se devolverán las detecciones pertenecientes 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á habilitado. Si está deshabilitado, tienen el tamaño de imagen utilizado durante la inferencia.
embedlist[int]NoneEspecifica las capas de las que extraer vectores de características o embeddings. Útil para tareas posteriores como la agrupación o la búsqueda de similitud.
projectstrNoneNombre del directorio del proyecto donde se guardan los resultados de la predicción si save está habilitado.
namestrNoneNombre 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.
streamboolFalseHabilita el procesamiento eficiente de memoria para vídeos largos o numerosas imágenes devolviendo un generador de objetos Results en lugar de cargar todos los fotogramas en la memoria a la vez.
verboseboolTrueControla si se deben mostrar registros de inferencia detallados en la terminal, proporcionando retroalimentación en tiempo real sobre el proceso de predicción.
compilebool o strFalseHabilita 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 al modo entusiasta con una advertencia si no es compatible.
end2endboolNoneSobrescribe el modo de extremo a extremo en los modelos YOLO que admiten inferencia sin NMS (YOLO26, YOLOv10). Configurarlo en False te permite ejecutar la predicción utilizando la tubería NMS tradicional, permitiéndote además hacer uso del argumento iou. Consulta la guía de Detección de extremo a extremo para más detalles.

Argumentos de visualización:

ArgumentoTipoPredeterminadoDescripción
showboolFalseSi es True, muestra las imágenes o vídeos anotados en una ventana. Útil para una retroalimentación visual inmediata durante el desarrollo o las pruebas.
saveboolFalse or TrueHabilita el guardado de las imágenes o vídeos anotados en archivos. Útil para documentación, análisis posterior o compartir resultados. El valor predeterminado es True cuando se usa la CLI y False cuando se usa en Python.
save_framesboolFalseAl 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_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. Mejora el detalle disponible para el posprocesamiento y el análisis.
save_cropboolFalseGuarda imágenes recortadas de las detecciones. Útil para la aumentación de conjuntos de datos, el análisis o la creación de conjuntos de datos enfocados para objetos específicos.
show_labelsboolTrueMuestra las 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 para cada detección junto a la etiqueta. Proporciona información sobre la certeza del modelo para cada detección.
show_boxesboolTrueDibuja 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_widthint or NoneNoneEspecifica el ancho de línea de los cuadros delimitadores. 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.

Link to this sectionFormatos de imagen y vídeo#

YOLO26 admite 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 ejemplos de comandos de predicción.

Link to this sectionImágenes#

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

Nota

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 imagenEjemplo de comando de predicciónReferencia
.avifyolo predict source=image.avifAV1 Image File Format
.bmpyolo predict source=image.bmpMicrosoft BMP File Format
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicHigh Efficiency Image Format
.heifyolo predict source=image.heifHigh Efficiency Image Format
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpeg2000yolo predict source=image.jpeg2000JPEG 2000
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP

Link to this sectionVídeos#

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

Sufijos de vídeoEjemplo de comando de predicciónReferencia
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Part 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime File Format
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM Project

Link to this sectionTrabajar con resultados#

Todas las llamadas predict() de Ultralytics devolverán una lista de objetos Results:

Resultados
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 inference

Los objetos Results tienen los siguientes atributos:

AtributoTipoDescripción
orig_imgnp.ndarrayLa imagen original como un array de NumPy.
orig_shapetupleLa forma de la imagen original en formato (altura, anchura).
boxesBoxes, optionalUn objeto Boxes que contiene las cajas delimitadoras de la detección.
masksMasks, optionalUn objeto Masks que contiene las máscaras de la detección.
probsProbs, optionalUn objeto Probs que contiene las probabilidades de cada clase para la tarea de clasificación.
keypointsKeypoints, optionalUn objeto Keypoints que contiene los puntos clave detectados para cada objeto.
obbOBB, optionalUn objeto OBB que contiene cajas delimitadoras orientadas.
semantic_maskSemanticMask, optionalUn objeto SemanticMask que contiene un mapa de clases denso por píxel.
speeddictUn diccionario de las velocidades de preprocesamiento, inferencia y posprocesamiento en milisegundos por imagen.
namesdictUn diccionario que asigna índices de clase a nombres de clase.
pathstrLa ruta al archivo de imagen.
save_dirstr, optionalDirectorio para guardar los resultados.

Link to this sectionResultados por tarea#

Cada predicción devuelve un objeto Results por imagen o fotograma. Los campos comunes anteriores siempre están disponibles, mientras que los datos de predicción específicos de la tarea se almacenan en los campos a continuación. Los tensores de coordenadas, confianza y probabilidad son torch.float32 a menos que se utilice media precisión, en cuyo caso son torch.float16. Después de result.numpy(), los tensores se convierten en arrays de NumPy con tipos de datos de NumPy coincidentes. Las máscaras de instancia son tensores binarios torch.uint8, mientras que las máscaras semánticas utilizan el tipo de datos entero práctico más pequeño para los ID de clase: torch.uint8, torch.int16 o torch.int32, dependiendo del recuento de clases.

AtributoTipoFormaDescripción
result.boxesBoxes(N)Cajas de detección.
result.boxes.datatorch.float32(N,6/7)Datos sin procesar [x1,y1,x2,y2,conf,cls], más ID de seguimiento opcional.
result.boxes.xyxytorch.float32(N,4)Cajas en píxeles xyxy.
result.boxes.conftorch.float32(N,)Puntuaciones de confianza.
result.boxes.clstorch.float32(N,)ID de clase; convertir a int para nombres.

Los objetos Results tienen los siguientes métodos:

MétodoTipo de retornoDescripción
update()NoneActualiza el objeto Results con nuevos datos como cajas, máscaras, probabilidades, obb, puntos clave o máscaras semánticas.
cpu()ResultsDevuelve una copia del objeto Results con todos los tensores movidos a la memoria CPU.
numpy()ResultsDevuelve una copia del objeto Results con todos los tensores convertidos a arrays de NumPy.
cuda()ResultsDevuelve una copia del objeto Results con todos los tensores movidos a la memoria GPU.
to()ResultsDevuelve una copia del objeto Results con los tensores movidos al dispositivo y tipo de dato especificados.
new()ResultsCrea un nuevo objeto Results con los mismos atributos de imagen, ruta, nombres y velocidad.
plot()np.ndarrayDibuja los resultados de la detección sobre una imagen BGR de entrada y devuelve la imagen anotada.
show()NoneMuestra la imagen con los resultados de la inferencia anotados.
save()strGuarda la imagen con los resultados de la inferencia anotados en un archivo y devuelve el nombre del archivo.
verbose()strDevuelve una cadena de registro por cada tarea, detallando los resultados de la detección y clasificación.
save_txt()strGuarda los resultados de la detección en un archivo de texto y devuelve la ruta al archivo guardado.
save_crop()NoneGuarda las imágenes de detección recortadas en el directorio especificado.
summary()List[Dict[str, Any]]Convierte los resultados de la inferencia a un diccionario resumido con normalización opcional.
to_df()DataFrameConvierte los resultados de la detección a un Polars DataFrame.
to_csv()strConvierte los resultados de la detección al formato CSV.
to_json()strConvierte los resultados de la detección al formato JSON.

Para más detalles, consulta la documentación de la clase Results.

Link to this sectionCajas (Boxes)#

El objeto Boxes puede utilizarse para indexar, manipular y convertir cajas delimitadoras a diferentes formatos.

Cajas (Boxes)
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 boxes

Aquí tienes una tabla con los métodos y propiedades de la clase Boxes, incluyendo su nombre, tipo y descripción:

NombreTipoDescripción
cpu()MétodoMueve el objeto a la memoria CPU.
numpy()MétodoConvierte el objeto a un array de NumPy.
cuda()MétodoMueve el objeto a la memoria CUDA.
to()MétodoMueve el objeto al dispositivo especificado.
xyxyPropiedad (torch.Tensor)Devuelve las cajas en formato xyxy.
confPropiedad (torch.Tensor)Devuelve los valores de confianza de las cajas.
clsPropiedad (torch.Tensor)Devuelve los valores de clase de las cajas.
idPropiedad (torch.Tensor)Devuelve los IDs de seguimiento 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 normalizado según el tamaño original de la imagen.
xywhnPropiedad (torch.Tensor)Devuelve las cajas en formato xywh normalizado según el tamaño original de la imagen.

Para más detalles, consulta la documentación de la clase Boxes.

Link to this sectionMáscaras#

El objeto Masks puede utilizarse para indexar, manipular y convertir máscaras a segmentos.

Máscaras
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 masks

Aquí tienes una tabla con los métodos y propiedades de la clase Masks, incluyendo su nombre, tipo y descripción:

NombreTipoDescripción
dataPropiedad (torch.Tensor)Tensor de máscara binaria torch.uint8 con forma (N,H,W) y valores 0 o 1.
cpu()MétodoDevuelve el tensor de máscaras en la memoria CPU.
numpy()MétodoDevuelve el tensor de máscaras como un array de NumPy.
cuda()MétodoDevuelve el tensor de máscaras en la memoria GPU.
to()MétodoDevuelve el tensor de máscaras con el dispositivo y tipo de dato especificados.
xynPropiedad (list[np.ndarray])Una lista de polígonos de máscara normalizados.
xyPropiedad (list[np.ndarray])Una lista de polígonos de máscara en coordenadas de píxel.

Para más detalles, consulta la documentación de la clase Masks.

Link to this sectionSemanticMask#

SemanticMask almacena un mapa de clase denso para los resultados de la segmentación semántica. A diferencia de Masks, no contiene una máscara binaria por objeto y no proporciona funciones auxiliares para polígonos.

SemanticMask
from ultralytics import YOLO

# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.semantic_mask.data)  # print the H x W class-ID map
NombreTipoDescripción
dataPropiedad (torch.Tensor)Mapa de ID de clase con forma (H,W). El tipo de dato es torch.uint8, torch.int16 o torch.int32, seleccionado según el recuento de clases.
shapePropiedad (tuple)Forma del mapa de clases, que suele coincidir con result.orig_shape.
cpu()MétodoDevuelve el tensor de la máscara semántica en la memoria CPU.
numpy()MétodoDevuelve el tensor de la máscara semántica como un array de NumPy.
cuda()MétodoDevuelve el tensor de la máscara semántica en la memoria GPU.
to()MétodoDevuelve el tensor de la máscara semántica con el dispositivo y tipo de dato especificados.

Link to this sectionPuntos clave#

El objeto Keypoints puede utilizarse para indexar, manipular y normalizar coordenadas.

Puntos clave
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 keypoints

Aquí tienes una tabla con los métodos y propiedades de la clase Keypoints, incluyendo su nombre, tipo y descripción:

NombreTipoDescripción
cpu()MétodoDevuelve el tensor de los puntos clave en la memoria CPU.
numpy()MétodoDevuelve el tensor de los puntos clave como un array de NumPy.
cuda()MétodoDevuelve el tensor de los puntos clave en la memoria GPU.
to()MétodoDevuelve el tensor de puntos clave 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íxeles representados como tensores.
confPropiedad (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.

Link to this sectionProbs#

El objeto Probs se puede usar para indexar, obtener índices top1 y top5 y puntuaciones de clasificación.

Probs
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 probabilities

Aquí tienes una tabla que resume los métodos y propiedades de la clase Probs:

NombreTipoDescripción
cpu()MétodoDevuelve una copia del tensor probs en la memoria de la CPU.
numpy()MétodoDevuelve una copia del tensor probs como un array de NumPy.
cuda()MétodoDevuelve una copia del tensor probs en la memoria de la GPU.
to()MétodoDevuelve una copia del tensor probs con el dispositivo y dtype especificados.
top1Propiedad (int)Índice de la clase top 1.
top5Propiedad (list[int])Índices de las 5 clases principales.
top1confPropiedad (torch.Tensor)Confianza de la clase top 1.
top5confPropiedad (torch.Tensor)Confianzas de las 5 clases principales.

Para más detalles, consulta la documentación de la clase Probs.

Link to this sectionOBB#

El objeto OBB se puede usar para indexar, manipular y convertir cajas delimitadoras orientadas a diferentes formatos.

OBB
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 boxes

Aquí tienes una tabla de los métodos y propiedades de la clase OBB, incluyendo su nombre, tipo y descripción:

NombreTipoDescripción
cpu()MétodoMueve el objeto a la memoria CPU.
numpy()MétodoConvierte el objeto a un array de 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 cajas.
clsPropiedad (torch.Tensor)Devuelve los valores de clase de las cajas.
idPropiedad (torch.Tensor)Devuelve los IDs de seguimiento de las cajas (si están disponibles).
xyxyPropiedad (torch.Tensor)Devuelve las cajas horizontales en formato xyxy.
xywhrPropiedad (torch.Tensor)Devuelve las cajas rotadas 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 la documentación de la clase OBB.

Link to this sectionVisualización de resultados#

El método plot() en los objetos Results facilita la visualización de las predicciones superponiendo 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 visualizarla o guardarla fácilmente.

Graficado
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")

Link to this sectionParámetros del método plot()#

El método plot() admite varios argumentos para personalizar el resultado:

ArgumentoTipoDescripciónPredeterminado
confboolIncluir las puntuaciones de confianza de detección.True
line_widthfloatGrosor de línea de las cajas delimitadoras. Se escala con el tamaño de la imagen si es None.None
font_sizefloatTamaño de fuente del texto. Se escala con el tamaño de la imagen si es None.None
fontstrNombre de la fuente para las anotaciones de texto.'Arial.ttf'
pilboolDevolver la imagen como un objeto PIL Image.False
imgnp.ndarrayImagen alternativa para dibujar. Utiliza la imagen original si es None.None
im_gputorch.TensorImagen acelerada por GPU para un trazado de máscaras más rápido. Forma: (1, 3, 640, 640).None
kpt_radiusintRadio para los puntos clave dibujados.5
kpt_lineboolConectar puntos clave con líneas.True
labelsboolIncluir etiquetas de clase en las anotaciones.True
boxesboolSuperponer cajas delimitadoras en la imagen.True
masksboolSuperponer máscaras en la imagen.True
probsboolIncluir probabilidades de clasificación.True
showboolMostrar la imagen anotada directamente usando el visor de imágenes predeterminado.False
saveboolGuardar la imagen anotada en un archivo especificado por filename.False
filenamestrRuta y nombre del archivo donde guardar la imagen anotada si save es True.None
color_modestrEspecificar el modo de color, p. ej., 'instance' o 'class'.'class'
txt_colortuple[int, int, int]Color de texto BGR para la caja delimitadora y la etiqueta de clasificación de imagen.(255, 255, 255)

Link to this sectionInferencia segura para subprocesos#

Garantizar la seguridad de los hilos durante la inferencia es fundamental 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.

Cuando utilices 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 para subprocesos

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 errores comunes y asegurar que tu inferencia multihilo se ejecute sin problemas.

Link to this sectionBucle for de fuente de 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).

Bucle for de streaming
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 presionando 'q'.

Link to this sectionFAQ#

Link to this section¿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 de instancias, segmentación semántica y clasificación en tiempo real. Su modo predict permite a los usuarios realizar inferencia de alta velocidad en varias fuentes de datos, como imágenes, vídeos y transmisiones 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 características, echa un vistazo al modo predict de Ultralytics YOLO.

Link to this section¿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 streams. 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. Echa un vistazo a los ejemplos detallados para varias fuentes de inferencia en la documentación.

Link to this section¿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 estableciendo stream=True en el método de llamada del predictor. El modo streaming genera un generador de objetos Results eficiente en memoria en lugar de cargar todos los fotogramas en la memoria. Para procesar vídeos largos o grandes conjuntos de datos, el modo streaming es especialmente útil. Aprende más sobre el modo streaming.

Link to this section¿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, estableciendo parámetros como umbrales de confianza, tamaño de imagen y el dispositivo utilizado para el cálculo. Encontrarás descripciones detalladas de estos argumentos en la sección argumentos de inferencia.

Link to this section¿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 que falte en la ruta del nombre de 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 trabajar con resultados.

Comentarios