Saltar para o conteúdo

Cálculo da distância utilizando Ultralytics YOLO11

O que é o cálculo da distância?

A medição da distância entre dois objectos é conhecida como cálculo de distância dentro de um determinado espaço. No caso do Ultralytics YOLO11o centróide da caixa delimitadora é utilizado para calcular a distância das caixas delimitadoras destacadas pelo utilizador.



Ver: Cálculo da distância utilizando Ultralytics YOLO11

Visuais

Cálculo da distância utilizando Ultralytics YOLO11
Ultralytics YOLO11 Cálculo da distância

Vantagens do cálculo da distância?

  • Precisão de localização: Melhora o posicionamento espacial exato em tarefas de visão por computador.
  • Estimativa de tamanho: Permite estimar o tamanho do objeto para uma melhor compreensão contextual.
  • Compreensão de cenas: Melhora a compreensão de cenas 3D para uma melhor tomada de decisões em aplicações como veículos autónomos e sistemas de vigilância.
  • Prevenção de colisões: Permite que os sistemas detectem potenciais colisões através da monitorização das distâncias entre objectos em movimento.
  • Análise espacial: Facilita a análise das relações e interações entre objectos no ambiente monitorizado.
Cálculo da distância
  • Clique em quaisquer duas caixas delimitadoras com o botão esquerdo do rato para calcular a distância
  • O clique com o botão direito do rato elimina todos os pontos desenhados
  • O clique esquerdo do rato pode ser utilizado para desenhar pontos
A distância é estimada
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 da distância utilizando o 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 os DistanceCalculation argumentos:

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

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

Argumento Tipo Predefinição Descrição
tracker str 'botsort.yaml' Especifica o algoritmo de seguimento a utilizar, por exemplo, bytetrack.yaml ou botsort.yaml.
conf float 0.3 Define o limiar de confiança para as detecções; valores mais baixos permitem o seguimento de mais objectos, mas podem incluir falsos positivos.
iou float 0.5 Define o limiar 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] só rastreia as classes especificadas.
verbose bool True Controla a apresentação dos resultados do seguimento, fornecendo uma saída visual dos objectos seguidos.
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.

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

Argumento Tipo Predefinição Descrição
show bool False Se Trueapresenta as imagens ou vídeos anotados numa 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 NoneA largura da linha é ajustada automaticamente com base no tamanho da imagem. Proporciona uma personalização visual para maior clareza.

Detalhes de implementação

O DistanceCalculation funciona através do rastreio de objectos em fotogramas de vídeo e do cálculo da distância euclidiana entre os centróides das caixas delimitadoras selecionadas. Quando se clica em dois objectos, a solução:

  1. Extrai os centróides (pontos centrais) das caixas delimitadoras selecionadas
  2. Calcula a distância euclidiana entre estes centróides em pixéis
  3. Apresenta a distância na moldura com uma linha de ligação entre os objectos

A implementação utiliza o mouse_event_for_distance para lidar com as interações do rato, permitindo aos utilizadores selecionar objectos e limpar selecções conforme necessário. O método process trata do processamento fotograma a fotograma, do seguimento dos objectos e do cálculo das distâncias.

Aplicações

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

  • Análise de retalho: Medir a proximidade do cliente aos produtos e analisar a eficácia da disposição da loja
  • Segurança industrial: Monitorizar as distâncias de segurança entre trabalhadores e máquinas
  • Gestão do tráfego: Analisar o espaçamento entre veículos e detetar a colagem de veículos
  • Análise desportiva: Calcular distâncias entre jogadores, a bola e posições-chave no campo
  • Cuidados de saúde: Assegurar o distanciamento adequado nas áreas de espera e monitorizar o movimento dos doentes
  • Robótica: Permitir que os robots mantenham distâncias adequadas em relação a obstáculos e pessoas

FAQ

Como calcular as distâncias entre objectos utilizando Ultralytics YOLO11 ?

Para calcular distâncias entre objectos utilizando Ultralytics YOLO11Para identificar os centróides da caixa delimitadora dos objectos detectados. Este processo envolve a inicialização do DistanceCalculation classe de Ultralytics' solutions e utilizando os resultados de seguimento do modelo para calcular as distâncias.

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

A utilização do cálculo da distância com Ultralytics YOLO11 oferece várias vantagens:

  • Precisão de localização: Fornece um posicionamento espacial preciso para os objectos.
  • Estimativa de tamanho: Ajuda a estimar tamanhos físicos, contribuindo para uma melhor compreensão do contexto.
  • Compreensão de cenas: Melhora a compreensão de cenas 3D, ajudando a melhorar a tomada de decisões em aplicações como a condução autónoma e a vigilância.
  • Processamento em tempo real: Efectua cálculos em tempo real, tornando-o adequado para análise de vídeo em direto.
  • Capacidades de integração: Funciona na perfeição com outras soluções YOLO11 , como o seguimento de objectos e a estimativa de velocidade.

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

Sim, pode efetuar o cálculo da distância em fluxos de vídeo em tempo real com Ultralytics YOLO11 . O processo envolve a captura de fotogramas de vídeo utilizando OpenCV, a correr YOLO11 deteção de objectose utilizando o DistanceCalculation para calcular as distâncias entre objectos em fotogramas sucessivos. Para uma implementação detalhada, consulte a classe exemplo de fluxo de vídeo.

Como é que elimino os pontos desenhados durante o cálculo da distância utilizando Ultralytics YOLO11 ?

Para apagar os pontos desenhados durante o cálculo da distância com Ultralytics YOLO11 , pode utilizar o botão direito do rato. Esta ação irá apagar todos os pontos que desenhou. Para mais detalhes, consulte a secção de notas sob o exemplo de cálculo de distância.

Quais são os argumentos chave para inicializar a classe DistanceCalculation em Ultralytics YOLO11 ?

Os principais argumentos para inicializar o DistanceCalculation classe em Ultralytics YOLO11 incluem:

  • model: Caminho para o ficheiro do modelo YOLO11 .
  • tracker: Algoritmo de rastreio a utilizar (a predefinição é 'botsort.yaml').
  • conf: Limiar de confiança para as detecções.
  • show: Sinalizador para visualizar a saída.

Para uma lista exaustiva e valores por defeito, consulte os argumentos de DistanceCalculation.

📅C riado há 1 ano ✏️ Atualizado há 6 dias

Comentários