Ir para o conteúdo

Cálculo de Distância usando Ultralytics YOLO11

O que é Cálculo de Distância?

Medir a distância entre dois objetos é conhecido como cálculo de distância dentro de um espaço especificado. No caso do Ultralytics YOLO11, o centróide da bounding box é empregado para calcular a distância para bounding boxes destacadas pelo usuário.



Assista: Cálculo de Distância usando Ultralytics YOLO11

Visuais

Cálculo de Distância usando Ultralytics YOLO11
Cálculo de Distância com Ultralytics YOLO11

Vantagens do Cálculo de Distância?

  • Precisão de Localização: Melhora o posicionamento espacial preciso em tarefas de visão computacional.
  • Estimativa de Tamanho: Permite a estimativa do tamanho do objeto para uma melhor compreensão contextual.
  • Compreensão de Cena: Melhora a compreensão da cena 3D para uma melhor tomada de decisão em aplicações como veículos autônomos e sistemas de vigilância.
  • Prevenção de Colisões: Permite que os sistemas detectem colisões potenciais, monitorando as distâncias entre objetos em movimento.
  • Análise Espacial: Facilita a análise das relações e interações dos objetos dentro do ambiente monitorado.
Cálculo de Distância
  • Clique em quaisquer duas caixas delimitadoras com o botão esquerdo do mouse para cálculo da distância
  • O clique direito do mouse excluirá todos os pontos desenhados
  • O clique esquerdo do mouse pode ser usado para desenhar pontos
A distância é uma estimativa
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data,
which lacks information about the object's depth.

Cálculo de Distância usando Ultralytics YOLO

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
    model="yolo11n.pt",  # path to the YOLO11 model file.
    show=True,  # display the output
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = distancecalculator(im0)

    print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

DistanceCalculation() Argumentos

Aqui está uma tabela com o DistanceCalculation argumentos:

Argumento Tipo Padrão Descrição
model str None Caminho para o arquivo do modelo Ultralytics YOLO.

Também pode utilizar vários track argumentos no DistanceCalculation solução.

Argumento Tipo Padrão Descrição
tracker str 'botsort.yaml' Especifica o algoritmo de rastreamento a ser usado, por exemplo, bytetrack.yaml ou botsort.yaml.
conf float 0.3 Define o limite de confiança para detecções; valores mais baixos permitem que mais objetos sejam rastreados, mas podem incluir falsos positivos.
iou float 0.5 Define o limite de Intersecção sobre União (IoU) para filtrar detecções sobrepostas.
classes list None Filtra os resultados por índice de classe. Por exemplo, classes=[0, 2, 3] rastreia apenas as classes especificadas.
verbose bool True Controla a exibição dos resultados de rastreamento, fornecendo uma saída visual dos objetos rastreados.
device str None Especifica o dispositivo para inferência (por exemplo, cpu, cuda:0 ou 0). Permite que os usuários selecionem entre CPU, uma GPU específica ou outros dispositivos de computação para a execução do modelo.

Além disso, os seguintes argumentos de visualização estão disponíveis:

Argumento Tipo Padrão Descrição
show bool False Se True, exibe as imagens ou vídeos anotados em uma janela. Útil para feedback visual imediato durante o desenvolvimento ou teste.
line_width None or int None Especifica a largura da linha das caixas delimitadoras. Se None, a largura da linha é ajustada automaticamente com base no tamanho da imagem. Fornece personalização visual para clareza.
show_conf bool True Exibe o score de confiança para cada detecção junto com o rótulo. Dá uma ideia da certeza do modelo para cada detecção.
show_labels bool True Exibe rótulos para cada detecção na saída visual. Fornece compreensão imediata dos objetos detectados.

Detalhes da Implementação

O DistanceCalculation A classe funciona rastreando objetos em frames de vídeo e calculando a distância Euclidiana entre os centroides das bounding boxes selecionadas. Quando você clica em dois objetos, a solução:

  1. Extrai os centroides (pontos centrais) das bounding boxes selecionadas
  2. Calcula a distância Euclidiana entre esses centroides em pixels
  3. Exibe a distância no frame com uma linha de conexão entre os objetos

A implementação usa o mouse_event_for_distance método para lidar com interações do mouse, permitindo que os usuários selecionem objetos e limpem as seleções conforme necessário. process O método lida com o processamento quadro a quadro, rastreando objetos e calculando distâncias.

Aplicações

O cálculo de distância com YOLO11 tem inúmeras aplicações práticas:

  • Análise de Varejo: Meça a proximidade do cliente aos produtos e analise a eficácia do layout da loja
  • Segurança Industrial: Monitorize distâncias de segurança entre trabalhadores e máquinas.
  • Gestão de Tráfego: Analise o espaçamento entre veículos e detete o seguimento excessivo de perto.
  • Análise Desportiva: Calcule as distâncias entre os jogadores, a bola e as posições-chave no campo.
  • Saúde: Garanta o distanciamento adequado nas áreas de espera e monitore a movimentação de pacientes
  • Robótica: Permite que os robôs mantenham distâncias adequadas de obstáculos e pessoas

FAQ

Como calculo as distâncias entre objetos usando o Ultralytics YOLO11?

Para calcular distâncias entre objetos usando Ultralytics YOLO11, você precisa identificar os centroides da caixa delimitadora dos objetos detectados. Este processo envolve a inicialização do DistanceCalculation classe da Ultralytics' solutions módulo e usando as saídas de rastreamento do modelo para calcular as distâncias.

Quais são as vantagens de usar o cálculo de distância com Ultralytics YOLO11?

Usar o cálculo de distância com o Ultralytics YOLO11 oferece várias vantagens:

  • Precisão de Localização: Fornece posicionamento espacial preciso para objetos.
  • Estimativa de Tamanho: Ajuda a estimar tamanhos físicos, contribuindo para uma melhor compreensão contextual.
  • Compreensão de Cena: Melhora a compreensão da cena 3D, auxiliando na melhoria da tomada de decisões em aplicações como direção autônoma e vigilância.
  • Processamento em Tempo Real: Realiza cálculos em tempo real, tornando-o adequado para análise de vídeo ao vivo.
  • Capacidades de Integração: Funciona perfeitamente com outras soluções YOLO11, como rastreamento de objetos e estimativa de velocidade.

Posso realizar o cálculo de distância em fluxos de vídeo em tempo real com o Ultralytics YOLO11?

Sim, você pode realizar o cálculo de distância em fluxos de vídeo em tempo real com Ultralytics YOLO11. O processo envolve a captura de quadros de vídeo usando OpenCV, executando YOLO11 detecção de objetos, e usando o DistanceCalculation classe para calcular distâncias entre objetos em frames sucessivos. Para uma implementação detalhada, consulte o Exemplo de fluxo de vídeo.

Como excluo pontos desenhados durante o cálculo da distância usando o Ultralytics YOLO11?

Para apagar os pontos desenhados durante o cálculo de distância com Ultralytics YOLO11, você pode usar o botão direito do mouse. Esta ação irá limpar todos os pontos que você desenhou. Para mais detalhes, consulte a seção de notas no exemplo de cálculo de distância.

Quais são os principais argumentos para inicializar a classe DistanceCalculation no Ultralytics YOLO11?

Os principais argumentos para inicializar o DistanceCalculation classes no Ultralytics YOLO11 incluem:

  • model: Caminho para o arquivo do modelo YOLO11.
  • tracker: Algoritmo de rastreamento a ser usado (o padrão é 'botsort.yaml').
  • conf: Limiar de confiança para detecções.
  • show: Sinalizador para exibir a saída.

Para uma lista exaustiva e valores padrão, consulte os argumentos de DistanceCalculation.



📅 Criado há 1 ano ✏️ Atualizado há 2 meses

Comentários