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)