News

Echanges avec Cédric Villani autour de l’IA, pour le Directeur scientifique.

#Emmanuel Frénod, Fondateur et Directeur scientifique de See-d échangera sur sa vision de l’intelligence artificielle avec une vingtaine de personnalités du monde académique et du numérique, à l’invitation de #Cédric Villani, député de la cinquième circonscription de l’Essonne, dans le cadre d’une mission sur l’intelligence artificielle qui lui a été confiée par le Premier ministre.   Emmanuel milite pour que les entreprises françaises refusent des technologies 100% Gafa et acquièrent des intelligences artificielles qu’elles maîtrisent.  La rencontre aura lieu ce jour.

Lire la suite

Imagerie Numérique

Par Rémy FOUCHEREAU – Chercheur – Docteur en Statistique
- Spécialiste de modélisation statistique appliquée au risque, à la fiabilité et aux prévisions -

Nous nous intéresserons aujourd’hui à un domaine où les techniques de Machine Learning ont permis des avancées prodigieuses en une dizaine d’années : L’imagerie numérique. L’essor des techniques de Deep-Learning a permis de créer des algorithmes de reconnaissance d’objets très efficaces. Cette révolution repose sur deux objets mathématiques : Les réseaux de neurones et les techniques de convolution. Nous verrons dans cette newsletter comment l’alliance de ces deux méthodes permet de reconnaître n’importe quel objet dans une image à condition d’avoir suffisamment de données labellisées en entrée.

La convolution : le couteau suisse.

  1. Introduction

Une des opérations la plus couramment utilisée en traitement numérique est le filtrage par convolution. En appliquant les bons paramètres, on peut flouter une image, en réduire le bruit, accentuer la netteté. On peut aussi chercher à détecter les contours présents dans celle-ci en détectant les pixels proches spatialement mais avec une intensité lumineuse très éloignée.

  1. Principe

Une image est un assemblage de pixels disposés sur une grille. A cette image nous allons associer un noyau de convolution qui va traiter un à un tous les pixels de l’image afin d’effectuer des opérations mathématiques dans le but de lisser, détecter les contours… (Le résultat ne dépend que du noyau de convolution choisi)
A)   On commence par choisir une image et un noyau de convolution :

1

Image (gauche) et son noyau de convolution (droite)

B)   On applique notre noyau de convolution pour chaque pixel de l’image, le pixel bleu de l’image en formation est calculé à partir des 9 pixels de l’image originale (en appliquant les coefficients donnés par le noyau de convolution)

2

Note : Le calcul est le suivant : pour chaque pixel de l’image initiale on applique le coefficient présent dans le noyau de convolution et on additionne le tout. Avec l’exemple ci-dessous cela donne :

3

On passe ensuite au groupe de pixels suivant :

4

On continue jusqu’à l’obtention de l’image complète :

5

  1. Exemples :

En reprenant ce principe avec la photographie d’Emmanuel Frenod, directeur général de See-D, on peut obtenir les différentes images ci-dessous :

6c    4.Utilisée comme première étape d’un grand nombre d’algorithmes.

La convolution sert de base à un grand nombre d’algorithmes, elle est souvent la première étape pour réaliser des tâches plus complexes (Détection de contours, localisation d’objets sur une image…)

11

12

Ci-dessus : Exemple de détection de contours. Filtre de Canny dont la première étape est une réduction de bruit. (Convolution avec un filtre gaussien – différents paramètres du filtre, du moins précis au plus précis).
Les réseaux de neurones
 
            Le but de ce chapitre ne sera pas de faire un cours complet sur les réseaux de neurones mais simplement de donner quelques explications sur le fonctionnement de ceux-ci. Les réseaux de neurones font partie de la famille des algorithmes par apprentissage. C’est-à-dire qu’à partir d’une base de données conséquente l’algorithme doit apprendre à reconnaitre des schémas observés et pouvoir faire une prédiction sur une nouvelle donnée jamais rencontrée.

Un modèle de réseau de neurones simple se présente de la façon suivante :

15

Exemple de réseau de neurone à 3 couches.

Dans notre cas, les données d’entrées sont tout simplement les pixels observés sur notre image (plus de 200 000 pour une simple image de 512 pixels par 512). Les sorties représentent ce que l’on cherche (l’image comprend elle un visage ou non ? une voiture ou non), il y en a autant de catégories à prédire que de neurones de sortie. La (ou les) couche cachée est celle qui va définir quels poids mettre aux données d’entrée pour déterminer les différentes valeurs de sortie. Il y a donc un grand nombre de poids à calculer (optimiser), ce qui explique la nécessité d’avoir un nombre de données conséquent afin d’ajuster au mieux ces poids.
Ce schéma fonctionne parfaitement pour des problèmes simples, toutefois pour l’imagerie on souhaite un modèle :
-       Avec beaucoup d’entrées

-       Capable de reconnaître des formes complexes (Un visage est beaucoup dur à détecter qu’un simple rond)

-       Il y a donc multiplication du nombre de neurones et de poids à calculer.

De ce fait, l’application directe du réseau de neurones aux pixels ne fonctionne pas. Une solution pour améliorer l’efficacité a été l’utilisation de réseaux de neurones de convolution.

Prendre le meilleur des 2 mondes : Les réseaux de neurones convolutifs.
 
  Les réseaux de neurones de convolution fonctionnent par agglomération de pixels à l’aide de filtres tels que vus dans le premier chapitre. Au lieu d’envoyer directement les pixels bruts à un réseau de neurones, on va essayer de détecter à l’aide d’une première couche des schémas grossiers de notre jeu de données. Pour aller vers des détections de plus en plus précises.
Sur la première couche cachée du réseau, la première convolution va nous permettre de détecter des orientations.

16

En associant ces différentes associations (et donc en réalisant à nouveau des convolutions, on va pouvoir distinguer des motifs récurrents sur notre ensemble d’apprentissage (yeux, nez…))

17

Enfin la dernière couche est celle qui à l’aide des sous-motifs, peut détecter la présence (ou l’absence) de face humaine dans une photographie.

(Le modèle est ici assez simple, dans les faits la première couche possède généralement plus de neurones et donc plus de motifs détectés – cf le réseau AlexNet « A. Krizhevsky, I. Sutskever, G. E. Hinton, ImageNet Classification with Deep Convolutional Neural Networks, 2012 ») :

19Une fois entraîné le réseau de neurones peut donc détecter la présence ou l’absence d’un visage sur une image :

20

Remarque : il est à noter que la difficulté de ce type de méthodes repose actuellement bien plus sur la qualité (et la taille !!!) de la base de données que sur le codage en lui-même. Celui-ci est en effet facilité par le développement de librairies informatiques telles que Tensorflow, Theano, Keras…

N’hésitez pas à nous contacter pour d’éventuels projets en imagerie, nous avons travaillé entre-autre sur :

-       La détection de rouille

-       La détection de la présence de tâches sur des haricots.

-       De la granulométrie

Lire la suite