La chasse aux champignons

Documentation

Présentation

Qui n'est jamais tombé devant un champignon en forêt et ne s'est pas demandé s'il était comestible?

Avec Mushroom Discovery, j'aimerais offrir aux plus aguéris comme aux cueilleurs du dimanche la possibilité d'en apprendre davantage sur les champignons qu'ils découvrent à travers un affichage en temps réel. Les champignons que vous trouverez n'auront plus aucun secret pour vous !

Usage

Cette application permettra aux utilisateurs, en prenant en photo un champignon, d'obtenir des informations sur celui-ci depuis leur smartphnone : comestibilité, méthode de cuisson, recette, etc.

Il suffit de sortir son téléphone et de prendre sa découverte en photo. L'intelligence artificielle s'occupe du reste !

L'utilisateur verra alors les informations sur le champignons comme ci-dessous:

Screenshot n°1 - découverte du champignon
Screenshot n°2 - informations sur le champignon

Partie technique

Technologies

L'application sera disponible sur smartphone. C'est pourquoi je vais la concevoir à partir d'une FullStack Javascript.

ML5

ML5, pour Machine Learning 5, est une librairie javascript basée sur TensorFlow. Grâce à cette librairie j'ai accès à des modèles pré-existants, c'est-à-dire des intelligences artificielles déjà entrainées à reconnaître des objets ou des êtres humains.

En présentant une photo de ce que je souhaite déterminer, je pourrai entraîner mon propre modèle pour plus de précision dans l'identification des espèces de champignons.

Voici ci-dessous un exemple avec P5 et ML5 pour une reconnaissance en utilisant le modèle MobileNet.

            
               // Initialize the Image Classifier method with MobileNet. A callback needs to be passed.
let classifier;

// A variable to hold the image we want to classify
let img;

function preload() {
  classifier = ml5.imageClassifier('MobileNet');
  img = loadImage('images/bird.jpg');
}

function setup() {
  createCanvas(400, 400);
  classifier.classify(img, gotResult);
  image(img, 0, 0);
}

// A function to run when we get any errors and the results
function gotResult(error, results) {
  // Display error in the console
  if (error) {
    console.error(error);
  }
  // The results are in an array ordered by confidence.
  console.log(results);
  createDiv('Label: ' + results[0].label);
  createDiv('Confidence: ' + nf(results[0].confidence, 0, 2));
}
            
            
            
Node.js

J'utiliserai le moteur V8 Javascript disponible sur Google Chrome pour le Back-end grâce à Node.js. Node étant connu pour sa rapidité cela permettra à l'application d'être plus efficace.

Express

Je couplerai le serveur Node.js avec le framework Express dans le but de construire ma propre API. L'API servira à alimenter en données le Front et permettra aux développeurs d'intégrer mon service dans leurs applications.

Dans cet exemple je crée une route API dans laquelle je peux mettre le nom du champignon en temps que paramètre. Je cherche ensuite dans la base de données le champignon en question, puis je renvoie son document à l'utilisateur lorsqu'il est trouvé. Le document contient toutes les informations utiles et intéressantes sur l'espèce du champignon.

            
            
            // server.js
                          const express = require('express');
              const app = express();
              const trees = require('./schemas/mushroom.js');
              
              app.get("/mushroom/:name", (req, res) = {
                trees.find({name : req.params.name}).then(doc = {
                res.json(doc);
                })
              })
              
              app.listen(3000, () = {
                console.log("App running on port 3000");
              })
            
            
React Native

La framework pour l'application mobile sera React Native. Développé et maintenu par Facebook.

Ce framework permettra de développer l'application pour Android et IOs en utilisant le même code.

Avec React il sera possible de construire une interface rapide, intuitive et moderne pour mon application avec des composants réutilisables.

MongoDB

La base de données utilisera la technologie MongoDB. Cette technologie permettra aux utilisateurs de recevoir les données le plus rapidement possible grâce à un stockage sur le Cloud. Le développement sera de plus accéléré par sa facilité d'intégration avec les autres technologies Javascript. Les documents MongoDB étant des JSON.