DeepDetect et LiveDetect pour les réseaux de neurones du serveur au Raspberry Pi 3

33
8
mai
2019
Technologie

DeepDetect est un logiciel libre développé par JoliBrain, dont la vocation est de rendre accessibles et utilisables les innovations récentes de l’apprentissage profond (deep learning) et de permettre de les intégrer au sein d’applications. DeepDetect est constitué de deux logiciels libres :

  • un serveur écrit en C++11 avec une API REST, permettant l’accès aux librairies sous‐jacentes Caffe, Caffe2, Tensorflow, Dlib, NCNN, etc. ;
  • une plate‐forme Web permettant d’entraîner, d’organiser et d’utiliser ses modèles comme des petits bouts de code.

DeepDetect Platform

La seconde partie en explique l’intérêt et présente un tutoriel d’installation sur Raspberry Pi.

Traitement de la vidéo via des réseaux de neurones sur Raspberry Pi 3 avec DeepDetect et LiveDetect.

Deep Learning et embarqué

Les avancées récentes de l’intelligence artificielle (ou, moins pompeusement, de l’automatisation avancée) sont en grande partie l’application de l’apprentissage profond (Deep Learning), permettant le traitement automatique du signal brut, ce qui restait difficile il y a une dizaine d’années. Dans ce contexte, il y a du sens à vouloir déplacer « l’intelligence » au plus près du capteur, pour un traitement local.

Rester au plus proche des capteurs permet aux applications Internet des objets (Internet of Things ou IoT) de réduire leur temps de traitement tout en améliorant la disponibilité de la bande passante et la construction d’applications locales fiables et sécurisées.

Il peut être contraignant de traiter des flux de données sur le « cloud » (informatique en nuage !) et ce pour différentes raisons :

  • l’envoi de données du capteur en continu accapare une part importante de la bande passante, rendant la gestion de flotte de capteurs complexe et coûteuse ;
  • le manque de disponibilité de la bande passante provoque également un allongement de l’aller‐retour rendant plus difficile l’utilisation de réseaux de neurones pour des applications critiques ;
  • le traitement des flux de données à distance oblige à stocker des données parfois peu pertinentes et lourdes (vidéo 4K) et parfois sensibles ou privées.

Traitement de la vidéo avec DeepDetect sur un Raspberry Pi 3

Le serveur DeepDetect est optimisé pour permettre d’obtenir des inférences depuis des serveurs avec processeurs central et graphique, jusqu’au Raspberry Pi 3, pour lequel il est optimisé via la bibliothèque NCNN modifiée par Jolibrain.

Ci‐dessous un tutoriel dans lequel nous installons DeepDetect pour Raspberry Pi avec un back‐end NCNN, et nous utilisons LiveDetect, un outil issu de l’écosystème DeepDetect pour le traitement des flux vidéo. Cela nous permet de détecter des objets en temps réel et de les afficher.

Afin d’installer un serveur DeepDetect sur la Raspberry Pi, nous utilisons Docker pour la simplicité et les bonnes performances.

Démarrer le conteneur Docker DeepDetect pour Raspberry Pi 3

mkdir $HOME/models
docker pull jolibrain/deepdetect_ncnn_pi3
docker run -d -p 8080:8080 -v $HOME/models:/opt/models jolibrain/deepdetect_ncnn_pi3

Détecter des objets dans une vidéo

wget https://github.com/jolibrain/livedetect/releases/download/1.0.1/livedetect-rpi3

./livedetect-rpi3 \
    --port 8080 \
    --host 127.0.0.1 \
    --mllib ncnn \
    --width 300 --height 300 \
    --detection \
    --create --repository /opt/models/voc/ \
    --init "https://www.deepdetect.com/models/init/ncnn/squeezenet_ssd_voc_ncnn_300x300.tar.gz" \
    --confidence 0.3 \
    -v INFO \
    -P "0.0.0.0:8888" \
    --service voc \
    --nclasses 21

Le rendu est alors disponible sur http://localhost:8888 avec entre deux et trois trames vidéo par seconde (FPS).

Le tutoriel complet pour Raspberry Pi 3 est disponible sur GitHub, ainsi que les exemples avec LiveDetect.

Vos retours nous intéressent ! Il n’est pas toujours simple de démarrer avec les réseaux de neurones, et nous souhaitons améliorer nos logiciels autant que possible.

Aller plus loin

  • # Deep learning

    Posté par (page perso) . Évalué à 4 (+2/-0).

    Tout d'abord, merci pour ce projet. Cela fait quelques années que je me documente et que je teste différentes méthodes pour le deep learning (J'ai adopté Keras), et je rêvais d'un outil comme cela, plus visuel tout en étant customizable…
    Je vais donc tester tout cela très rapidement, surtout que cela a l'air très documenté.

  • # Machine Learning et textes

    Posté par . Évalué à 4 (+2/-0).

    Question de noob (je m'y connais peu pas et j'avoue n'avoir pas encore creusé le sujet, c'est juste une réflexion qui m'est venue en lisant ce journal dc j'en profite) : Je vois régulièrement passer des outils permettant de classer ou faire de la détection auto sur des images. Quels outils existent en machine learning pour les textes ?
    Par exemple, si j'ai un corpus de commentaires LinuxFR et que je souhaite estimer la note que pourrait obtenir un commentaire test ? En posant ma question je réalise que ça ressemble au Filtrage bayésien du spam mais cet algo donne la probabilité pour un message d'être du spam, est-ce qu'il existe des algos (et surtout des implémentations…) permettant d'aller plus loin et de renvoyer une note probable ?

    • [^] # Re: Machine Learning et textes

      Posté par (page perso) . Évalué à 4 (+2/-0).

      J'avais essayé il y a quelques temps. Malheureusement, j'avais inclus la note dans les données par erreur, ce qui expliquait les bons résultats. Une fois la correction apportée, cela ne fonctionnait plus vraiment. Je n'ai malheureusement pas eu le temps de m'y replonger depuis. /o\

      J'espère néanmoins que la présentation générale des concepts et de la démarche te seront utiles.

      • [^] # Re: Machine Learning et textes

        Posté par . Évalué à 3 (+1/-0).

        Et bien j'avais raté cette dépêche mais elle est très instructive ! Ça me donne déjà une excellente base pour démarrer et savoir par où chercher.

        «Avertissement : je ne suis pas programmeur, ni statisticien.»

        Qu'est-ce que ça serait si tu l'étais !

    • [^] # Re: Machine Learning et textes

      Posté par (page perso) . Évalué à 4 (+2/-0).

      Tu peux essayer fastText, ils ont l'air de poser le score comme exemple d'usage:

      The goal of text classification is to assign documents (such as emails, posts, text messages, product reviews, etc…) to one or multiple categories. Such categories can be review scores

  • # livedetect-cpu

    Posté par . Évalué à 1 (+1/-0). Dernière modification le 09/05/19 à 19:02.

    j'ai essayer la version cpu sur mon pc mais cela ne marche pas.
    L'image docker semble bien se lancer mais quand de démarre livedetect-cpu cela génère une erreur dans docker.
    Mais sinon pour être concret a quoi cela peut servir ? le but pour moi serait d'interagir avec domoticz pour faire des scénario quand une voiture est détecter ou une personne….

    • [^] # Re: livedetect-cpu

      Posté par (page perso) . Évalué à 2 (+1/-0).

      Oui détecter une voiture ou une personne font déjà partie des modèles fournis. Nous faisons en sorte de rendre la mise en place simple et ouverte, mais nombre d'erreurs sont possibles, le chat Gitter https://gitter.im/beniz/deepdetect est un bon endroit pour demander de l'aide. Bon hacking de domotique !

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.