Machine learning for image processing

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.