Estimativa da velocidade utilizando Ultralytics YOLO11 🚀
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 Ultralytics YOLO11 é agora possível calcular a velocidade dos objectos utilizando o seguimento de objectos juntamente com dados de distância e tempo, o que é crucial para tarefas como a monitorização e vigilância do tráfego. A precisão da estimativa da velocidade influencia diretamente a eficiência e a fiabilidade de várias aplicações, tornando-a um componente essencial para o avanço dos sistemas inteligentes e dos processos de tomada de decisões em tempo real.
Ver: Estimativa de velocidade utilizando Ultralytics YOLO11
Ver o nosso blogue
Para obter informações mais aprofundadas sobre a estimativa de velocidade, consulte a nossa publicação no blogue: Ultralytics YOLO11 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: Em sistemas autónomos, como os automóveis 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 YOLO11 | Estimativa da velocidade numa ponte utilizando Ultralytics YOLO11 |
A velocidade é uma estimativa
A velocidade será uma estimativa e pode não ser totalmente exacta. Além disso, a estimativa pode variar dependendo da velocidade GPU e de factores ambientais.
Estimativa de velocidade utilizando 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("speed_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# speed region points
speed_region = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
# Initialize speed estimation object
speedestimator = solutions.SpeedEstimator(
show=True, # display the output
model="yolo11n.pt", # path to the YOLO11 model file.
region=speed_region, # pass region points
# classes=[0, 2], # estimate speed of specific classes.
# line_width=2, # adjust the line width for bounding boxes
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = speedestimator(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
SpeedEstimator
Argumentos
Aqui está uma tabela com os SpeedEstimator
argumentos:
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
model |
str |
None |
Caminho para o ficheiro do modelo Ultralytics YOLO . |
region |
list |
[(20, 400), (1260, 400)] |
Lista de pontos que definem a região de contagem. |
O SpeedEstimator
permite a utilização de track
parâmetros:
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, são suportadas as seguintes opções de visualização:
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
show |
bool |
False |
Se True apresenta 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 None A largura da linha é ajustada automaticamente com base no tamanho da imagem. Proporciona uma personalização visual para maior clareza. |
FAQ
Como posso estimar a velocidade de um objeto utilizando Ultralytics YOLO11 ?
Estimar a velocidade do objeto com Ultralytics YOLO11 envolve a combinação de técnicas de deteção e seguimento de objectos. Primeiro, é necessário detetar objectos em cada fotograma utilizando o modelo YOLO11 . Em seguida, rastreie esses objectos através dos fotogramas para calcular o seu movimento ao longo do tempo. Por fim, utilize a distância percorrida pelo objeto entre fotogramas e a taxa de fotogramas para estimar a sua velocidade.
Exemplo:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.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
speedestimator = solutions.SpeedEstimator(
region=[(0, 360), (1280, 360)],
model="yolo11n.pt",
show=True,
)
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
results = speedestimator(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Para mais informações, consulte a nossa publicação oficial no blogue.
Quais são as vantagens da utilização do Ultralytics YOLO11 para a estimativa da velocidade na gestão do tráfego?
A utilização de Ultralytics YOLO11 para a estimativa da velocidade oferece vantagens significativas na gestão do tráfego:
- Segurança melhorada: Estimativa exacta das velocidades dos veículos para detetar o excesso de velocidade e melhorar a segurança rodoviária.
- Monitorização em tempo real: Beneficie da capacidade de deteção de objectos em tempo real do YOLO11 para monitorizar eficazmente o fluxo de tráfego e o congestionamento.
- Escalabilidade: Implementar 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, ver vantagens da estimativa de velocidade.
O YOLO11 pode ser integrado com outras estruturas de IA como TensorFlow ou PyTorch?
Sim, YOLO11 pode ser integrado noutras estruturas de IA como o TensorFlow e PyTorch. Ultralytics oferece suporte para exportar modelos YOLO11 para vários formatos, como ONNX, TensorRTe CoreMLgarantindo uma interoperabilidade harmoniosa com outros quadros de ML.
Para exportar um modelo YOLO11 para o formato ONNX :
Saiba mais sobre a exportação de modelos no nosso guia sobre exportação.
Qual é a precisão da estimativa de velocidade utilizando Ultralytics YOLO11 ?
A precisão da estimativa de velocidade utilizando Ultralytics YOLO11 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: Ter sempre em conta a margem de erro e validar as estimativas com dados verídicos no terreno, sempre que possível.
Para mais sugestões de melhoria da precisão, consulte o Argumentos SpeedEstimator
secção.