Aider le patient à suivre son traitement avec l’intelligence artificielle.

Projet Pharmania en cours entre Montréal / Alger / Fort-de-France.
Plateforme visant à aider le patient à suivre son traitement. L’observance est le problème majeur des systèmes de santé. Nous visons à réduire les renouvellements de traitements et à améliorer la persistance des patients dans leur traitement. Nos outils : connaissance du terrain, intelligence artificielle. Projet pilote en développement au Québec. Bientôt en Martinique.

Reconnaissance automatique d’images en machine learning, avec Yolo, Python et Tensorflow

Comment développer concrètement une routine de reconnaissance d’images en temps réel. Avec Tensor Flow (Google), Python, et Yolo ?

Voici un exemple du résultat final.
Toute l’analyse de ce flux d’images est automatique. Les rectangles colorés, les tags, les mouvements sont générés par l’algorithme.
L’original est une vidéo filmée par un touriste à Saint-Martin. Un atterrissage spectaculaire à Juliana Airport.
L’objectif, pour un tour operator, était de classer automatiquement cette vidéo dans le bon dossier.

Les modèles utilisés ne sont pas infaillibles, loin de là.
L’entrainement est essentiel. Les modèles doivent recevoir un jeu de données d’entrainement très proches des futures images à analyser.  Prenons l’exemple d’une vidéo tournée à Trinidad, dans la rue. Les villes trinidadiennes sont particulièrement chaotiques…

Pas si mal. Les véhicules sont bien repérés, les piétons aussi… mais aussi :

Le manguier « broccoli » !

et

Stop soups !

Le manguier n’est pas un broccoli, les maisons ne sont pas des « trucks »… Un entrainement plus spécifique semble nécessaire pour s’y retrouver.
Tout ceci souligne l’importance culturelle de « training set » (jeu de données d’entrainement) : choisissez le le plus près possible des données futures.

Voici toutes les étapes nécessaires à la mise en place du moteur de reconnaissance.

Etape 1 : installer

Tensorflow est un framework de machine learning, open source, de Google.
Yolo, qui veut dire « You Only Look Once », c’est un réseau de neurones spécialisé dans la détection et l’analyse d’objets dans l’image. Sa grande force est la rapidité : il peut travailler en temps réel (à 45 im / sec). Yolo est plus rapide que des R-CNN, car il découpe l’image en petits blocs et génère des tenseurs pour chaque blocs.
Au départ Yolo était écrit en Darknet, une version plus User-Friendly TensorFlow a été développée : Darkflow.
Pour ceux qui veulent comprendre comment Yolo fonctionne : https://medium.com/@jonathan_hui/real-time-object-detection-with-yolo-yolov2-28b1b93e2088 ou (En savoir plus)
Enfin OpenCV (Open Source Computer Vision Library) est une librairie Python spécialisée dans la « vision machine ». (En savoir plus)

 

Etape 2 : Récupérer Darkflow sur github

 

Etape 3 : Créer un dossier

  • Créez un dossier sur votre bureau et déposez-y le repo darklow-master

Etape 4 : Faire un build

  • Il vous faut maintenant créer un « build » de la librairie.
    Important : Avec le terminal mettez vous dans le bon dossier (darklow-master).
    Ensuite entrez les lignes de code :
python setup.py build_ext --inplace

Vous devez voir un dossier « build » apparaitre dans le darkflow-master.

Etape 5 : Télécharger les weights

  • Sur le site de Yolo, récupérer les weights correspondant à notre version (ici la V2). Yolo a été entrainé sur le dataset COCO qui comporte 300 000 images.

  • Une fois les weights téléchargés :
  • Créez un dossier « bin »
  • Déposez les weights à l’intérieur

C’est terminé pour l’installation !

 

Etape 2 : la vidéo

Passons aux choses amusantes. Nous n’allons pas utiliser la webcam pour faire de la détection en temps réel, mais une vidéo enregistrée.

  • Récupérez une vidéo sur internet avec les éléments que vous souhaitez détecter.
    Eventuellement vous pouvez la raccourcir pour aller plus vite dans les analyses.
    Voici notre vidéo originale :

  • Déposez la vidéo à traiter dans le dossier darkflow-master
  • Nous allons ensuite lancer la détection sur le fichier vidéo
python flow --model cfg/yolov2.cfg --load bin/yolov2.weights
--demo stmarteen.mp4 --gpu 1.0 --saveVideo
  • Et voilà !
    Le système est lancé sur l’analyse de la vidéo, selon votre machine cela peut prendre « un certain temps ».
    Une fois l’analyse et le rendu effectués, il vous suffit d’ouvrir le fichier video.avi pour voir le résultat final.

 

Cette première approche nous permet d’imaginer toutes les applications en marketing / étude de comportement / détection de tendances. De même en sécurité (détection de présence, gestes « suspects » etc).

Le machine learning expliqué à ma fille

A quoi ça sert ?
Le machine learning sert à faire des prédictions et des classements à partir de données.
A partir de toutes les données : images, textes etc…
Donc le champ d’application est infini.

Le machine learning (ou apprentissage machine) se décompose en 4 grandes familles, selon la qualité de vos données :

Vous avez des données bien classées, bien annotées ?

Faites de l’apprentissage machine supervisé.
Exemple : Si vous avez des exemples déjà classés, la machine peut automatiquement classer des images selon leur contenu.

Ce type de machine learning donne deux types de résultats :

  1. Un chiffre (exemple : le loyer médian à Paris) – il s’agit alors d’une régression.
  2. Des données classées par groupe (exemple : classer les chiens et les chats) – il s’agir alors d’une association.

Vous avez des données « brutes », pas classées, vous ne savez pas quel type de résultat vous recherchez ?

Faites de l’apprentissage machine non supervisé.
Exemple : Trouver les groupes significatifs dans des millions de données non classées. C’est typiquement le cas pour les publicitaires qui classent des milliards de profils selon des critères d’habitude de vie, d’achat, de lieux… en plusieurs groupes plus petits.

Ce type de machine-learning donne deux types de résultats :

  1. Des données classées par groupe (exemple : les femmes actives de moins de 40 ans, avec un chat, à Londres) – il s’agit alors de clustering.
  2. Des procédures (patterns en anglais) qui permettent de faire de la prédiction (« Vous avez acheté X donc vous serez intéressés par Y ») – il s’agit alors d’association.

Vous avez quelques données classées et des données brutes ?

Faites de l’apprentissage semi-supervisé.
Exemple : En imagerie médicale vous avez des images déjà analysées et d’autres qui ne le sont pas. La machine va combler les vides de vos données.

Ce type de machine learning donnera sensiblement les mêmes résultats que l’apprentissage non-supervisé (clustering / association) mais avec beaucoup plus de pertinence.

Vous n’avez pas de données ?

Faites de l’apprentissage par renforcement.
Exemple : apprenez à votre robot à jouer à la belote ! C’est le type de machine learning le plus connu, avec les défi au jeu de Go, aux échecs etc… L’idée est de faire comme avec un enfant : récompenser la machine pour les bonnes réponses, avec le temps elle va apprendre à éviter les mauvaises ! La machine va collecter les données PENDANT le jeu. Donc il est possible de partir d’une page blanche.

… et bientôt on parlera d’apprentissage par transfert… domaine plus inquiétant car la machine sera capable d’appliquer des modèles appris dans un contexte à un autre contexte.

Le début d’une forme d’intelligence, artificielle.

L’info feel-good : Google va lancer une app pour guider les non-voyants

Elle s’appelle LOOKOUT et devrait être dispo sur le Store en fin d’année.
Son fonctionnement repose sur l’utilisation du téléphone porté autour du cou. L’appareil photo scanne – en temps réel ! – l’environnement et renvoie des indices auditifs au mal-voyant. Tout repose sur l’intelligence artificielle qui peut décomposer les éléments et renvoyer les indices aussi rapidement.

Interface de LookOut de Google

Je suis très à l’écoute de ces besoins, puisque nous développons une app dans la santé destinée aux mal-voyants. Et je dois saluer les efforts concrets des Amazon (avec Alexa), Microsoft et de Google. La voix est – pour moi – l’interface du futur.
Petite démo de l’app, avec une artiste mal-voyante…