Saltar al contenido

Recorte de objetos mediante Ultralytics YOLOv8

驴Qu茅 es el recorte de objetos?

El recorte de objetos con Ultralytics YOLOv8 consiste en aislar y extraer objetos espec铆ficos detectados de una imagen o v铆deo. Las capacidades del modelo YOLOv8 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 YOLOv8

驴Ventajas del recorte de objetos?

  • An谩lisis focalizado: YOLOv8 facilita el recorte focalizado de objetos, lo que permite examinar o procesar en profundidad elementos individuales de una escena.
  • Volumen de datos reducido: 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.
  • Precisi贸n mejorada: la precisi贸n de detecci贸n de objetos de YOLOv8 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
Cinta transportadora en el aeropuerto Recorte de maletas utilizando Ultralytics YOLOv8
Recorte de maletas en la cinta transportadora de un aeropuerto utilizando Ultralytics YOLOv8

Recorte de objetos mediante YOLOv8 Ejemplo

import os

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolov8n.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 transmisiones en directo. Admite una amplia gama de formatos y fuentes, lo que permite una aplicaci贸n flexible en distintos 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 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 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 un redimensionamiento cuadrado o una tupla (alto, ancho). Un tama帽o adecuado puede mejorar la precisi贸n de la detecci贸n y la velocidad de procesamiento.
half bool False Permite la inferencia de media precisi贸n (FP16), que puede acelerar la inferencia del modelo en las GPU compatibles con un impacto m铆nimo en la precisi贸n.
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.
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 todos los fotogramas deben almacenarse en la memoria intermedia al procesar secuencias de v铆deo (True), o si el modelo debe devolver el fotograma m谩s reciente (False). 脷til para aplicaciones en tiempo real.
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 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 Activa la Supresi贸n No M谩xima (NMS) agn贸stica de clases, que fusiona las cajas superpuestas de clases diferentes. 脷til en escenarios de detecci贸n multiclase en los que el solapamiento de clases es habitual.
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. 脷til para centrarse en objetos relevantes en tareas de detecci贸n multiclase.
retina_masks bool False Utiliza m谩scaras de segmentaci贸n de alta resoluci贸n si est谩n disponibles en el modelo. Esto puede mejorar la calidad de la m谩scara para las tareas de segmentaci贸n, proporcionando detalles m谩s finos.
embed list[int] None Especifica las capas de las que extraer vectores de caracter铆sticas o incrustaciones. 脷til para tareas posteriores como la agrupaci贸n o la b煤squeda de similitudes.

PREGUNTAS FRECUENTES

驴Qu茅 es el recorte de objetos en Ultralytics YOLOv8 y c贸mo funciona?

El recorte de objetos mediante Ultralytics YOLOv8 consiste en aislar y extraer objetos concretos de una imagen o v铆deo bas谩ndose en las capacidades de detecci贸n de YOLOv8. Este proceso permite centrar el an谩lisis, reducir el volumen de datos y mejorar la precisi贸n aprovechando YOLOv8 para identificar objetos con gran precisi贸n y recortarlos en consecuencia. Para ver un tutorial detallado, consulta el ejemplo de recorte de objetos.

驴Por qu茅 deber铆a utilizar Ultralytics YOLOv8 para el recorte de objetos en lugar de otras soluciones?

Ultralytics YOLOv8 destaca por su precisi贸n, velocidad y facilidad de uso. Permite la detecci贸n y el recorte detallados y precisos de objetos, esenciales para los an谩lisis focalizados y las aplicaciones que necesitan una gran integridad de los datos. Adem谩s, YOLOv8 se integra perfectamente con herramientas como OpenVINO y TensorRT para implantaciones que requieren capacidades en tiempo real y optimizaci贸n en hardware diverso. Explora las ventajas en la gu铆a sobre exportaci贸n de modelos.

驴C贸mo puedo reducir el volumen de datos de mi conjunto de datos utilizando el recorte de objetos?

Utilizando Ultralytics YOLOv8 para recortar s贸lo los objetos relevantes de tus im谩genes o v铆deos, puedes reducir significativamente el tama帽o de los datos, haci茅ndolos m谩s eficientes para su almacenamiento y procesamiento. Este proceso implica entrenar el modelo para detectar objetos espec铆ficos y luego utilizar los resultados para recortar y guardar s贸lo estas partes. Para m谩s informaci贸n sobre c贸mo explotar las capacidades de Ultralytics YOLOv8 , visita nuestra gu铆a de inicio r谩pido.

驴Puedo utilizar Ultralytics YOLOv8 para el an谩lisis de v铆deo en tiempo real y el recorte de objetos?

S铆, Ultralytics YOLOv8 puede procesar secuencias de v铆deo en tiempo real para detectar y recortar objetos din谩micamente. 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. Echa un vistazo a 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 YOLOv8 para el recorte de objetos?

Ultralytics YOLOv8 est谩 optimizado tanto para entornos CPU como GPU , pero para conseguir un rendimiento 贸ptimo, especialmente para la 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, considera el uso de CoreML para iOS o TFLite para Android. Puedes encontrar m谩s detalles sobre los dispositivos y formatos compatibles en nuestras opciones de despliegue de modelos.



Creado 2024-01-09, Actualizado 2024-07-05
Autores: glenn-jocher (8), RizwanMunawar (2), IvorZhu331 (1), AyushExel (1)

Comentarios