Recorte de objetos mediante Ultralytics YOLO11
¿Qué es el recorte de objetos?
El recorte de objetos con Ultralytics YOLO11 consiste en aislar y extraer objetos específicos detectados en una imagen o un vídeo. Las capacidades del modelo YOLO11 se utilizan para identificar y delinear con precisión los objetos, lo que permite un recorte preciso para su posterior análisis o manipulación.
Observa: Recorte de objetos mediante Ultralytics YOLO
¿Ventajas del recorte de objetos?
- Análisis focalizado: YOLO11 facilita el recorte focalizado de objetos, lo que permite examinar o procesar en profundidad elementos individuales de una escena.
- Reducción del volumen de datos: Al extraer sólo los objetos relevantes, el recorte de objetos ayuda a minimizar el tamaño de los datos, haciéndolos eficientes para su almacenamiento, transmisión o tareas computacionales posteriores.
- Mayor precisión: la precisión de detección de objetos de YOLO11 garantiza que los objetos recortados mantengan sus relaciones espaciales, preservando la integridad de la información visual para un análisis detallado.
Visuales
Equipaje de aeropuerto |
---|
Recorte de maletas en la cinta transportadora de un aeropuerto mediante Ultralytics YOLO11 |
Recorte de objetos mediante YOLO11 Ejemplo
import os
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
model = YOLO("yolo11n.pt")
names = model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
os.mkdir(crop_dir_name)
# Video writer
video_writer = cv2.VideoWriter("object_cropping_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
idx = 0
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
results = model.predict(im0, show=False)
boxes = results[0].boxes.xyxy.cpu().tolist()
clss = results[0].boxes.cls.cpu().tolist()
annotator = Annotator(im0, line_width=2, example=names)
if boxes is not None:
for box, cls in zip(boxes, clss):
idx += 1
annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])
crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_obj)
cv2.imshow("ultralytics", im0)
video_writer.write(im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Argumentos model.predict
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 o 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. |
PREGUNTAS FRECUENTES
¿Qué es el recorte de objetos en Ultralytics YOLO11 y cómo funciona?
El recorte de objetos mediante Ultralytics YOLO11 consiste en aislar y extraer objetos específicos de una imagen o vídeo basándose en las capacidades de detección de YOLO11. Este proceso permite centrar el análisis, reducir el volumen de datos y mejorar la precisión aprovechando YOLO11 para identificar objetos con gran precisión y recortarlos en consecuencia. Para ver un tutorial detallado, consulte el ejemplo de recorte de objetos.
¿Por qué debería utilizar Ultralytics YOLO11 para el recorte de objetos en lugar de otras soluciones?
Ultralytics YOLO11 destaca por su precisión, velocidad y facilidad de uso. Permite una detección y un recorte de objetos detallados y precisos, esenciales para análisis focalizados y aplicaciones que requieren una gran integridad de los datos. Además, YOLO11 se integra perfectamente con herramientas como OpenVINO y TensorRT para implantaciones que requieren capacidades en tiempo real y optimización en hardware diverso. Explore las ventajas en la guía sobre exportación de modelos.
¿Cómo puedo reducir el volumen de datos de mi conjunto de datos mediante el recorte de objetos?
Si utiliza Ultralytics YOLO11 para recortar sólo los objetos relevantes de sus imágenes o vídeos, podrá reducir significativamente el tamaño de los datos, haciéndolos más eficientes para su almacenamiento y procesamiento. Este proceso consiste en entrenar el modelo para que detecte objetos específicos y, a continuación, utilizar los resultados para recortar y guardar sólo estas partes. Para obtener más información sobre cómo aprovechar las posibilidades de Ultralytics YOLO11 , consulte nuestra guía de inicio rápido.
¿Puedo utilizar Ultralytics YOLO11 para el análisis de vídeo en tiempo real y el recorte de objetos?
Sí, Ultralytics YOLO11 puede procesar secuencias de vídeo en tiempo real para detectar y recortar objetos de forma dinámica. Las capacidades de inferencia de alta velocidad del modelo lo hacen ideal para aplicaciones en tiempo real como la vigilancia, el análisis deportivo y los sistemas de inspección automatizados. Consulta los modos de seguimiento y predicción para saber cómo implementar el procesamiento en tiempo real.
¿Cuáles son los requisitos de hardware para ejecutar eficazmente YOLO11 para el recorte de objetos?
Ultralytics YOLO11 está optimizado tanto para entornos CPU como GPU , pero para lograr un rendimiento óptimo, especialmente para inferencia en tiempo real o de gran volumen, se recomienda un GPU dedicado (por ejemplo, NVIDIA Tesla, serie RTX). Para el despliegue en dispositivos ligeros, considere el uso de CoreML para iOS o TFLite para Android. Encontrará más información sobre los dispositivos y formatos compatibles en nuestras opciones de despliegue de modelos.