Skip to content

Bienvenue dans notre solution de détection d'intrusion. Notre projet offre une réponse aux défis de surveillance en combinant l'intelligence des réseaux de caméras avec la flexibilité de Node-Red.

Notifications You must be signed in to change notification settings

Laib-Ramy/2023-m2cns-IdO-CamerasDeployment

 
 

Repository files navigation

PROJECT_MTSC_NODE_RED

Bienvenue dans notre solution de détection d'intrusion. Notre projet offre une réponse aux défis de surveillance en combinant l'intelligence des réseaux de caméras avec la flexibilité de Node-Red.

AUTEURS - ETUDIANT M2 CNS SOUS PARCOURS SR

  • CISSE Hamadoun
  • LAIB Ramy
  • SARAOUI Keltouma
  • IWOBA REBET Emmanuel

Principales fonctionnalités

Détection d'Intrusion Intelligente : Grâce au modèle de détection d'object (coco-ssd), notre système identifie de manière fiable les intrusions, garantissant une réaction proactive à toute menace potentielle.

Notification Instantanée : L'utilisateur est informé en temps réel dès qu'une activité suspecte est détectée, garantissant une réponse rapide et efficace. On utilise Telegram pour l'envoie des notifications et des capture vidéos.

Visualisation en Direct : Le système permet un accès immédiat à la sortie de la caméra concernée, offrant une compréhension visuelle précise de la situation en cours. La sortie de la caméra est streamée en direct sur une page web accéssible de partout.

Optimisation de trafic : Notre système est concu de telle sorte à optimiser les trafics sur le réseau en réduisant au maximum les répétitions d'alertes liés à une meme intrusion. On a mis en place un filtre permettant de filter le trafic rédondant.

Fonctionnement :

Le fonctionnement du système est décrit comme suit :

  1. On démarre le système
  2. Pour chaque camera
    1. On capture une frame
    2. On passe le frame au modèle de détection d'objection
    3. Si la sortie du modèle est une personne alors
      1. Si c'est une détection avant rien alors
        • On notifie l'utilisateur
        • On fait une capture vidéo de 30 sécondes que on envoie à l'utilisateur
        • On retourne à i
      2. Si c'est une détection alors qu'une capture est en cours alors
        • On notifie pas l'utilisateur
    4. On retourne à i

Prérequis

  • Système d'exploition : Linux (Dans notre cas Lubuntu)
  • Disposer de docker installer sur votre machine. Si ne l'avez voilà pas, voilà un lien vers un tutoriel très facile pour l'installer.
  • Disposer d'un réseau connecté à internet (Indispensable pour pouvoir envoyer les notifications via l'api Telegram)
  • Disposer deux camera IP au moins. Dans notre cas, nous avons simuler nos smartphones comme camera à l'aide de l'application IP Webcam disponible sur playstore et Applestore.
  • Créer un Bot telegram pour pouvoir l'intégrer au système pour les notifications. Voici un lien vers une vidéo pour en créer un.
  • Installer Git pour pouvoir cloner le dépot actuel de ce projet et installer le projet.

Comment Commencer :

Après avoir effectué tous les prérequis ci dessus, il faut passer aux étapes suivantes :

  • Installation de Node Red : Notre image docker est basé sur l'image nodered/node-red:3.1.0-debian qu'on a customisé pour ajouter la bibliothèque FFmpeg pour capturer et manipuler les flux vidéos en stréaming. Pour l'installation du container, on fait :
    Cloner le dépôt actuel

    git clone https://github.com/hamadouncisse/PROJECT_MTSC_NODE_RED.git

    Aller dans le répertoire node_red

    cd PROJECT_MTSC_NODE_RED/node_red

    Construiser l'image docker

    docker image build -t "test_red_node" .

    Lancer le conteneur docker

    docker run -p 1880:1880 -v node_red_data:/data test_red_node

    Ensuite il suffit d'ouvrir le navigateur et d'aller depuis votre naviguateur web sur le lien http://127.0.0.1:1880/ pour démarrer node.

  • Installation des bibliothèques de Node Red : Pour que le système fonctionne correctement, il est indispensable d'installer certaines bibliothèques. Dans le menu node red, il faut aller dans l'onglet manage palette, chercher et installer les bibliothèques suivantes :

    image

    image1

    Les bibliothèques sont :

    1. node-red-contrib-browser-utils
    2. node-red-contrib-image-tools
    3. node-red-contrib-tf-function
    4. node-red-contrib-tf-model
    5. node-red-contrib-tfjs-coco-ssd
    6. node-red-contrib-telegrambot
    7. node-red-contrib-image-output
    8. node-red-node-rbe
  • Importation du flow dans Node Red : Il suffit de selectionner l'onglet Import dans le menu de node red. Ensuite il faut sélectionner le fichier json à importer depuis l'explorateur de fichier.

    Alt text

    Une visulation du flow importé est donnée par la capture suivante :

    Alt text

  • Configuration des adresses IP des cameras : Dans notre cas, il existe plusieurs noeuds ou l'adresse IP de la caméra est spécifier pour capturer le flux vidéo. Pour l'adapter au votre, il faut remplacer les adresses présentes par les votres dans le noeud suivant :
    1. Decode RTSP stream 2
    2. function
    3. notification
    4. notification2
    5. Capture video
    Decode RTSP stream Notification
    Decode RTSP stream notification

    Dans le Decode RTSP Stream on a cette commande :

    ffmpeg -i http://192.168.43.164:8080/video -r 10 -t 30 -y -c:v libx264 -c:a copy /data/video2.mp4

    - ffmpeg: Le nom du programme que vous exécutez, qui est FFmpeg dans ce cas.

    -i http://192.168.43.164:8080/video: Spécifie l'URL du flux vidéo en tant qu'entrée pour la commande.

    -r 10: Définit le taux de trame (frame rate) de la vidéo de sortie à 10 images par seconde.

    -t 30: Limite la durée de la vidéo de sortie à 30 secondes.

    -y: Force l'écrasement du fichier de sortie s'il existe déjà, sans demander de confirmation.

    -c:v libx264: Spécifie le codec vidéo à utiliser pour la sortie. Dans ce cas, le codec H.264 (libx264) est utilisé. Cela permet de réencoder la vidéo avec le codec H.264.

    -c:a copy: Copie la piste audio de l'entrée vers la sortie sans réencoder. Si la source n'a pas de piste audio, cela n'affectera pas le résultat.

    /data/video2.mp4: Chemin et nom du fichier de sortie MP4 où la vidéo résultante sera enregistrée.


    Il important de savoir que dans notre flow actuel, on capture le flux vidéo depuis deux caméra, donc dans votre cas par exemple le premier Decode RTSP stream 2 on specifie l'adresse IP de la premiere caméra et pour le sécond Decode RTSP stream 2 on spécifie l'adresse IP de la séconde caméra.

Déploiement :

Après avoir effectué tous les prérequis ci dessus, il faut passer aux étapes suivant :

  1. Déployer le flux avec le menu Node Red
  2. Connecter le pc et les smarphones sur le meme réseau
  3. Cliquer sur le noeud Start Network

La figure suivante décrit le flow déployé :

Alt text

Démonstration :

La figure suivante décrit la détection d'une personne lors d'une capture de trame par les deux caméras IP :

Alt text

A partir de détection l'utilisateur récoit une notification via Telegram :

Notification 1 Notification 2
Notification1 notification2

La vidéo ci-dessus est la capture vidéo recu par l'utilisateur lors de la notification :

4_5870882064957444663.mp4

About

Bienvenue dans notre solution de détection d'intrusion. Notre projet offre une réponse aux défis de surveillance en combinant l'intelligence des réseaux de caméras avec la flexibilité de Node-Red.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dockerfile 100.0%