Giter VIP home page Giter VIP logo

minibox's Introduction

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.

minibox's People

Contributors

dependabot[bot] avatar drosscend avatar noemiet82 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

minibox's Issues

[BUG] Fix V3.1

Détail de contact

Drosscend#6715

Qu'est-ce qui s'est passé?

  • Changement du format de la date dans le CSV

  • Correction du code correspondant à l'enregistrement dans le CSV :

Système d'exploitation

Windows

Code of Conduct

  • J'ai lu et j'accepte le Code de conduite.

[FEATURE] Tracking des objets

Détail de contact

Drosscend#6715

Description

J'aimerais modifier le système de suivi actuel, le système actuel possède quelques limites, pas possible de suivre plus d'un type d'objet différent.
J'ai trouvé ceci qui peut aider : deep-sort-realtime

Le nouveau système pourra donc suivre différents objets, et nous pourrons donc suivre les vélos et les personnes en même temps.

Autres informations

No response

Code of Conduct

  • J'ai lu et j'accepte le Code de conduite.

[FEATURE] Application WebGraph

Détail de contact

NoemieT#6744

Description

J'aimerais ajouter un site web permettant de voir les statistiques des passages à vélo grâce à un formulaire dans lequel nous déposons le fichier .csv

Autres informations

No response

Code of Conduct

  • J'ai lu et j'accepte le Code de conduite.

[FEATURE] Utilisation de YOLOV8

Détail de contact

Drosscend#6715

Description

J'aimerais utilisais YOLOV8 à la place de YOLOV5 pour avoir de meilleure performances et une meilleure maintenabilité.
Voici quelques liens utiles :
https://github.com/ultralytics/ultralytics
https://docs.ultralytics.com/tasks/detection/
https://docs.ultralytics.com/predict/
https://docs.ultralytics.com/tasks/tracking/
https://pypi.org/project/ultralytics/

  • Suppression de toutes utilisation et importation de YOLOV5
  • Mise en place de la détection grâce à YOLOV8
  • Suppression de toutes utilisation et importation de Sort
  • Mise en place du tracking grâce à YOLOV8
  • Affichage par segmentation
  • Amélioration des tests pour la prise en compte de YOLOV8

Code of Conduct

  • J'ai lu et j'accepte le Code de conduite.

[FEATURE] Ajout d'un fichier de configuration

Détail de contact

Drosscend#6715

Description

Je souhaiterais changer le système de lancement en enlevant la possibilité de passer des paramètres lors du lancement du programme.
Le nouveau système de paramètre sera un fichier YAML situé à la racine du projet.
Ce fichier contiendra tous les paramètres à prendre en compte pour le lancement du programme.
S'il n'y a pas de fichier, il y aura une erreur et s'il n'y a pas de valeur pour une clé, nous utiliserons la valeur par défaut et afficherons un avertissement.
Cela nous permettra de lancer et paramétrer le programme plus rapidement.

Autres informations

No response

Code of Conduct

  • J'ai lu et j'accepte le Code de conduite.

Documentation : README

Ajout de la version de python maximum (3.9.13)
Ajout de la notification pour ExecutionPolicy sous windows Set-ExecutionPolicy AllSigned
Possibilité de réduire le nombre de ligne de code lors de l'installation : pip install -r .\yolov5\requirements.txt

[BUG] Enregistrement des informations

Détail de contact

Drosscend#6715

Qu'est-ce qui s'est passé?

Le programme enregistre en permanence les identifiants dans une liste, mais cette liste n'est jamais vidée par le programme.
Cela peut entraîner des bugs ou des latences à un moment donné.
Je propose que le programme supprime de cette liste les identifiants qui ne sont plus affichés à l'écran.

Par ailleurs, calculer la direction à partir de l'historique des 10 dernières positions peut ne pas fonctionner dans certains cas. En effet, une personne ne reste pas 10 secondes devant la caméra (si nous prenons un intervalle de 10 secondes).

Système d'exploitation

Windows

Logs

No response

Autres informations

No response

Code of Conduct

  • J'ai lu et j'accepte le Code de conduite.

[FEATURE] Amélioration du tracking

Détail de contact

Drosscend#6715

Description

Utilisation de : https://github.com/tryolabs/norfair

  • Tracking fonctionnel avec yolov5
  • Remplacement de l'ancien tracking
  • Mise à jour du code
  • Mise à jour des tests
  • Mise à jour des docs
  • Meilleure sauvegarde dans le fichier CSV
  • Possibilité d'enregistrer plusieurs classes

Infos sur la sauvegarde dans le CSV :
1 enregistrement par minutes (paramétrables) (donc 1 lignes par minute)

  • le nombre totale d'objets détecté
  • le nombre totale d'objets qui va vers le top-left
  • le nombre totale d'objets qui va vers le top-right
  • le nombre totale d'objets qui va vers le bottom-left
  • le nombre totale d'objets qui va vers le bottom-right

Autres informations

No response

Code of Conduct

  • J'ai lu et j'accepte le Code de conduite.

[FEATURE] Sauvegarde BDD

Détail de contact

Drosscend#6715

Description

Ajout d'un système pour sauvegarder les données dans une base de données ;

  • Ajout dans le fichier config.ini :

    • une option pour activer la sauvegarde
    • un lien/chemin vers une base de données (ex : data.db)
    • une heure pour arrêter le programme et faire les manipulations d’enregistrement (ex : 00:00:00)
    • une option pour garder les fichiers CSV ou les supprimé (ex : True)
  • : Sauvegarde du fichier à l'heure prévue

  • : Suppression du fichier CSV

  • : Ajout de tests

  • : Modification des diagrammes

  • : Texte explicatif dans le README

Le système se mettra en pause à une durée, enregistrera les données dans une base de données, supprimera ou déplacera le fichier CSV puis ce relancera.

Autres informations

No response

Code of Conduct

  • J'ai lu et j'accepte le Code de conduite.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.