Skip to content

Código feito com intuito de utilizar inteligência artificial (yolov4) para identificar acidentes de trânsito.

Notifications You must be signed in to change notification settings

Giovanni-Andretta/Identificacao_de_Acidentes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Visão Computacional -- Identificação de Acidentes


Nome da ferramenta Versão
Anaconda 4.10.3
Jupyter Notebook 6.3.0
Python 3.8.8
Opencv-python 4.6.0.66
Twilio 7.12.0
LabelImage windows_v1.8.0
Image downloader - Imageye 3.0.7
charset-normalizer 2.1.0
idna 3.3
numpy 1.23.2
PyJWT 2.4.0
pytz 2022.2.1
requests 2.28.1
urllib3 1.26.11

Instalação

Anacondae e Jupyter Notebook

Para baixar e instalar o Anaconda utilize o link abaixo:

Anaconda

O Jupyter Notebook ja vem em conjunto com o Anaconda.

Python

Para instalar o Python na versão 3.8.8 utilizando o Anaconda, abra o Anaconda Prompt e digite o comando abaixo:

conda install python=3.8.8

Virtualenv

Para que seja instalado os pacotes nas versões corretas utilize o comando:

pip install -r requirements.txt

LabelImage

Para a instalação do LabelImg utilizando o Anaconda, abra o Anaconda Prompt e digite os comandos abaixo:

conda install pyqt=5
conda install -c anaconda lxml
pyrcc5 -o libs/resources.py resources.qrc
python labelImg.py
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]

Para mais informações, verifique: https://github.com/heartexlabs/labelImg

Image downloader - Imageye

Para baixar e instalar o Image downloader - Imageye utilize o link abaixo:

Image downloader - Imageye


Funcionamento

Para que o código funcione é preciso que você tenha os arquivos do modelo pré treinado do YOLO, para gerar esses arquivos siga os passos abaixo:

Dataset

Se você vai customizar seu próprio modelo pré treinado do YOLO, você irá precisar de um Dataset e para te auxiliar com a coleta das imagens você pode utilizar:

  • Image downloader - Imageye que faz o download de várias imagens direto do google imagens.
  • Kaggle que é um site que disponibiliza inúmeros Datasets.

LabelImg

Com o Dataset ja em mãos, podemos utilizar o LabelImg.

  • Acessar o LabelImg
  • Clique em Open Dir e selecione a pasta que você esta armazenando as imagens, e clique em Selecionar pasta.
  • Clique em Change Save Dir e selecione a mesma pasta que você selecionou no Open Dir e clique em Selecionar pasta.
  • Antes de começar, abaixo de Save, se estiver com PascalVOC, clique nele para aparecer YOLO.
  • Clique em Create RectBox, va até onde o objeto que você quer que seja identificado pelo seu modelo e crie uma Create RectBox entorno dele.
  • Coloque o nome da sua classe, e clique em OK.
  • Após criar todas as Create RectBox na imagem, clique me Save.
  • Clique em Next Image.
  • Faça isso para todas as imagens.

Após fazer isso, você vai ter uma pasta com imagens, arquivos txt com o mesmo nome que as imagens contendo coordenadas dos Labels e o arquivo txt classes contendo o nome da sua classe/s.

O nome da pasta deve ser images, se for diferente, tera que ser alterado nos comandos do google colab

  • Acesse a pasta contendo as imagens, arquivos txt das labels e arquivo txt classes.
  • Selecione tudo -- (Ctrl+a)
  • Clique com o botão direito do mouse.
  • Se tiver Winrar, selecione a opção Adicionar para o arquivo... no campo Formato do arquivo, selecione a opção zip, e clique em OK
  • Se não tiver Winrar, selecione a opção Enviar para >> Pasta compactada

Após fazer isso, acesse seu drive.

O nome da pasta deve ser yolov4, se for diferente, tera que ser alterado nos comandos do google colab

  • Clique em Novo
  • Clique em Nova pasta
  • Coloque o nome: yolov4
  • Clique em Criar

Acesse sua pasta no google drive e envie o arquivo images.zip

Google Colab

Nessa etapa você deve decidir qual arquivo de pesos pré-treinado você usará, a diferença deles está em questão de tamanho e performance, exemplos abaixo:

CPU utilizado foi um i5-9300H

  • yolov4.conv.137 utilizando esse modelo você terá uma média de 2.5 fps rodando em CPU, valores de precisão e detecção ótimos, o tempo de treino no Google Colab é aproximadamente 16 horas
  • yolov4-tiny.conv.29 utilizando esse modelo você terá uma média de 10 fps rodando em CPU, valores de precisão e detecção inferiores, o tempo de treino no Google Colab é aproximadamente 5 horas

Após decidir qual arquivo de peso você utilizará para treinar seu modelo, siga as instruções abaixo:

  • Entre no Google Colab
  • Logue com sua conta
  • No canto esquerdo superior clique na opção Editar
  • Clique em Configurações de notebook
  • Em Acelerador de hardware coloque a opção GPU e clique em Salvar
  • Siga os passos dos arquivos google_colab

Quando o treinamento for concluído, em sua pasta yolov4 do Google Drive deve conter os arquivos:

  1. classes.txt
  2. images.zip
  3. yolov4_testing.cfg
  4. yolov4_training_1000.weights
  5. yolov4_training_2000.weights
  6. yolov4_training_3000.weights
  7. yolov4_training_4000.weights
  8. yolov4_training_final.weights
  9. yolov4_training_last.weights

Você tera que baixar os arquivos: classes.txt, yolov4_testing.cfg e yolov4_training_last.weights, coloque-os dentro da pasta modelo_pre_treinado

Para mais informações do YOLO acesse https://github.com/AlexeyAB/darknet

Com isso o código ja irá funcionar!

Basta comentar a linha 104 até a linha 110 para que não envie um SMS ao detectar um acidente, se não quiser comentar as linhas siga os passos abaixo.

Twilio

Para que a mensagem seja enviada, é preciso que se crie uma conta no Twilio

Ao logar no Twilio você precisa fazer a solicitação de seu número Twilio para fazer isso clique em Get a Twilio phone number. Após isso, descendo a página irá ter o campo Account Info que deve conter as segunintes informações:

  • Account SID
  • Auth Token
  • My Twilio phone number

Essas informações deverão ser preenchidas no código

About

Código feito com intuito de utilizar inteligência artificial (yolov4) para identificar acidentes de trânsito.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published