>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Python

Comment transformer un ancien téléphone Android en système de surveillance intelligent alimenté par l'IA

Presque chaque foyer possède un ancien smartphone Android qui prend la poussière dans un tiroir. L'écran est intact, l'appareil photo est correct, mais la batterie ne tient que半天 ou le processeur ne peut pas gérer les applications modernes. Habituellement, ces appareils sont soit transmis aux proches, soit oubliés pour toujours. Récemment, je suis tombé sur un dépôt intéressant CCTV-Smartphone-AI-Monitoring (l'auteur appelle le système Sentinel), qui offre un moyen de mettre ce gadget à profit.

Le projet capture la vidéo du smartphone sur le réseau local, exécute l'enregistrement sur un PC, et connecte des réseaux neuronaux multimodaux pour reconnaître ce qui se passe dans le cadre.

Bannière du système

Ce qui se cache sous le capot de Sentinel

L'idée de transformer un smartphone en caméra de surveillance n'est pas nouvelle, mais la plupart des solutions prêtes à l'emploi se heurtent à deux problèmes : soit elles sont verrouillées sur des services cloud chinois payants, soit elles proposent un simple flux RTSP sans analytique décente. Sentinel résout les deux problèmes à la fois.

Le système est divisé en deux parties :

  1. CamFlow — une application légère pour Android 8.0+ qui capture le flux de la caméra et envoie des images JPEG via HTTP POST vers le serveur.
  2. Un composant serveur Python (Flask + OpenCV) — reçoit le flux, maintient un tampon d'images, organise le streaming dans le navigateur, écrit les archives sur le disque et gère les appels IA.

Toutes les vidéos et les journaux restent strictement dans votre réseau local. Seules des images individuelles sont envoyées à l'extérieur si vous décidez de connecter un réseau neuronal cloud pour l'analyse des événements.

Interface du tableau de bord et de la surveillance IA

Comment fonctionne le pipeline efficace en tokens

Envoyer un flux vidéo de 25 ips directement dans un réseau neuronal multimodal moderne coûtera cher à tout développeur. L'auteur de Sentinel a choisi une approche à deux niveaux éprouvée :

Tout d'abord, la vision par ordinateur classique basée sur OpenCV gère le fonctionnement. Le module motion_trigger calcule la différence entre les images consécutives. Tant que rien ne se passe dans la pièce, le serveur reste à l'état SLEEP et ne dépense pas de ressources API.

Une fois que le mouvement dépasse le seuil défini, le système passe à l'état OBSERVE. C'est à ce moment-là que le modèle de vision entre en jeu. Il analyse l'image, vérifie la présence de personnes, évalue le niveau de risque et retourne un JSON strict :

{
  "has_person": true,
  "person_count": 1,
  "activity": "standing",
  "risk_level": "info",
  "confidence": 0.95,
  "summary": "Человек стоит около рабочего стола."
}

Si une personne s'attarde réellement dans le cadre plus longtemps que le seuil Dwell Threshold, l'événement est enregistré dans la base de données ai_events.jsonl et affiché sur le tableau de bord. Lorsque le mouvement s'arrête, le système attend une pause de End Grace et retourne en veille.

Processus de fonctionnement du système

Fonctionnalités clés du projet

Streaming vidéo sans plugin. L'interface web diffuse un flux en direct via MJPEG. La latence sur Wi-Fi domestique est minimale et la vidéo s'ouvre dans n'importe quel navigateur sans installer de logiciel.

Intégration flexible avec les fournisseurs de modèles. Le projet a été initialement construit autour de Volcengine Ark chinois, mais dans la version 1.1, l'auteur a ajouté un client universel. Vous pouvez maintenant vous connecter à OpenAI (GPT-4o-mini), Google Gemini, DashScope (Qwen VL), SiliconFlow, ou une passerelle locale avec une API compatible OpenAI.

Personnalisation du comportement via des prompts. Les paramètres du tableau de bord incluent des champs pour le contexte à long terme (Scene Profile) et la focalisation opérationnelle (Session Focus). Vous pouvez écrire directement dans l'interface web : "Ceci est un couloir de laboratoire. Faites attention si quelqu'un transporte des cartons ou s'attarde à la porte pendant plus de 10 secondes."

Découverte automatique du réseau. L'application CamFlow ne nécessite pas de saisir manuellement l'adresse IP du PC — elle peut trouver le serveur en cours d'exécution via diffusion UDP.

Segmentation des archives. La vidéo est enregistrée localement par segments de minuterie (par exemple, des segments de 5 ou 10 minutes) avec les codecs avc1, mp4v ou XVID au choix.

Interface de l'application mobile CamFlow

Comment déployer le projet

Vous aurez besoin d'un PC avec Python 3.9+ et d'un smartphone sous Android.

Clonez le dépôt et installez les dépendances :

git clone https://github.com/suzuran0y/CCTV-Smartphone-AI-Monitoring.git
cd CCTV-Smartphone-AI-Monitoring

python -m venv venv
# На Windows: venv\Scripts\activate
# На Linux/macOS: source venv/bin/activate

pip install -r requirements.txt

Les dépendances incluent l'ensemble standard : Flask, OpenCV, NumPy et le client SDK Ark.

Démarrez le serveur :

python server.py

La console affichera une adresse locale comme http://127.0.0.1:5000/ pour le navigateur et une IP réseau http://192.168.x.x:5000/ pour le smartphone.

Installez l'APK depuis le dossier PhoneCamSender/CamFlow-v1.0.0-beta.apk sur votre téléphone (ou construisez le projet via Android Studio — la source est ouverte). Lancez-le, accordez l'accès à la caméra, connectez-vous au Wi-Fi et entrez l'IP du serveur.

La capture d'images est désactivée par défaut sur le tableau de bord du PC pour des raisons de sécurité. Appuyez sur le bouton Enable Ingest et le flux en direct apparaîtra dans le navigateur.

Paramètres du tableau de bord

Connexion de votre propre fournisseur IA

Si vous souhaitez activer l'analyse IA, activez AI Monitoring dans le panneau droit du tableau de bord. Sélectionnez le Provider approprié, spécifiez le Model ID et entrez la clé API.

Par exemple, pour travailler avec un serveur local compatible ou OpenAI, remplissez simplement la configuration :

{
  "ai_provider": "openai",
  "ai_model": "gpt-4o-mini",
  "ai_api_key": "sk-..."
}

Les paramètres peuvent également être transmis via des variables d'environnement (AI_PROVIDER, AI_MODEL, AI_API_KEY). Le serveur valide les réponses du modèle et assure que la structure des champs ne casse pas l'interface web.

Où cela sera utile

Sentinel est bien adapté aux expériences locales à petite échelle :

  • Surveillance d'un atelier ou d'un laboratoire où vous ne pouvez pas diffuser de vidéo vers des services cloud tiers.
  • Collecte d'un ensemble de données annoté avec des descriptions textuelles de situations anormales.
  • Observation des animaux domestiques dans un appartement avec des notifications d'alerte structurées.
  • Apprentissage de la liaison entre la CV classique (détection de mouvement) et les LLM/VLM lourds sans coûts excessifs.

En résumé

Le projet s'est avéré être un prototype d'ingénierie élégant et pratique. Il n'y a pas de frameworks lourds ni de magie inutile ici : une architecture claire FrameBuffer, des tests pytest fonctionnels et un client Android fonctionnel inclus prêt à l'emploi.

Si vous cherchez une excuse pour utiliser un ancien téléphone et expérimenter avec des modèles multimodaux en temps réel, consultez le dépôt suzuran0y/CCTV-Smartphone-AI-Monitoring.

Projets similaires