Saltar al contenido

Desenfoque de objetos mediante Ultralytics YOLOv8 🚀

¿Qué es el desenfoque de objeto?

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



Observa: Desenfoque de objetos con Ultralytics YOLOv8

¿Ventajas del desenfoque de objetos?

  • Protección de la intimidad: 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: YOLOv8 permite el desenfoque selectivo, lo que permite a los usuarios centrarse en objetos concretos, garantizando un equilibrio entre la privacidad y la conservación de la información visual relevante.
  • Procesamiento en tiempo real: YOLOv8 La eficacia 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 YOLOv8 Ejemplo

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

# 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

Nombre Tipo Por defecto Descripción
source str 'ultralytics/assets' directorio fuente de imágenes o vídeos
conf float 0.25 umbral de confianza del objeto para la detección
iou float 0.7 umbral de intersección sobre unión (IoU) para NMS
imgsz int or tuple 640 tamaño de la imagen como escalar o lista (h, w), por ejemplo (640, 480)
half bool False utiliza media precisión (FP16)
device None or str None dispositivo en el que se va a ejecutar, es decir, cuda device=0/1/2/3 o device=cpu
max_det int 300 número máximo de detecciones por imagen
vid_stride bool False velocidad de fotogramas de vídeo
stream_buffer bool False almacenar en la memoria intermedia todos los fotogramas de la transmisión (Verdadero) o devolver el fotograma más reciente (Falso)
visualize bool False visualizar las características del modelo
augment bool False aplicar el aumento de imagen a las fuentes de predicción
agnostic_nms bool False NMS de clase agnóstica
classes list[int] None filtrar los resultados por clase, es decir, classes=0, o classes=[0,2,3]
retina_masks bool False utilizar máscaras de segmentación de alta resolución
embed list[int] None devuelve vectores/incrustaciones de características de las capas dadas

PREGUNTAS FRECUENTES

¿Qué es el desenfoque de objetos con Ultralytics YOLOv8 ?

El desenfoque de objetos con Ultralytics YOLOv8 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. YOLOv8 La capacidad de procesado en tiempo real de la función de desenfoque de objetos la hace adecuada para aplicaciones que requieren una protección inmediata de la privacidad y ajustes selectivos del enfoque.

¿Cómo puedo aplicar el desenfoque de objetos en tiempo real utilizando YOLOv8?

Para implementar el desenfoque de objetos en tiempo real con YOLOv8, sigue el ejemplo proporcionado en Python . Esto implica utilizar YOLOv8 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("yolov8n.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("YOLOv8 Blurring", im0)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

¿Qué ventajas tiene utilizar Ultralytics YOLOv8 para el desenfoque de objetos?

Ultralytics YOLOv8 ofrece varias ventajas para el desenfoque de objetos:

  • Protección de la intimidad: Ocultar eficazmente la información sensible o identificable.
  • Enfoque Selectivo: Enfoca 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, adecuado para mejorar la privacidad al instante.

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

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

Sí, Ultralytics YOLOv8 puede configurarse para detectar y desenfocar caras en los vídeos para proteger la privacidad. Entrenando o utilizando un modelo preentrenado para reconocer específicamente rostros, los resultados de la detección pueden procesarse con OpenCV para aplicar un efecto de desenfoque. Consulta nuestra guía sobre detección de objetos con YOLOv8 y modifica el código para orientarlo a la detección de caras.

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

Ultralytics YOLOv8 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 YOLOv8 está optimizada para una inferencia rápida, que es fundamental para tareas como el desenfoque de objetos en tiempo real. Obtén más información sobre las diferencias técnicas y las métricas de rendimiento en nuestra documentaciónYOLOv8 .



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

Comentarios