GoSecuri — Security
Gestion d'équipements & Reconnaissance faciale
Application desktop Python/Tkinter déployée sur Raspberry Pi — identification biométrique des agents de sécurité et gestion traçable de leur matériel d'intervention.

Contexte
Projet de formation — GoSecuri
Année
2024 – 2025
Niveau
Master 2 Expert IT/SI
Type
Projet individuel
Stack
Python / MySQL / Docker
Plateforme
Raspberry Pi / Linux
GoSecuri — une suite sécuritaire sur mesure
Dans le cadre de ma formation BAC+2, GoSecuri m'a confié le développement d'une solution complète de gestion opérationnelle pour agents de sécurité. Ce premier module couvre l'identification biométrique des agents et la gestion traçable de leur matériel.
L'application est conçue pour tourner sur un Raspberry Pi ou tout poste Linux fixe — intentionnellement légère, sans GPU : Tkinter natif, interface sobre et directement opérationnelle sur le terrain.
Le flux est simple : l'agent se positionne devant la caméra, le système l'identifie, puis lui affiche sa liste d'équipements. Il peut sélectionner ce qu'il emprunte — chaque action est enregistrée selon les principes DICT (Disponibilité, Intégrité, Confidentialité, Traçabilité).
$ git clone github.com/body08120/gosecuri-security
$ xhost +local:docker
$ docker compose up -d
⏳ MySQL healthcheck + injection SQL dump...
✅ Interface Tkinter via X11 forwarding
# Devices montés
video /dev/video0 → webcam
# Tables MySQL
db employee · equipment · have
Ce que le projet couvre
Reconnaissance faciale temps réel
Identification des agents via webcam — encodage des photos de référence au démarrage, comparaison frame par frame avec face_recognition + dlib.
Catalogue d'équipements sécurité
Gestion de matériel réel : gilets pare-balles, tasers, détecteurs de métaux, talkies-walkies, kits oreillettes, brassards. Attribution liée à chaque agent.
Emprunt traçable (DICT)
Disponibilité, intégrité, confidentialité, traçabilité — chaque emprunt et retour d'équipement est enregistré en base avec l'identité de l'agent reconnu.
Architecture MVC stricte
Pattern Modèle-Vue-Contrôleur rigoureux en Python natif : le modèle encapsule la BDD, la vue gère Tkinter, le contrôleur orchestre sans couplage.
Compatible Raspberry Pi
Conçu pour fonctionner sur poste embarqué Linux sans GPU — Tkinter natif, dépendances légères, accès direct aux périphériques /dev/video*.
Docker + X11 forwarding
Interface graphique Tkinter affichée depuis le conteneur via X11 forwarding. Mapping des devices /dev/video* pour l'accès webcam en temps réel.
Technologies utilisées
Python 3.x
Langage
Tkinter
Interface graphique
face_recognition
IA / Biométrie
OpenCV
Vision par ordinateur
MySQL 8.0
Base de données
Docker Compose
DevOps
dlib
Deep learning
X11 Forwarding
Affichage GUI
Architecture MVC + BDD
model/
├── employee_model.py
├── equipment_model.py
└── db_connect.py
controller/
├── main_controller.py
└── face_controller.py
view/
└── main_view.py (Tkinter)
employee ↔ have ↔ equipment
liaison many-to-many · dump SQL auto
La reconnaissance faciale — comment ça marche
Identification en temps réel sans GPU grâce à face_recognition + dlib, des modèles de deep learning pré-entraînés.
face_controller.py
def load_references(self):
# Charge + encode les photos des agents
for photo in employee_photos:
img = face_recognition.load_image_file(photo)
enc = face_recognition.face_encodings(img)
self.known_encodings.append(enc)
def identify_frame(self, frame):
enc = face_recognition.face_encodings(frame)
results = face_recognition.compare_faces(
self.known_encodings, enc[0]
)
return self.get_employee(results)
Au démarrage, les photos de référence des employés sont chargées depuis le disque et converties en vecteurs d'encodage dlib (128 dimensions).
OpenCV capture en continu les frames de la webcam (/dev/video0 monté via Docker) et les transmet au contrôleur facial.
Chaque frame est encodée puis comparée aux vecteurs de référence via une distance euclidienne. En dessous du seuil → agent identifié.
L'agent reconnu est chargé depuis MySQL. Son profil et sa liste d'équipements s'affichent dans l'interface Tkinter.
L'interface en images
Application desktop Tkinter — démo des 3 états clés



Voir le code source
Ce projet vous intéresse ?
Ce que ce projet m'a appris
Faire tourner de la biométrie sur du matériel embarqué, c'est un vrai défi.
✅ Points forts
- •Reconnaissance faciale sans GPU sur Raspberry Pi
- •Architecture MVC rigoureuse en Python natif
- •Docker avec X11 forwarding pour une GUI depuis un conteneur
- •Catalogue d'équipements métier réalistes (sécurité physique)
- •Healthcheck MySQL + injection SQL automatique au démarrage
- •Traçabilité DICT complète sur chaque emprunt d'équipement
⚠️ Améliorations identifiées
- •Interface Tkinter à moderniser (PyQt6 ou KivyMD)
- •Ajouter un second facteur d'authentification (badge NFC)
- •Notifications en cas d'équipement non retourné
- •Rapport d'activité exportable (PDF / CSV)
- •Mode hors-ligne avec cache local des encodages
- •Intégration avec GoSecuri CNI pour un flux unifié