Machine learning pour le traitement d'image

Découvrez les techniques du Machine Learning (Apprentissage Automatique) / Deep Learning (Apprentissage Profond) avec OpenCV et en C++.

Objectif de la formation

Durant cette formation, nous ferons un tour d'horizon des principales techniques basées sur les réseaux de neurones (technique dite du "deep learning" ou "apprentissage profond") pour des applications en traitement d'image (classification d'images, détection d'objets, etc.). Pour ce faire, la formation alternera présentations théoriques et travaux pratiques (C++, OpenCV) où les participants pourront mettre en pratique immédiatement les algorithmes abordés sur des exemple concrets. Une machine virtuelle sera fournie en début de formation avec l'environnement complet de développement.

Durée de la formation

Trois jours

Date et lieu de la formation

Lieu : Toulouse, date : sur demande.

Inscription

Formulaire d'inscription disponible ici.

Contenu

I - Apprentissage Supervisé
Durant cette première partie, nous allons traiter de l'apprentissage dit supervisé, qui nous servira de cadre général pour formuler les réseaux de neurones et leur apprentissage.

  • Apprentissage supervisé : Principes, définition des problèmes de classification, de régression
  • Notions de probabilités : Notions essentielles pour bien comprendre les algorithmes d'apprentissage : lois de probabilités usuelles, probabilités conditionnelles, formule de Bayes, entropie, etc.
  • Représentation des causalités : Mélange de gaussiennes (MdG), modèles multi-modaux, etc.
  • Evaluer un algorithme d'AA : Comment quantifier les performance d'un classifieur ? Matrice de confusion, métriques classiques (précision, sensibilité, spécificité, justesse, etc.). Méthodologie de mesure (jeux d'apprentissage, validation, test).
  • Problèmes de sous / sur-apprentissage : Pouvoir de représentation d'un modèle, capacité de généralisation.
  • Quelques algorithmes classiques : K plus proche voisins, classification Bayésienne (normale), régression logistique.
  • Travaux pratiques : Mise en oeuvre des différents algorithmes sur des problèmes de classifications. L'objectif est d'avoir une bonne intuition des avantages / inconvénients de chacun (modèle de données sous-jacent, temps d'apprentissage / d'exécution, capacité de généralisation, etc.).

Exemples d'apprentissage statistique
II - Réseaux de Neurones Artificiels
Dans cette partie, nous allons étudier les RNA généralistes (de manière non spécifique au traitement d'image).

  • Réseaux de neurones : Structure en couches, optimisation par Descente de Gradient Stochastique (SGD), propagation arrière du gradient.
  • Fonctions de coûts classiques : Problèmes de régression (EQM, EAM), problèmes de classifications (Entropie Croisée Catégorielle).
  • Couches classiques : couches complétement connectées, non linéarités, distance cosinus, etc.
  • Couches de sortie : SoftMax, Logistique
  • Travaux pratiques (1) : Construction et entraînement d'un RNA pour la résolution d'un problème de classification simple
  • Techniques avancées : Descente adaptative (Adam), taux d'apprentissage variable, critères d'arrêt.
  • Techniques de régularisation : Régularisations L2, normalisation par lot ("batch normalization"), dropout
  • Travaux pratiques (2) : Construction et entraînement d'un RNA pour la classification d'images médicales, à partir de descripteurs LBP.

Exemples de réseaux de neurones
III - Réseaux Convolutifs
Dans cette partie, nous aborderons les réseaux de neurones dits convolutifs, des réseaux de neurones créés spécifiquement pour le traitement d'image. Nous étudierons en particulier les réseaux de classification, qui servent de base à beaucoup d'autres applications en traitement d'image (détection, segmentation, etc.).

  • Architecture des réseaux convolutifs : Convolutions 2d, réductions spatiales.
  • Réseaux classiques pour la classification : Historique et évolution des réseaux : LeNet, AlexNet, VGG16, GoogleNet, ResNet, etc.
  • Travaux pratiques (1) : Conception et apprentissage d'un réseau pour la reconnaissance de chiffres manuscrits (base MNIST).
  • Mise en oeuvre avec OpenCV : API, exemples. Chargement de réseaux pré-entrainés.
  • Travaux pratiques (2) : Classification d'image avec un réseau pré-entrainé sur ImageNet (Inception).
  • Apprentissage par transfert : Adaptation d'un réseau pré-entrainé sur une nouvelle tâche (classes spécifiques à un nouveau problème).
  • Travaux pratiques (3) : Classification d'images par transfert sur une petite banque d'images (à partir d'un réseau pré-entrainé Inception). Les participants pourront adapter ce TP avec leurs propres images / classes d'objets.

Exemples de réseaux convolutifs
IV - Réseaux Spécialisés

  • Détection et localisation d'objets : Famille d'algorithmes RCNN (RCNN, fast RCNN, faster RCNN, Mask RCNN).
  • Segmentation sémantique : Présentation de quelques algorithmes pour la segmentation pixel à pixel (Enet, etc.)
  • Détection avec pose : Algorithme OpenPose, exemples avec OpenCV (détection de personnes, mains).
  • Apprentissage de descripteurs : pour la détection d'objets avec peu d'exemples.
  • Quelques autres applications : Détection de contours, colorisation automatique, transfert de style, amélioration de la résolution, etc.

Exemples de réseaux convolutifs

Travaux pratiques

Tout au long de l'atelier l'ensemble des points abordés sera illustré par des exemples et de petits exercices en C++ / OpenCV qui vous permettront de mettre en oeuvre directement les notions abordées.