Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Machine Learning et Deep Learning
  3. Le deep learning
Extrait - Machine Learning et Deep Learning Des bases à la conception avancée d'algorithmes (exemples en Python et en JavaScript)
Extraits du livre
Machine Learning et Deep Learning Des bases à la conception avancée d'algorithmes (exemples en Python et en JavaScript)
1 avis
Revenir à la page d'achat du livre

Le deep learning

Introduction

La compétition ImageNet permet à des data scientists du monde entier de s’affronter en utilisant leurs meilleurs algorithmes de reconnaissance d’images. L’objectif est de proposer l’algorithme qui aura le meilleur score de prédiction. Au début, la majorité des algorithmes utilisés faisaient partie de la catégorie machine learning. Mais en 2012, un algorithme de deep learning remporte pour la première fois la compétition. L’année d’après, la plupart des compétiteurs choisissant des algorithmes de deep learning. Pourquoi le deep learning l’a-t-il emporté ? Et qu’est-ce que le deep learning ?

Comment ça, des neurones ?

Le deep learning fait partie de l’intelligence artificielle. Il s’agit donc d’une technique permettant de prendre en input des données et d’obtenir un résultat de régression ou de classification au travers d’un traitement statistique, l’objectif final étant d’imiter certaines capacités propres aux êtres intelligents (reconnaissance de sons et d’images, prise de décisions rationnelles…). La particularité du deep learning est qu’il s’inspire du fonctionnement des neurones du cerveau humain. Le cerveau humain contient environ 100 milliards de neurones. On en trouve également dans l’intestin (aussi appelé ’’deuxième cerveau’’), environ 500 millions, et dans le cœur, environ 40 000. L’architecture globale du cerveau est évidemment extrêmement complexe, avec environ 1 million de milliards de synapses (connexions). Bien que la recherche ait permis d’en comprendre de nombreux aspects, il reste encore énormément à découvrir.

images/14ri01.png

Les neurones biologiques, au même titre que les muscles, sont des cellules excitables. Le neurone reçoit des stimulations captées par le corps cellulaire. Une fois un certain seuil atteint par ce dernier, un signal bioélectrique (influx nerveux)...

Comment fonctionnent les neurones artificiels ?

Comme dit précédemment, le deep learning s’inspire des recherches sur les neurones du cerveau humain. Dans les années 1940, les travaux des scientifiques Warren McCulloch, Walter Pitts et Frank Rosenblatt permettent d’aboutir à un modèle mathématique simple qui représente un neurone artificiel. Le résultat de leur travail est un neurone artificiel simplifié ressemblant à ceci :

images/14ri02.png

L’information qui entre dans le neurone correspond aux flèches d’input. Elle est traitée par le neurone et ensuite transmise au travers d’un output aux autres neurones qui lui sont connectés. Il s’agit du perceptron, le type de réseau de neurones le plus simple, servant d’algorithme d’apprentissage supervisé pour effectuer des classifications binaires (entre deux classes).

Néanmoins, le modèle du perceptron est trop simple. Un seul neurone ne permet pas de résoudre des problèmes complexes, de la même façon que l’équation obtenue par la régression linéaire simple (équation d’une droite affine f(x) = ax+b) n’est pas adaptée aux problèmes dont les données évoluent selon une courbe (alors que l’équation d’un polynôme du second degré pourrait convenir par exemple). Plus précisément, le perceptron ne permet de classifier que des données linéairement séparables. Pour arriver à résoudre des problèmes plus complexes avec des neurones, il faut les mettre en réseau au travers de couches.

images/14ri03.png

Un réseau de neurones dont le but est de prédire si les données...

Les applications

La compétition ImageNet permet à des data scientists du monde entier de s’affronter en utilisant leurs meilleurs algorithmes de reconnaissance d’images. L’objectif est de proposer l’algorithme qui aura le meilleur score de prédiction. Au début, la majorité des algorithmes utilisés faisaient partie de la catégorie machine learning. Mais en 2012, un algorithme de deep learning remporte pour la première fois la compétition. L’année d’après, la plupart des compétiteurs choisissent des algorithmes de deep learning. Aujourd’hui, les algorithmes de deep learning sont plus performants qu’un humain pour ce qui est de la reconnaissance d’images. Les applications sont également nombreuses dans le domaine médical, où ils aident déjà les médecins à diagnostiquer certaines maladies. Le deep learning a également permis de grands progrès dans le domaine de la reconnaissance vocale en étant capable de reconnaître un message - mais également une langue précise - et de le transformer en texte (speech-to-text). Mais plusieurs questions se posent : Pourquoi le deep learning a-t-il remporté la compétition ImageNet ? En quoi consiste exactement le deep learning ?

Classification supervisée avec du deep learning

Google est un des leaders dans le domaine de l’intelligence artificielle et notamment la reconnaissance d’images. Google donne accès à une API qui permet de tester son savoir-faire en matière de reconnaissance d’images.

 Puis descendez sur la zone Try the API.

 Uploadez une image de votre choix pour que l’API effectue une prédiction.

L’image suivante montre le résultat de la prédiction : à 89 %, il s’agit d’un lion !

images/14ri06.png
images/p250.png

Illustration des étapes permettant d’entraîner un modèle à la prédiction d’images d’animaux

Nous allons nous aussi programmer un réseau de neurones permettant de reconnaître une image. Nous allons l’entraîner uniquement pour distinguer un chien d’un chat au travers d’une caractéristique unique : la taille du museau. Ci-après le code Python :

from sklearn.neural_network import MLPClassifier 
import numpy as np 
 
caracteristiques = np.array([3, 16, 19, 5, 4, 25]) 
groupe = np.array([1, 0, 0, 1, 1, 0]) 
 
pmc = MLPClassifier(solver="adam", hidden_layer_sizes=(5, 2)) 
pmc.fit(caracteristiques.reshape(-1, 1), groupe) 
 
print("Le score de prédiction...

D’autres modèles très puissants

Le deep learning est très utilisé dans des domaines comme la reconnaissance d’images. Les réseaux de neurones convolutifs sont particulièrement adaptés à cette problématique. Ils fonctionnent en appliquant successivement des filtres sur une image, chaque filtre extrayant une caractéristique (contour, visage…) de l’image qui va être analysée à des fins de classification.

VGG16 est un réseau de neurones convolutifs qui a remporté la compétition ImageNet ILSVRC (ImageNet Large Scale Visual Recognition Challenge) à laquelle participent les meilleurs laboratoires de recherche du monde spécialisés en vision par ordinateur. L’objectif du concours est de reconnaître des images parmi 1 000 catégories ou classes (http://image-net.org/challenges/LSVRC/2014/browse-synsets). VGG16 a été construit par le laboratoire de recherche d’Oxford Visual Geometry Group. Il prend en entrée une image en couleur de taille 224 x 224 pixels et renvoie un vecteur de taille 1 000 qui contient les probabilités d’appartenance à chacune des classes. En rangeant le vecteur, on peut donc trouver la classe la plus probable pour une image donnée. 

Le code ci-après peut être utilisé sur Google Colaboratory. Il permet...

La bibliothèque OpenCV

La très puissante bibliothèque OpenCV (https://opencv.org) permet d’effectuer des traitements particulièrement effficaces sur des images et des vidéos. En particulier, elle implémente des algorithmes de deep learning préentraînés par exemple pour la reconnaissance faciale. Ce prétraitement interne permet d’avoir accès aux algorithmes les plus performants du moment dans une version optimisée (une CPU suffit alors que souvent une GPU est requise pour de gros calculs).

Le code ci-après permet de dessiner un carré autour d’un visage dans une image. L’image choisie est celle de Mona Lisa. N’oubliez pas d’installer OpenCV via pip grâce à la syntaxe : !pip install opencv-python.

import cv2 
img = cv2.imread("https://upload.wikimedia.org/wikipedia/ 
commons/thumb/e/ec/Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_ 
from_C2RMF_retouched.jpg/1200px-Mona_Lisa%2C_by_Leonardo_ 
da_Vinci%2C_from_C2RMF_retouched.jpg", 1) 
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
path = "haarcascade_frontalface_default.xml" 
 
visage_cascade = cv2.CascadeClassifier(path) 
 
visages = visage_cascade.detectMultiScale(gray,  
scaleFactor=1.10, minNeighbors=5, minSize=(40, 40)) 
print(len(visages)) 
 
for (x, y, w, h) in visages: 
    cv2.rectangle(img...

Faire du deep learning avec JavaScript

Il est également possible de faire du deep learning avec JavaScript au travers des bibliothèques suivantes :

  • ml5.js

  • Brain.js

  • Tensorflow.js

Le code ci-dessous utilise le modèle pré-entrainé MobileNet, issu de la bibliothèque ml5.js, pour classifier des images :

<!DOCTYPE html> 
<html> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/ 
p5.min.js"></script> 
<script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"> 
</script> 
<body> 
<h1>Classification d'image</h1> 
<h2>Utilisation de MobileNet et ml5.js</h2> 
<div id="result">Chargement ...</div> 
<img id="image" src="https://upload.wikimedia.org/wikipedia/
commons/thumb/b/b5/Lion_d%27Afrique.jpg/580px-Lion_d%27Afrique.jpg" 
width="100%"> 
<script> 
// Initialisationdu de l'algorithme de classification d'image avec 
Image MobileNet. 
const classifier = ml5.imageClassifier('MobileNet'); 
classifier.classify(document.getElementById("image"), gotResult); 
  // Fonction à lancer quand le résultat arrive 
  function gotResult(error, results) { 
const element = document.getElementById("result"); if (error) { 
element.innerHTML...