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 |
---|
![]() |
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:
- Extrai os centroides (pontos centrais) das bounding boxes selecionadas
- Calcula a distância Euclidiana entre esses centroides em pixels
- 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.