Salta para o conteúdo

Desfocagem de objectos utilizando Ultralytics YOLOv8 🚀

O que é a desfocagem de objectos?

Desfocagem de objectos com Ultralytics YOLOv8 envolve a aplicação de um efeito de desfocagem a objectos específicos detectados numa imagem ou vídeo. Isto pode ser conseguido utilizando as capacidades do modelo YOLOv8 para identificar e manipular objectos numa determinada cena.



Observa: Desfocagem de objectos utilizando Ultralytics YOLOv8

Vantagens da desfocagem de objectos?

  • Proteção da privacidade: A desfocagem de objectos é uma ferramenta eficaz para salvaguardar a privacidade, ocultando informações sensíveis ou pessoalmente identificáveis em imagens ou vídeos.
  • Foco seletivo: YOLOv8 permite uma desfocagem selectiva, permitindo aos utilizadores visar objectos específicos, assegurando um equilíbrio entre privacidade e retenção de informação visual relevante.
  • Processamento em tempo real: YOLOv8 A eficiência do software permite a desfocagem de objectos em tempo real, tornando-o adequado para aplicações que requerem melhorias de privacidade em tempo real em ambientes dinâmicos.

Desfocagem de objectos utilizando YOLOv8 Exemplo

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

Nome Tipo Predefinição Descrição
source str 'ultralytics/assets' diretório de origem para imagens ou vídeos
conf float 0.25 limiar de confiança do objeto para deteção
iou float 0.7 limiar de intersecção sobre a união (IoU) para os NMS
imgsz int or tuple 640 tamanho da imagem como escalar ou lista (h, w), ou seja, (640, 480)
half bool False utiliza meia precisão (FP16)
device None or str None dispositivo a ser executado, ou seja, cuda device=0/1/2/3 ou device=cpu
max_det int 300 número máximo de detecções por imagem
vid_stride bool False taxa de fotogramas do vídeo
stream_buffer bool False guarda todos os fotogramas de transmissão (True) ou devolve o fotograma mais recente (False)
visualize bool False visualiza as características do modelo
augment bool False aplica o aumento de imagem a fontes de previsão
agnostic_nms bool False NMS com diagnóstico de classe
classes list[int] None filtra os resultados por classe, ou seja, classes=0, ou classes=[0,2,3]
retina_masks bool False utiliza máscaras de segmentação de alta resolução
embed list[int] None devolve vectores de características/embeddings de determinadas camadas

FAQ

O que é a desfocagem de objectos com Ultralytics YOLOv8 ?

A desfocagem de objectos com Ultralytics YOLOv8 envolve a deteção automática e a aplicação de um efeito de desfocagem a objectos específicos em imagens ou vídeos. Esta técnica aumenta a privacidade, ocultando informações sensíveis e mantendo os dados visuais relevantes. YOLOv8 A capacidade de processamento em tempo real do software da Microsoft torna-o adequado para aplicações que requerem proteção imediata da privacidade e ajustes selectivos de focagem.

Como posso implementar a desfocagem de objectos em tempo real utilizando YOLOv8?

Para implementar a desfocagem de objectos em tempo real com YOLOv8, segue o exemplo fornecido em Python . Para isso, utiliza o YOLOv8 para a deteção de objectos e o OpenCV para aplicar o efeito de desfocagem. Aqui tens uma versão 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()

Quais são as vantagens de utilizar Ultralytics YOLOv8 para a desfocagem de objectos?

Ultralytics YOLOv8 oferece várias vantagens para a desfocagem de objectos:

  • Proteção da privacidade: Oculta eficazmente informações sensíveis ou identificáveis.
  • Foco seletivo: Desfoca objectos específicos, mantendo o conteúdo visual essencial.
  • Processamento em tempo real: Executa a desfocagem de objectos de forma eficiente em ambientes dinâmicos, adequada para melhorias instantâneas da privacidade.

Para aplicações mais detalhadas, consulta a secção Vantagens da desfocagem de objectos.

Posso utilizar Ultralytics YOLOv8 para desfocar rostos num vídeo por motivos de privacidade?

Sim, o Ultralytics YOLOv8 pode ser configurado para detetar e desfocar rostos em vídeos para proteger a privacidade. Ao treinar ou usar um modelo pré-treinado para reconhecer especificamente rostos, os resultados da deteção podem ser processados com o OpenCV para aplicar um efeito de desfoque. Consulta o nosso guia sobre deteção de objectos com YOLOv8 e modifica o código para a deteção de rostos.

Como é que o YOLOv8 se compara a outros modelos de deteção de objectos, como o Faster R-CNN, para a desfocagem de objectos?

Ultralytics YOLOv8 O supera modelos como o Faster R-CNN em termos de velocidade, tornando-o mais adequado para aplicações em tempo real. Embora ambos os modelos ofereçam uma deteção precisa, a arquitetura do YOLOv8 está optimizada para uma inferência rápida, o que é essencial para tarefas como a desfocagem de objectos em tempo real. Sabe mais sobre as diferenças técnicas e as métricas de desempenho na nossa documentaçãoYOLOv8 .



Criado em 2024-01-09, Atualizado em 2024-07-05
Autores: glenn-jocher (6), RizwanMunawar (1), IvorZhu331 (1), AyushExel (1)

Comentários