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 consoante a velocidade do 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

FAQ

Como posso estimar a velocidade de um objeto utilizando Ultralytics YOLOv8 ?

Estimar a velocidade do objeto com Ultralytics YOLOv8 envolve a combinação de técnicas de deteção e seguimento de objectos. Primeiro, tens de detetar objectos em cada fotograma utilizando o modelo YOLOv8 . Em seguida, rastreia esses objectos através dos fotogramas para calcular o seu movimento ao longo do tempo. Finalmente, utiliza a distância percorrida pelo objeto entre fotogramas e a taxa de fotogramas para estimar a sua velocidade.

Exemplo:

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
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("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize SpeedEstimator
speed_obj = solutions.SpeedEstimator(
    reg_pts=[(0, 360), (1280, 360)],
    names=names,
    view_img=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        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()

Para mais informações, consulta a nossa publicação oficial no blogue.

Quais são as vantagens de utilizar o Ultralytics YOLOv8 para estimar a velocidade na gestão do tráfego?

A utilização do Ultralytics YOLOv8 para estimar a velocidade oferece vantagens significativas na gestão do tráfego:

  • Segurança melhorada: Calcula com precisão as velocidades dos veículos para detetar o excesso de velocidade e melhorar a segurança rodoviária.
  • Monitorização em tempo real: Beneficia da capacidade de deteção de objectos em tempo real do YOLOv8 para monitorizar eficazmente o fluxo de tráfego e o congestionamento.
  • Escalabilidade: Implementa o modelo em várias configurações de hardware, desde dispositivos de ponta a servidores, garantindo soluções flexíveis e escaláveis para implementações em grande escala.

Para mais aplicações, vê as vantagens da estimativa de velocidade.

O YOLOv8 pode ser integrado noutras estruturas de IA, como o TensorFlow ou o PyTorch?

Sim, YOLOv8 pode ser integrado noutras estruturas de IA, como TensorFlow e PyTorch. Ultralytics suporta a exportação de modelos YOLOv8 para vários formatos, como ONNX, TensorRT e CoreML, assegurando uma interoperabilidade sem problemas com outras estruturas de ML.

Para exportar um modelo YOLOv8 para o formato ONNX :

yolo export --weights yolov8n.pt --include onnx

Sabe mais sobre a exportação de modelos no nosso guia sobre exportação.

Qual é a precisão da estimativa de velocidade utilizando Ultralytics YOLOv8 ?

A precisão da estimativa de velocidade utilizando Ultralytics YOLOv8 depende de vários factores, incluindo a qualidade do seguimento de objectos, a resolução e a taxa de fotogramas do vídeo e as variáveis ambientais. Embora o estimador de velocidade forneça estimativas fiáveis, pode não ser 100% exato devido a variações na velocidade de processamento dos fotogramas e à oclusão de objectos.

Nota: Tem sempre em conta a margem de erro e valida as estimativas com dados verídicos no terreno, sempre que possível.

Para mais sugestões de melhoria da precisão, consulta a Argumentos SpeedEstimator secção.

Porquê escolher Ultralytics YOLOv8 em vez de outros modelos de deteção de objectos como TensorFlow Object Detection API?

Ultralytics YOLOv8 oferece várias vantagens em relação a outros modelos de deteção de objectos, como a API de deteção de objectos TensorFlow :

  • Desempenho em tempo real: YOLOv8 está optimizado para deteção em tempo real, proporcionando elevada velocidade e precisão.
  • Facilidade de utilização: Concebido com uma interface fácil de utilizar, o YOLOv8 simplifica a formação e a implementação do modelo.
  • Versatilidade: Suporta várias tarefas, incluindo deteção de objectos, segmentação e estimativa de pose.
  • Comunidade e suporte: YOLOv8 é apoiado por uma comunidade ativa e uma extensa documentação, garantindo que os programadores têm os recursos de que necessitam.

Para mais informações sobre os benefícios de YOLOv8, explora a nossa página de modelos detalhados.



Criado em 2024-01-05, Atualizado em 2024-07-05
Autores: glenn-jocher (7), IvorZhu331 (1), RizwanMunawar (2), Burhan-Q (1), AyushExel (1)

Comentários