Accompagnement disponible dès maintenant
Portfolio/GoSecuri/Security
DéveloppementMaster 2 · 2024✅ Fonctionnel🔗 Suite : GoSecuri CNI →

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.

GoSecuri Security — Interface principale

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

Contexte du projet

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é).

gosecuri-security — docker compose

$ 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

Fonctionnalités

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.

Stack technique

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

Focus technique

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)

1

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).

2

OpenCV capture en continu les frames de la webcam (/dev/video0 monté via Docker) et les transmet au contrôleur facial.

3

Chaque frame est encodée puis comparée aux vecteurs de référence via une distance euclidienne. En dessous du seuil → agent identifié.

4

L'agent reconnu est chargé depuis MySQL. Son profil et sa liste d'équipements s'affichent dans l'interface Tkinter.

Aperçu

L'interface en images

Application desktop Tkinter — démo des 3 états clés

GoSecuri Security — Agent identifié, gestion du matériel
Identification réussie — Gestion du matériel
GoSecuri Security — Emprunt enregistré avec succès
Emprunt enregistré avec succès
GoSecuri Security — Accès refusé — agent non reconnu
Accès refusé — agent non reconnu

Voir le code source

Ce projet vous intéresse ?

Bilan

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é

Prêt à démarrer ?

Transformons ensemble votre vision digitale

Audit, conseil, développement - Votre projet mérite une expertise sur-mesure