Skip to content
This repository has been archived by the owner on Jan 30, 2024. It is now read-only.
/ MiniBox Public archive

Projet de mémoire LP APSIO : Mini Box IOT

License

Notifications You must be signed in to change notification settings

Drosscend/MiniBox

Repository files navigation

Bannière

Projet de mémoire LP APSIO : Mini Box IOT

GitHub contributors GitHub GitHub top language GitHub issues Codacy Badge

Description

Depuis quelques années, le trafic cycliste augmente grâce à de nombreux facteurs (pandémie, VAE (vélo à assistance électrique), amélioration des infrastructures) sans pour autant qu’il n’y ait d’étude étayée à ce sujet. L’objectif est de créer une borne de compteur cycliste miniature et autonome afin de déployer à moindre coût un grand nombre de ces appareils.

Ces compteurs sont un projet open source, et seront à destination :

  • Des collectivités d’étudier l’impact des évolutions de leurs infrastructures
  • Des associations ayant pour but de promouvoir le vélo (2 pieds 2 roues, AF3V, …)
  • Ou encore à but commercial sur les itinéraires longues distances tels que les voies EuroVelo afin d’inciter des commerçants à se lancer dans le tourisme cycliste

Pour chaque personne, on essayera de récupérer les données suivantes :

  • heure de passage
  • sens de circulation
  • mode de transport (piéton, cycliste, trottinette, vélo couché…)
  • le vélo est-il chargé ?
  • la personne porte-t-elle des équipements de protection ?

Documentation

Maquette du programme principal :

Programme principal

Diagramme de classe :

Programme principal (diagramme de classe)

Prérequis Pour faire fonctionner ce projet, il faut avoir au maximum une version de python égale à 3.9.13. Pour vérifier la version de python installée, il faut lancer la commande suivante :
python --version
# Python 3.9.13

Lien pour l'installation de python 3.9.13 : https://www.python.org/downloads/release/python-3913/

Installation Dans un terminal, lancer la commande suivante :
git clone https://github.com/Drosscend/MiniBox  # clone
cd MiniBox

Pour les utilisateurs de windows

py -m venv .mémoire # création de l'environnement virtuel
.mémoire\Scripts\activate # activation de l'environnement virtuel

Pour les utilisateurs de Linux

python3 -m venv .mémoire # création de l'environnement virtuel
source .mémoire/bin/activate # activation de l'environnement virtuel

Installation des dépendances du projet

pip install -r requirements.txt

Si vous voulez utilser la carte graphique pour accélérer le calcul, vous devez :

  1. Exécuter la commande suivante :
pip3 install -U torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
  1. Changer la valeur de device à 0 dans le fichier config.ini

⚠️ Attention vous devez avoir une carte graphique NVIDIA pour pouvoir utiliser CUDA.

Site de PyTorch : https://pytorch.org/get-started/locally/.

Lancement

Main

Pour lancer le programme de détection, il faut lancer la commande suivante :

python main.py

Le programme sera lancé avec les paramètres par défaut.

  • source = 0 (webcam)
  • classes de détection = 1 (vélo)
  • intervalle de détection = 0
  • affichage de la vidéo = False
  • affichage des fps = False
  • débug = False
  • enregistrement dans le csv = True
Lancement avec paramètres personalisés

Pour lancer le programme avec des paramètres personnalisés, modifiez le fichier config.ini

Si vous voulez avoir plusieurs fichiers de configuration créer un nouveau fichier .ini en vous basant sur le fichier config.ini et lancer le programme avec l'option -c ou --config suivi du chemin vers le fichier de configuration.

Vous pouvez fournir un fichier de configuration personnalisé en utilisant l'option -c ou --config :

python main.py -c custom_config.ini
Lancement des tests

Pour lancer les tests, il faut lancer la commande suivante :

pytest Test/

Lancement du site (framework Django)

Le site MiniBox WebGraphique permet de passer dans un formulaire un fichier .csv des données de détection, et d'afficher un graphique grâce à ces données.

Avant de lancer le site, il vous faudra ajouter un fichier nommé config.json dans le répertoire www/WebGraph. Ce fichier contiendra votre secret key django et sera structuré comme ci-dessous :

{
    "SECRET_KEY": "votre secret key"
}

Par la suite, exécutez les commandes suivantes :

python www/WebGraph/manage.py migrate

python www/WebGraph/manage.py runserver

Le site est donc lancé en local et vous pouvez l'ouvrir avec l'URL suivante : http://127.0.0.1:8000/

Equipe

Etudiants de l'APSIO de l'Université de Toulouse :

  • Kévin Véronési @Drosscend
  • Noémie Tandol @NoemieT82

Encadrants :

  • Yahn Formanczak

License

Le projet est sous licence GPL-3.0 License. Pour plus d'informations, veuillez consulter le fichier LICENSE.

Contact

Pour faire remonter des bugs ou des demandes de fonctionnalités, veuillez consulter GitHub Issues.

Remerciements

  • Ultralytics Utilisation de YOLOV5 pour la détection d'objets dans une vidéo
  • Norfair Utilisation de Norfair pour le suivi d'objets dans une vidéo

Contributeurs

Réalisé avec contributors-img.