Giter Club home page Giter Club logo

hackia_2024_grp_2's Introduction

HackIA24 - Edge AI System for Smart Cities


18-19 mai 2024

Groupe 2 (HackAI_2024_GRP_2)



Data Expert : Francesco Romeo 🧓 - training, optimisation, explicabilité
Operations Manager : Loïc Reboursière 🧔 - pruning, compression, benchmark
Lead Developer : Rabie Najem 🧔 - training, démo
Designer : Bérengère Fally 👩‍🦱 - training, gestion de projet

Introduction


Ce projet met en œuvre les connaissances acquises en intelligence artificielle durant la formation Hands on AI. Nous avons déployé des modèles de Deep Learning pour la classification et le tracking temps réel de feu ou de départ de feu sur une ressource Edge AI, le Jetson Xavier de NVIDIA. En équipe, nous avons travaillé pendant deux jours pour développer, entraîner et optimiser des réseaux de neurones profonds capables de traiter des séquences vidéo en temps réel sur des ressources limitées.
L'application finale permet, après déverouillage par reconnaissance faciale, la détection et le tracking du feu.
Ce document détaille chaque étape du projet, allant de la conception initiale et l'entraînement des modèles, à leur portage sur ressource Edge, jusqu'à l'optimisation et l'explicabilité des solutions développées.
Le développement a été réalisé avec PyTorch utilisé sur des notebooks Jupyter entrainés à partir de Google colab.

Objectifs


- Développer des réseaux de neurones pour classifier des images, localiser des objets et reconnaître des visages.
- Intégrer les modèles dans un système Edge AI pour des vidéos capturées en temps réel.
- Optimiser la solution pour obtenir un bon compromis entre précision, temps de calcul et espace mémoire.

Phases du Projet

Phase 1 : Développement et entraînement des modèles

Les codes et les résultats relatifs à cette phase sont repris dans le dossier training.

Les modèles utilisés pour les différentes étapes de ce hackathon peuvent être obtenus en suivant le lien dans le dossier model.

Transfert Learning et optimisation des modèles de classification

Plusieurs algorithmes de classification de l'état de l'art ont été testés par Transfert Learning. Une recherche des meilleurs hyperparamètres a été effectuée via une technique de Grid Search. Cette technique vise, pour chaque modèle utilisé, à tester une série de valeurs pour chaque hyperparamètre.

A chaque modification d'un hyperparamètre le modèle est réentrainé et les configurations sont classées les unes par rapport aux autres en fonction de leurs résultats.

Dataset final : https://drive.google.com/drive/folders/10FvmIW5iMZp31oEN0X9UfeA_-M2dyt7w?usp=sharing

Base de données


Images BD1, BD2 du défi 1 + photos web (kaggle) => 1716 images


fire : 572


no-fire : 572


start-fire : 572

Tracking des feux et des départs de feux

Dès qu'une image est classifiée comme feu ou départ de feu, le modèle YoloV8 est utilisé pour tracker les feux en temps réel. Celui-ci a été réentrainé pour l'occasion.

Phase 2 : Portage sur ressource Edge : Jetson Xavier

Reconnaissance de visages pour déverouillage de l'application

L'application présente sur la ressource Jetson Xavier intégrait une reconnaissance faciale qui pouvait être mise à jour par le simple ajout d'une du visage a reconnaître et de la mise à jour du code correspondant à cette photo. Toute l'équipe a donc participé à cette séance photo de mlanière à ce que chacun puisse déverouiller l'application.


Face regognition 1

Face recognition 2

Cette application a été modifiée (EdgeAI/Edge_AI_Module_24_Input-modified.py) pour intégrer l'envoi d'une notification Telegram lors d'une potentielle intrusion (non reconnaissance du visage).
Cette fonctionnalité a été obtenue par la mise en place d'une API via BotFather et création du compte HackIA24 sur Telegram. Les détails de ce bot sont repris dans le dossier face_recognition.

Phase 3 : Optimisation et compression de modèles

Plus de détails sur cette phase peuvent être trouvés dans le dossier compression.

Optimisation des modèles

  • Pruning : Objectif : Réduire le poids pour rendre le modèle plus efficaces en termes de temps de calcul et d'utilisation de la mémoire, sans compromettre significativement leur précision. C'est déployer ces modèles sur des ressources limitées telles que les dispositifs Edge AI.

Résultat : Malgré de pauvre résultats (30% d'accuracy) pendant le hackathon, l'entrainement sur 10 périodes après pruning affiche un résultat de 94% sur le validation test. Cela signifie donc que malgré une diminution du nombre de paramètres environ par 5, le modèle semble rester performant. Plus de détails dans le dossier compression

MobileNet : 4.5 MB | 2.7 MB

  • Quantization : Objectif : Diminuer la taille du modèle et accélérer les calculs sans sacrifier la précision du modèle. Cela permet d'améliorer les performances du modèle sur des appareils avec des capacités de calcul et de mémoire limitées, comme les Jetson Xavier, tout en maintenant une efficacité énergétique élevée.

Le modèle MobileNet utilisé étant déjà très petit la quantization a été appliquée au modèle YoloV8 avec la variation de taille suivante : 89.5 MB | 23.8 MB

Phase 4 : Explicabilité des modèles

Pour permettre l'explicabilité de nos modèles, nous utilisons la méthode Grad-CAM (Gradient-weighted Class Activation Mapping) pour localiser les incendies dans les images. Cet algorithme a été utilisé lors de la première épreuve de la certification en IA.

Les résultats de cette phase peuvent être trouvés dans le dossier ExplainableAI.

Conclusion

Synthèse du projet

Principaux résultats :

- Modèles de classification et de détection :
Nous avons réussi à développer et entraîner des modèles de classification d'images pour détecter les feux, les départs de feux et les images sans feu avec une précision satisfaisante. L'utilisation de techniques de Transfert Learning et de Grid Search pour l'optimisation des hyperparamètres a permis d'atteindre des performances optimales.

- Tracking en temps réel :
L'intégration du modèle YOLOv8 pour le tracking en temps réel des feux dans les vidéos de tests a été une réussite, permettant une détection rapide et précise des incidents.

- Déploiement sur Jetson Xavier : Nous avons adapté les modèles pour qu'ils fonctionnent efficacement sur le Jetson Xavier, démontrant la faisabilité du traitement en temps réel sur des ressources limitées.

- Reconnaissance faciale :
L'application inclut une fonctionnalité de reconnaissance faciale pour le déverrouillage, augmentant la sécurité et l'accessibilité de notre solution.

- Optimisation et compression :
Les techniques de pruning et de quantization ont été appliquées pour réduire la taille des modèles et améliorer leur efficacité sans sacrifier de manière significative la précision. Par exemple, YOLOv8 a été compressé de 89.5 MB à 23.8 MB et le modèle MobileNet_v3_Small a été compressé de 4.5 MB à 2.7 MB.

Points forts du projet :
- Travail d'équipe et collaboration :
Le succès de ce projet repose sur une excellente collaboration et répartition des tâches au sein de l'équipe, chacun apportant son expertise spécifique.

- Utilisation d'outils avancés :
Le choix des outils tels que PyTorch, TensorFlow et Google Colab a permis une gestion efficace du développement et de l'entraînement des modèles.

- Focus sur l'optimisation :
L'accent mis sur l'optimisation pour le déploiement sur des ressources Edge AI a démontré une approche pratique et applicable à des scénarios réels.

Perspectives d'amélioration :
- Amélioration de la précision des modèles :
Il est possible d'améliorer encore la précision des modèles en explorant des architectures plus avancées et en utilisant des ensembles de données plus larges et diversifiés.

- Robustesse du système :
Renforcer la robustesse du système en intégrant des mécanismes de détection des anomalies et de gestion des erreurs pour assurer une performance stable en conditions réelles.

- Extensions fonctionnelles :
Ajouter des fonctionnalités supplémentaires telles que l'alerte en temps réel via des notifications push ou des intégrations avec d'autres systèmes de gestion des incidents pour une réponse plus rapide.

- Optimisation énergétique :
Continuer à explorer des techniques pour réduire encore la consommation d'énergie du système.

- Explicabilité des modèles :
Développer des méthodes d'explicabilité plus avancées pour fournir des insights plus clairs sur le fonctionnement interne des modèles.

Présentation en équipe à la clôture du HackIA24

https://www.canva.com/design/DAGFneZKn2o/FtJgHbfXzrO6-3KTsr24dQ/edit?utm_content=DAGFneZKn2o&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton

Appendix : Environnements, outils utilisés et méthodologie

hackia_2024_grp_2's People

Contributors

loicreboursiere avatar berengerefallybe avatar

Watchers

 avatar

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.