Yolo Vision Shenzhen
Shenzhen
Junte-se agora

Ultralytics YOLOv8 para estimativa de velocidade em projectos de visão computacional

Abirami Vina

Leitura de 5 minutos

23 de maio de 2024

Descubra como o modelo Ultralytics YOLOv8 pode ser utilizado para estimar a velocidade nos seus projectos de visão computacional. Experimente você mesmo com um exemplo simples de codificação.

Provavelmente todos já vimos placas de limite de velocidade nas estradas. Alguns de nós podem até ter recebido uma notificação automática de violação do limite de velocidade por correio ou e-mail. Os sistemas de gerenciamento de tráfego de inteligência artificial (IA) podem sinalizar violações de velocidade automaticamente graças à visão computacional. Imagens em tempo real capturadas por câmeras em semáforos e rodovias são usadas para estimar a velocidade e reforçar a segurança rodoviária.

A estimativa da velocidade não se limita apenas à segurança rodoviária. Pode ser utilizada em desportos, veículos autónomos e várias outras aplicações. Neste artigo, discutiremos como você pode usar o modeloUltralytics YOLOv8 para estimativa de velocidade em seus projetos de visão computacional. Também vamos acompanhar passo a passo um exemplo de codificação para que você possa experimentar. Vamos começar!

A estimativa de velocidade facilita o gerenciamento do tráfego

De acordo com a Organização Mundial da Saúde (OMS), aproximadamente 1,19 milhão de pessoas morrem anualmente em acidentes de trânsito devido ao excesso de velocidade. Além disso, mais 20 a 50 milhões sofrem lesões não fatais, muitas das quais resultam em deficiências. A importância da segurança no trânsito não pode ser exagerada, especialmente quando a estimativa de velocidade ajuda a prevenir acidentes, salva vidas e mantém nossas estradas seguras e eficientes. 

A estimativa da velocidade utilizando a visão por computador envolve a deteção e o seguimento de objectos em fotogramas de vídeo para calcular a velocidade a que se movem. Algoritmos como o YOLOv8 podem identificar e track objectos, como veículos, em fotogramas consecutivos. O sistema mede a distância que estes objectos percorrem utilizando câmaras calibradas ou pontos de referência para medir as distâncias no mundo real. Ao cronometrar o tempo que os objectos demoram a deslocar-se entre dois pontos, o sistema calcula a sua velocidade utilizando o rácio distância-tempo.

Fig. 1. Estimativa da velocidade utilizando o modeloYOLOv8 Ultralytics

Além de flagrar infratores de velocidade, os sistemas de estimativa de velocidade integrados com IA podem coletar dados para fazer previsões sobre o tráfego. Essas previsões podem apoiar tarefas de gerenciamento de tráfego, como otimizar os tempos dos sinais e a alocação de recursos. Insights sobre padrões de tráfego e causas de congestionamento podem ser usados para planejar novas estradas para reduzir o congestionamento do tráfego.

Aplicações da estimativa de velocidade em outros setores

As aplicações de estimativa de velocidade vão além do monitoramento de estradas. Também pode ser útil para monitorar o desempenho de atletas, ajudar veículos autônomos a entender a velocidade de objetos que se movem ao seu redor, detectar comportamentos suspeitos, etc. Em qualquer lugar onde uma câmera possa ser usada para medir a velocidade de um objeto, a estimativa de velocidade usando visão computacional pode ser usada. 

Aqui estão alguns exemplos de onde a estimativa de velocidade está sendo usada:

  • Os carros autônomos da Tesla usam a estimativa de velocidade baseada em visão para evitar colisões.
  • A visão computorizada e a estimativa da velocidade serão utilizadas nos Jogos Olímpicos de 2024 para melhorar a análise do desempenho nas provas track letismo.
  • As cidades inteligentes estão a investigar a análise da marcha de pedestres para monitorizar as velocidades de caminhada e aumentar a mobilidade e a segurança urbanas. Estes sistemas podem alertar os motoristas para a presença de pedestres e evitar acidentes.
  • Os sistemas de monitorização do comportamento dos animais utilizam a estimativa da velocidade para track movimento dos animais e detect sinais de aflição ou doença.
Fig 2. A estimativa de velocidade pode medir a velocidade de caminhada de uma pessoa.

Os benefícios de estimar a velocidade usando visão computacional

Os sistemas de estimativa de velocidade baseados em visão estão substituindo os métodos tradicionais baseados em sensores devido à sua maior precisão, custo-benefício e flexibilidade. Ao contrário dos sistemas que dependem de sensores caros como o LiDAR, a visão computacional usa câmeras padrão para monitorar e analisar a velocidade em tempo real. As soluções de visão computacional para estimativa de velocidade podem ser integradas perfeitamente à infraestrutura de tráfego existente. Além disso, esses sistemas podem ser construídos para executar várias tarefas complexas, como identificação do tipo de veículo e análise de padrões de tráfego para melhorar o fluxo e a segurança geral do tráfego.

Experimente você mesmo: Estimativa de velocidade utilizando YOLOv8

Agora que temos uma compreensão clara da estimativa de velocidade e das suas aplicações, vamos analisar mais detalhadamente como pode integrar a estimativa de velocidade nos seus projectos de visão computacional através de código. Vamos detect veículos em movimento e estimar sua velocidade usando o modelo YOLOv8 .

Este exemplo utiliza um vídeo de carros numa estrada descarregado da Internet. Pode utilizar o mesmo vídeo ou qualquer outro vídeo relevante. O modelo YOLOv8 identifica o centro de cada veículo e calcula a sua velocidade com base na rapidez com que este centro atravessa uma linha horizontal no fotograma do vídeo. 

Antes de começarmos, é importante notar que, neste caso, o cálculo da distância é aproximado e baseado na distância euclidiana. A calibração da câmara não é tida em conta, pelo que a estimativa de velocidade pode não ser totalmente exacta. Além disso, a velocidade estimada pode variar consoante a velocidade do seu GPU.

Passo 1: Vamos começar por instalar o pacote Ultralytics . Abra seu prompt de comando ou terminal e execute o comando mostrado abaixo.

pip install ultralytics 

Consulte o nosso Guia de instalaçãoUltralytics para obter instruções passo a passo e práticas recomendadas sobre o processo de instalação. Se tiver algum problema ao instalar os pacotes necessários para o YOLOv8, o nosso guia de Problemas comuns tem soluções e dicas úteis.

Passo 2: De seguida, vamos importar as bibliotecas necessárias. A biblioteca OpenCV ajudar-nos-á a lidar com o processamento de vídeo.

import cv2
from ultralytics import YOLO, solutions

Passo 3: Em seguida, podemos carregar o modelo YOLOv8 e obter os nomes das classes que o modelo pode detect.

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

Confira todos os modelos que suportamos para entender qual modelo se adapta melhor ao seu projeto.

Passo 4: Neste passo, abriremos o ficheiro de vídeo de entrada utilizando o módulo VideoCapture do OpenCV. Também extrairemos a largura, a altura e os quadros por segundo (fps) do vídeo.

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))

Passo 5: Aqui, inicializaremos o escritor de vídeo para salvar nossos resultados finais de estimativa de velocidade. O arquivo de vídeo de saída será salvo como “espeed_estimation.avi”.

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

Passo 6: Em seguida, podemos definir os pontos da linha para estimar a velocidade. Para o nosso vídeo de entrada, esta linha será colocada horizontalmente no meio do frame. Sinta-se à vontade para experimentar os valores para colocar a linha nas posições mais adequadas, dependendo do seu vídeo de entrada.

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

Passo 7: Agora, podemos inicializar o objeto de estimativa de velocidade usando os pontos de linha definidos e os nomes das classes.

speed_obj = solutions.SpeedEstimator(
    reg_pts=line_pts,
    names=names,
    view_img=True,
)

Passo 8: O núcleo do guião processa o vídeo fotograma a fotograma. Lemos cada fotograma e detect e track os objectos. A velocidade dos objectos seguidos é estimada e o fotograma anotado é escrito no vídeo de saída.

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)
  

Passo 9: Por fim, libertamos os objectos de captura e gravação de vídeo e fechamos todas as janelas OpenCV .

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Passo 10: Salve seu script. Se você estiver trabalhando a partir do seu terminal ou prompt de comando, execute o script usando o seguinte comando:

python your_script_name.py


Os desafios da estimativa de velocidade baseada em visão

Também é importante compreender os desafios envolvidos na implementação da estimativa de velocidade utilizando a visão por computador. Condições climatéricas desfavoráveis, como chuva, nevoeiro ou neve, podem causar problemas ao sistema, uma vez que podem obstruir a visibilidade da estrada. Do mesmo modo, as oclusões causadas por outros veículos ou objectos podem dificultar o track e a estimativa precisa da velocidade de um veículo-alvo por parte destes sistemas. As más condições de iluminação, que causam sombras ou reflexos do sol, também podem complicar ainda mais a tarefa de estimativa da velocidade.

Outro desafio diz respeito ao poder computacional. Para estimar a velocidade em tempo real, temos de processar muitos dados visuais de câmaras de trânsito de alta qualidade. A sua solução pode exigir hardware dispendioso para lidar com tudo isto e garantir que tudo funciona rapidamente, sem atrasos.

Então, há a questão da privacidade. Os dados coletados por esses sistemas podem incluir detalhes do veículo de um indivíduo, como marca, modelo e informações da placa, que são coletados sem o seu consentimento. Algumas câmeras HD modernas podem até capturar imagens dos ocupantes dentro do carro. Essa coleta de dados pode levantar sérias questões éticas e legais que precisam ser tratadas com o máximo de cuidado.

A acelerar em direção ao futuro

A utilização do modeloUltralytics YOLOv8 para a estimativa da velocidade proporciona uma solução flexível e eficiente para muitas utilizações. Embora existam desafios, como a precisão em condições difíceis e a abordagem de questões de privacidade, as vantagens são múltiplas. A estimativa de velocidade com visão por computador é mais económica, adaptável e precisa em comparação com as formas mais antigas. É útil em vários sectores, como os transportes, o desporto, a vigilância e os automóveis autónomos. Com todos os benefícios e aplicações, está destinada a ser uma parte fundamental dos futuros sistemas inteligentes.

Interessado em IA? Conecte-se com a nossa comunidade! Explore o nosso repositório do GitHub para saber mais sobre como estamos usando a IA para criar soluções inovadoras em vários setores, como saúde e agricultura. Colabore, inove e aprenda conosco! 🚀

Vamos construir o futuro
da IA juntos!

Comece sua jornada com o futuro do aprendizado de máquina

Comece gratuitamente