Salta para o conteúdo

Estimativa da velocidade utilizando Ultralytics YOLOv8 🚀

O que é a estimativa de velocidade?

A estimativa da velocidade é o processo de cálculo da taxa de movimento de um objeto num determinado contexto, frequentemente utilizado em aplicações de visão por computador. Utilizando o Ultralytics YOLOv8 pode agora calcular a velocidade de um objeto utilizando o seguimento de objectos juntamente com dados de distância e tempo, cruciais para tarefas como o tráfego e a vigilância. A precisão da estimativa de velocidade influencia diretamente a eficiência e a fiabilidade de várias aplicações, tornando-a um componente essencial para o avanço de sistemas inteligentes e processos de tomada de decisões em tempo real.



Observa: Estimativa de velocidade utilizando Ultralytics YOLOv8

Consulta o nosso blogue

Para obteres mais informações sobre a estimativa de velocidade, consulta a nossa publicação no blogue: Ultralytics YOLOv8 para estimativa de velocidade em projectos de visão computacional

Vantagens da estimativa de velocidade?

  • Controlo eficiente do tráfego: A estimativa exacta da velocidade ajuda a gerir o fluxo de tráfego, a aumentar a segurança e a reduzir o congestionamento nas estradas.
  • Navegação autónoma precisa: Nos sistemas autónomos, como os carros autónomos, uma estimativa fiável da velocidade garante uma navegação segura e precisa do veículo.
  • Segurança de vigilância melhorada: A estimativa de velocidade na análise de vigilância ajuda a identificar comportamentos invulgares ou potenciais ameaças, melhorando a eficácia das medidas de segurança.

Aplicações no mundo real

Transporte Transporte
Estimativa da velocidade na estrada utilizando Ultralytics YOLOv8 Estimativa de velocidade em pontes utilizando Ultralytics YOLOv8
Estimativa da velocidade na estrada utilizando Ultralytics YOLOv8 Estimativa de velocidade em pontes utilizando Ultralytics YOLOv8

Estimativa de velocidade utilizando YOLOv8 Exemplo

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.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))

# Video writer
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

line_pts = [(0, 360), (1280, 360)]

# Init speed-estimation obj
speed_obj = solutions.SpeedEstimator(
    reg_pts=line_pts,
    names=names,
    view_img=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    tracks = model.track(im0, persist=True, show=False)

    im0 = speed_obj.estimate_speed(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
A velocidade é estimada

A velocidade será uma estimativa e pode não ser totalmente exacta. Além disso, a estimativa pode variar dependendo da velocidade da GPU.

Argumentos SpeedEstimator

Nome Tipo Predefinição Descrição
names dict None Dicionário de nomes de classes.
reg_pts list [(20, 400), (1260, 400)] Lista dos pontos da região para a estimativa da velocidade.
view_img bool False Se pretende apresentar a imagem com anotações.
line_thickness int 2 Espessura das linhas para desenhar caixas e pistas.
region_thickness int 5 Espessura das linhas da região.
spdl_dist_thresh int 10 Limite de distância para o cálculo da velocidade.

Argumentos model.track

Nome Tipo Predefinição Descrição
source im0 None diretório de origem para imagens ou vídeos
persist bool False persistência de faixas entre fotogramas
tracker str botsort.yaml Método de rastreio 'bytetrack' ou 'botsort'
conf float 0.3 Limiar de confiança
iou float 0.5 Limiar IOU
classes list None filtra os resultados por classe, ou seja, classes=0, ou classes=[0,2,3]
verbose bool True Apresenta os resultados do rastreio de objectos


Created 2024-01-05, Updated 2024-06-10
Authors: glenn-jocher (6), IvorZhu331 (1), RizwanMunawar (2), Burhan-Q (1), AyushExel (1)

Comentários