Ir al contenido

Desenfoque de objetos usando Ultralytics YOLO11 🚀

¿Qué es el desenfoque de objetos?

El desenfoque de objetos con Ultralytics YOLO11 consiste en aplicar un efecto de desenfoque a determinados objetos detectados en una imagen o vídeo. Esto puede lograrse utilizando las capacidades del modelo YOLO11 para identificar y manipular objetos dentro de una escena determinada.



Observa: Desenfoque de objetos con Ultralytics YOLO11

¿Ventajas del desenfoque de objetos?

  • Protección de la privacidad: El desenfoque de objetos es una herramienta eficaz para salvaguardar la privacidad ocultando información sensible o de identificación personal en imágenes o vídeos.
  • Enfoque selectivo: YOLO11 permite el desenfoque selectivo, lo que permite a los usuarios centrarse en objetos específicos, garantizando un equilibrio entre la privacidad y la conservación de la información visual relevante.
  • Procesamiento en tiempo real: YOLO11 La eficiencia de 's permite el desenfoque de objetos en tiempo real, por lo que es adecuado para aplicaciones que requieren mejoras de privacidad sobre la marcha en entornos dinámicos.

Desenfoque de objetos mediante YOLO11 Ejemplo

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

# Blur ratio
blur_ratio = 50

# Video writer
video_writer = cv2.VideoWriter("object_blurring_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

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):
            annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])

            obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
            blur_obj = cv2.blur(obj, (blur_ratio, blur_ratio))

            im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])] = blur_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 or tuple 640 Define el tamaño de la imagen para la inferencia. Puede ser un único número entero 640 para el redimensionamiento cuadrado o una tupla (alto, ancho). Un tamaño adecuado puede mejorar la detección precisión y la velocidad de procesamiento.
half bool False Permite la inferencia de media precisión (FP16), lo que puede acelerar la inferencia del modelo en las GPU compatibles con un impacto mínimo en la precisión.
device str None Especifica el dispositivo para la inferencia (por ejemplo, cpu, cuda:0 o 0). Permite a los usuarios seleccionar entre CPU, un GPU específico u otros dispositivos de cálculo para la ejecución del modelo.
batch int 1 Especifica el tamaño del lote para la inferencia (sólo funciona cuando la fuente es un directorio, un archivo de vídeo o .txt archivo). Un tamaño de lote mayor puede proporcionar un mayor rendimiento, acortando el tiempo total necesario para la inferencia.
max_det int 300 Número máximo de detecciones permitidas por imagen. Limita el número total de objetos que el modelo puede detectar en una sola inferencia, evitando salidas excesivas en escenas densas.
vid_stride int 1 Salto de fotogramas para entradas de vídeo. Permite saltar fotogramas en los vídeos para acelerar el procesamiento a costa de la resolución temporal. Un valor de 1 procesa cada fotograma, valores superiores omiten fotogramas.
stream_buffer bool False Determina si se ponen en cola los fotogramas entrantes para los flujos de vídeo. Si FalseSi `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 desenfoque de objetos con Ultralytics YOLO11 ?

El desenfoque de objetos con Ultralytics YOLO11 consiste en detectar y aplicar automáticamente un efecto de desenfoque a objetos específicos en imágenes o vídeos. Esta técnica mejora la privacidad ocultando información sensible y conservando los datos visuales relevantes. YOLO11 La capacidad de procesamiento en tiempo real de la cámara la hace idónea para aplicaciones que requieren una protección inmediata de la privacidad y ajustes selectivos del enfoque.

¿Cómo puedo implementar el desenfoque de objetos en tiempo real utilizando YOLO11?

Para implementar el desenfoque de objetos en tiempo real con YOLO11, siga el ejemplo proporcionado Python . Esto implica utilizar YOLO11 para la detección de objetos y OpenCV para aplicar el efecto de desenfoque. Aquí tienes una versión simplificada:

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break

    results = model.predict(im0, show=False)
    for box in results[0].boxes.xyxy.cpu().tolist():
        obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
        im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])] = cv2.blur(obj, (50, 50))

    cv2.imshow("YOLO11 Blurring", im0)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

¿Cuáles son las ventajas de utilizar Ultralytics YOLO11 para el desenfoque de objetos?

Ultralytics YOLO11 ofrece varias ventajas para el desenfoque de objetos:

  • Protección de la intimidad: Ocultar eficazmente la información sensible o identificable.
  • Enfoque selectivo: Enfoque objetos específicos para difuminarlos, manteniendo el contenido visual esencial.
  • Procesamiento en tiempo real: Ejecuta el desenfoque de objetos de forma eficiente en entornos dinámicos, apto para mejoras instantáneas de la privacidad.

Para aplicaciones más detalladas, consulte la sección Ventajas del desenfoque de objetos.

¿Puedo utilizar Ultralytics YOLO11 para difuminar las caras en un vídeo por motivos de privacidad?

Sí, Ultralytics YOLO11 puede configurarse para detectar y difuminar rostros en vídeos para proteger la privacidad. Mediante el entrenamiento o el uso de un modelo pre-entrenado para reconocer específicamente las caras, los resultados de la detección pueden ser procesados con OpenCV para aplicar un efecto de desenfoque. Consulte nuestra guía sobre detección de objetos con YOLO11 y modifique el código para orientarlo a la detección de caras.

¿Cómo se compara YOLO11 con otros modelos de detección de objetos como Faster R-CNN para el desenfoque de objetos?

Ultralytics YOLO11 suele superar en velocidad a modelos como Faster R-CNN, lo que lo hace más adecuado para aplicaciones en tiempo real. Aunque ambos modelos ofrecen una detección precisa, la arquitectura de YOLO11 está optimizada para la inferencia rápida, que es fundamental para tareas como el desenfoque de objetos en tiempo real. Obtenga más información sobre las diferencias técnicas y las métricas de rendimiento en nuestra documentación deYOLO11 .

Creado hace 11 meses ✏️ Actualizado hace 2 meses

Comentarios