SmartGuard AI
Tous les projets

SmartGuard AI

Security and Surveillance

2026 - En cours

11
Services indépendants
6
Paquets partagés
5
Familles de modèles IA intégrées

À propos du projet

Une plateforme de vidéosurveillance intelligente multi-tenant en architecture hybride cloud et sur site, réunissant reconnaissance faciale, détection d'objets, lecture de plaques et recherche vidéo en langage naturel.

Mon rôle: Architecte de la solution et développeur full stack, de la décomposition en services aux microservices IA et au plan de contrôle multi-tenant.

J'ai conçu SmartGuard AI pour corriger ce que la vidéosurveillance classique ne résout jamais : les caméras enregistrent tout et ne révèlent rien. Les opérateurs font face à des murs d'écrans sans pouvoir poser une question simple, comme qui est entré dans l'entrepôt après vingt heures, ou quel véhicule est revenu trois fois cette semaine. SmartGuard AI transforme les flux bruts en un fil d'événements consultable et capable d'alerter, sans obliger le client à sortir ses enregistrements sensibles de ses locaux.

La plateforme fonctionne comme onze services indépendants sur Google Cloud. J'ai décomposé le monolithe Python d'origine selon un motif strangler, en extrayant la détection dans des microservices dédiés : YOLOv8 pour les objets et la posture, InsightFace avec des embeddings ArcFace pour les visages, RapidOCR pour les plaques, et une façade CLIP qui répond aux recherches en langage naturel sur la vidéo enregistrée. Un service séparé restaure les images basse résolution avec Real-ESRGAN et GFPGAN, ce qui rend exploitable un visage capté de loin.

Le multi-tenant est appliqué à chaque couche plutôt que rajouté après coup. Chaque client dispose d'une identité isolée, de feature flags qui lui sont propres et de son propre déploiement de recherche, tandis que six paquets partagés portent le bus d'événements, le stockage, l'état, l'authentification et le calcul. Un agent de synchronisation réplique les enregistrements locaux vers Cloud Storage, si bien qu'un site mal connecté continue de fonctionner en local pendant que le cloud rattrape son retard.

Fonctionnalités principales

  • 🧠 Recherche vidéo en langage naturel : Posez une question en langage courant et la façade CLIP renvoie les moments correspondants dans les enregistrements.
  • 👤 Reconnaissance faciale : InsightFace et les embeddings ArcFace identifient les personnes connues et signalent les inconnues sur toutes les caméras.
  • 🚗 Lecture de plaques : RapidOCR extrait les plaques sur CPU, ce qui rend l'historique des véhicules possible sans GPU dédié.
  • 🎯 Détection d'objets et de posture : YOLOv8 sur GPU repère les personnes, véhicules et postures qui comptent, comme une chute ou une intrusion.
  • ✨ Restauration de qualité probante : Real-ESRGAN et GFPGAN agrandissent et restaurent les visages, rendant lisible une image lointaine inexploitable.
  • 🏢 Isolation multi-tenant stricte : Identité, données et déploiements sont séparés par client, avec des feature flags qui pilotent chaque édition.
  • 🔌 Hybride cloud et sur site : Un agent de synchronisation réplique les enregistrements locaux vers le cloud, pour que les sites mal connectés continuent de fonctionner.
  • 📡 Architecture événementielle : Un bus d'événements partagé abstrait les files locales et Pub/Sub, si bien que le même code tourne sur un portable et sur Google Cloud.
  • 🧩 Onze services indépendants : Détection, identité, feature flags, notifications et scénarios montent en charge et tombent en panne séparément.
  • 📊 Console opérateur : Un tableau de bord Next.js offre aux super administrateurs et aux locataires leur propre vue des caméras, des alertes et de la recherche.

Problèmes et solutions

Problème: Les systèmes de vidéosurveillance classiques sont des archives passives. On ne consulte les images qu'après un incident, les fouiller impose de parcourir des heures de vidéo à la main, et toute capacité IA suppose en général d'envoyer des enregistrements sensibles vers un cloud tiers.

Solution: SmartGuard AI exécute la détection là où le client le souhaite, sur site ou dans le cloud, et indexe chaque événement au fil de l'eau. La recherche en langage naturel remplace le visionnage manuel, et l'isolation par locataire combinée à un agent de synchronisation local évite que les images sensibles quittent les locaux.

Problème: Le code d'origine formait un monolithe Python unique où une modification de la détection de visages risquait de casser la lecture de plaques, et où tous les locataires partageaient le même calcul.

Solution: J'ai appliqué un motif strangler, en extrayant une capacité à la fois vers un service indépendant derrière un bus d'événements et une abstraction de stockage partagés, si bien que chaque détecteur monte en charge, se déploie et tombe en panne séparément.

Stack technique

Python
FastApi
Next.js
TypeScript
Google Cloud Plateform
Firestore
REST APIs