Desfocagem de objectos utilizando Ultralytics YOLO11 🚀
O que é a desfocagem de objectos?
A desfocagem de objectos com Ultralytics YOLO11 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 YOLO11 para identificar e manipular objectos numa determinada cena.
Ver: Desfocagem de objectos utilizando Ultralytics YOLO11
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.
- Focagem selectiva: YOLO11 permite uma desfocagem selectiva, permitindo aos utilizadores visar objectos específicos, assegurando um equilíbrio entre a privacidade e a retenção de informações visuais relevantes.
- Processamento em tempo real: YOLO11 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 YOLO11 Exemplo
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 | Predefinição | Descrição |
---|---|---|---|
source |
str |
'ultralytics/assets' |
Especifica a fonte de dados para inferência. Pode ser um caminho de imagem, ficheiro de vídeo, diretório, URL ou ID de dispositivo para feeds em direto. Suporta uma vasta gama de formatos e fontes, permitindo uma aplicação flexível em diferentes tipos de entrada. |
conf |
float |
0.25 |
Define o limite mínimo de confiança para as detecções. Os objectos detectados com confiança inferior a este limite serão ignorados. O ajuste deste valor pode ajudar a reduzir os falsos positivos. |
iou |
float |
0.7 |
Limiar de Intersecção sobre União (IoU) para Supressão Não Máxima (NMS). Valores mais baixos resultam em menos detecções através da eliminação de caixas sobrepostas, útil para reduzir duplicados. |
imgsz |
int or tuple |
640 |
Define o tamanho da imagem para inferência. Pode ser um único número inteiro 640 para redimensionamento quadrado ou uma tupla (altura, largura). O dimensionamento correto pode melhorar a deteção exatidão e velocidade de processamento. |
half |
bool |
False |
Permite a inferência de meia-precisão (FP16), que pode acelerar a inferência de modelos em GPUs compatíveis com um impacto mínimo na precisão. |
device |
str |
None |
Especifica o dispositivo para inferência (por exemplo, cpu , cuda:0 ou 0 ). Permite aos utilizadores selecionar entre CPU, um GPU específico, ou outros dispositivos de computação para a execução do modelo. |
batch |
int |
1 |
Especifica o tamanho do lote para inferência (só funciona quando a fonte é um diretório, ficheiro de vídeo ou .txt ficheiro). Uma maior dimensão do lote pode proporcionar um maior rendimento, reduzindo o tempo total necessário para a inferência. |
max_det |
int |
300 |
Número máximo de detecções permitidas por imagem. Limita o número total de objectos que o modelo pode detetar numa única inferência, evitando resultados excessivos em cenas densas. |
vid_stride |
int |
1 |
Passagem de fotogramas para entradas de vídeo. Permite saltar fotogramas em vídeos para acelerar o processamento à custa da resolução temporal. Um valor de 1 processa todos os fotogramas, valores mais elevados saltam fotogramas. |
stream_buffer |
bool |
False |
Determina se os quadros de entrada devem ser colocados em fila de espera para fluxos de vídeo. Se False Se `Verdadeiro', quadros antigos são descartados para acomodar novos quadros (otimizado para aplicações em tempo real). Se `Verdadeiro', enfileira novos quadros em um buffer, garantindo que nenhum quadro seja pulado, mas causará latência se o FPS da inferência for menor que o FPS do fluxo. |
visualize |
bool |
False |
Ativa a visualização das caraterísticas do modelo durante a inferência, fornecendo informações sobre o que o modelo está a "ver". Útil para depuração e interpretação de modelos. |
augment |
bool |
False |
Permite o aumento do tempo de teste (TTA) para previsões, melhorando potencialmente a robustez da deteção à custa da velocidade de inferência. |
agnostic_nms |
bool |
False |
Permite a Supressão Não Máxima (NMS) independente da classe, que funde caixas sobrepostas de classes diferentes. Útil em cenários de deteção multi-classe onde a sobreposição de classes é comum. |
classes |
list[int] |
None |
Filtra as previsões para um conjunto de IDs de classe. Apenas as detecções pertencentes às classes especificadas serão retornadas. Útil para se concentrar em objectos relevantes em tarefas de deteção multi-classe. |
retina_masks |
bool |
False |
Devolve máscaras de segmentação de alta resolução. As máscaras devolvidas (masks.data ) corresponderão ao tamanho da imagem original se estiverem activados. Se estiverem desactivados, terão o tamanho de imagem utilizado durante a inferência. |
embed |
list[int] |
None |
Especifica as camadas a partir das quais se devem extrair vectores de caraterísticas ou embeddings. Útil para tarefas a jusante como o agrupamento ou a pesquisa de semelhanças. |
project |
str |
None |
Nome do diretório do projeto onde são guardados os resultados da previsão, se save está ativado. |
name |
str |
None |
Nome da execução da previsão. Utilizado para criar um subdiretório dentro da pasta do projeto, onde os resultados da previsão são armazenados se save está ativado. |
FAQ
O que é a desfocagem de objectos com Ultralytics YOLO11 ?
A desfocagem de objectos com Ultralytics YOLO11 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. YOLO11 As capacidades de processamento em tempo real da tecnologia de desfocagem de objectos da Microsoft tornam-na adequada para aplicações que requerem proteção imediata da privacidade e ajustes selectivos da focagem.
Como posso implementar a desfocagem de objectos em tempo real utilizando YOLO11?
Para implementar a desfocagem de objectos em tempo real com YOLO11, siga o exemplo fornecido em Python . Isto implica a utilização do YOLO11 para a deteção de objectos e do OpenCV para aplicar o efeito de desfocagem. Aqui está uma versão 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()
Quais são as vantagens de utilizar Ultralytics YOLO11 para a desfocagem de objectos?
Ultralytics YOLO11 oferece várias vantagens para a desfocagem de objectos:
- Proteção da privacidade: Ocultar eficazmente informações sensíveis ou identificáveis.
- Foco seletivo: Selecione objectos específicos para desfocagem, 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, consulte a secção vantagens da desfocagem de objectos.
Posso utilizar Ultralytics YOLO11 para desfocar rostos num vídeo por motivos de privacidade?
Sim, o Ultralytics YOLO11 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. Consulte o nosso guia sobre a deteção de objectos com YOLO11 e modifique o código para se dirigir à deteção de rostos.
Como é que o YOLO11 se compara a outros modelos de deteção de objectos, como o Faster R-CNN, para a desfocagem de objectos?
Ultralytics YOLO11 O supera normalmente os 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 YOLO11 está optimizada para uma inferência rápida, o que é essencial para tarefas como a desfocagem de objectos em tempo real. Saiba mais sobre as diferenças técnicas e as métricas de desempenho na nossa documentaçãoYOLO11 .