Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

XebiCon'16 : Utiliser le Deep Learning pour interpréter des photographies par Yoann Benoit, Data Scientist chez Xebia

380 views

Published on

Le Deep Learning est devenu l'une des branches de l'intelligence artificielle les plus en vogue ces derniers temps. Tous les grands du web investissent des fortunes pour faire avancer la recherche ainsi que le développement d'applications utilisant ces techniques. Cette présentation a pour but de vous introduire au Deep Learning en répondant à une question concrète : Peut-on détecter le sentiment d'une personne à partir d'une simple photo ? La question est simple, mais le chemin pour y répondre est semé d'embuches ! Nous parlerons pour cela des principaux concepts ainsi que des outils à votre disposition, avec un focus particulier sur TensorFlow.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

XebiCon'16 : Utiliser le Deep Learning pour interpréter des photographies par Yoann Benoit, Data Scientist chez Xebia

  1. 1. @xebiconfr #xebiconfr Utiliser le Deep Learning pour interpréter des photographies Yoann Benoit
  2. 2. @xebiconfr #xebiconfr Le Deep Learning 1 2
  3. 3. @xebiconfr #xebiconfr Reconnaissance d’images 3 1a
  4. 4. @xebiconfr #xebiconfr Reconnaissance vocale 4 1b
  5. 5. #XebiConFr 5
  6. 6. @xebiconfr #xebiconfr Analyse de sentiments sur des photographies 2 6
  7. 7. @xebiconfr #xebiconfr Mais pour quoi faire ? 7 2a Nouveau plugin Google Photos ? Satisfaction clients via vidéo ?
  8. 8. @xebiconfr #xebiconfr Sur quoi nous entraîner ? 8 2b Colère Tristesse
  9. 9. @xebiconfr #xebiconfr Quelques exemples 9 2c Surprise Joie
  10. 10. @xebiconfr #xebiconfr Quelques chiffres 10 2d Images 48x48 pixels Plus de 30 000 images labellisées 7 sentiments colère, dégoût, peur, joie, tristesse, surprise, neutre Performance Humaine : Entre 60 et 65%
  11. 11. @xebiconfr #xebiconfr En quoi ce problème est-il difficile ? ● Système visuel humain extrêmement complet ● L’être humain est très bon pour donner du sens à ce qu’il voit ○ Mais ce travail est fait de manière inconsciente 11 2e
  12. 12. @xebiconfr #xebiconfr En quoi ce problème est-il difficile ? ● Très difficile d’exprimer de manière algorithmique ce qui permet de reconnaître une image ● Machine Learning ○ Large échantillon d’images pour lesquelles on connaît le label => Apprentissage automatique de règles 12 2f
  13. 13. @xebiconfr #xebiconfr Les Réseaux de Neurones 3 13
  14. 14. @xebiconfr #xebiconfr De quoi est composé un Réseau de Neurones ? 14 3a De neurones ...
  15. 15. @xebiconfr #xebiconfr De quoi est composé un Réseau de Neurones ? 15 3a De neurones ... Associés en réseau …
  16. 16. @xebiconfr #xebiconfr Comment fonctionne un Réseau de Neurones ? 16 3b Softmax Chaque neurone intermédiaire représente une somme pondérée des valeurs des neurones de la couche précédente, associés à une fonction d’activation La dernière couche (softmax) est une normalisation de la couche de sortie afin que les résultats correspondent à des probabilités (sommant à 1)
  17. 17. @xebiconfr #xebiconfr Tout est une histoire de matrices 17 3c Y = xW + b classes = softmax(Y) [4, 2][1, 4][1, 2] [2]
  18. 18. @xebiconfr #xebiconfr Tout est une histoire de matrices 18 3d Y = XW + b classes = softmax(Y) [4, 2][K, 4][K, 2] Avec des batches d’images ... [2]
  19. 19. @xebiconfr #xebiconfr Tout est une histoire de matrices 19 3e Y = f(XW1 + b1) W2 + b2 classes = softmax(Y) [3, 2] [3][K, 2] [2][K, 4] [4, 3] fonction d’activation
  20. 20. @xebiconfr #xebiconfr Comment trouver les poids ? 20 3f Back-propagation: Mise à jour des poids en fonction du gradient des erreurs, de la dernière couche à la première
  21. 21. @xebiconfr #xebiconfr Comment trouver les poids ? 21 3f Back-propagation: Mise à jour des poids en fonction du gradient des erreurs, de la dernière couche à la première
  22. 22. @xebiconfr #xebiconfr Comment trouver les poids ? 22 3f Back-propagation: Mise à jour des poids en fonction du gradient des erreurs, de la dernière couche à la première
  23. 23. @xebiconfr #xebiconfr TensorFlow ● Framework de programmation open-sourcé par Google en 2016 ● Aujourd’hui en version 0.11 ● APIs en Python, C++ ● Principalement utilisé pour l’entraînement et l’utilisation de Réseaux de Neurones, et plus particulièrement pour le Deep Learning 23 3g Aujourd’hui l’un des frameworks les plus utilisés pour le Deep Learning, avec une documentation très riche.
  24. 24. @xebiconfr #xebiconfr Commençons simplement : SR (Softmax Regression) 4 24
  25. 25. @xebiconfr #xebiconfr Softmax Regression 25 4a
  26. 26. @xebiconfr #xebiconfr Softmax Regression 26 4a Inputs (= pixels)
  27. 27. @xebiconfr #xebiconfr Softmax Regression 27 4a Inputs (= pixels) Classes (= sentiment)
  28. 28. @xebiconfr #xebiconfr Softmax Regression 28 4a Inputs (= pixels) Classes (= sentiment) Poids
  29. 29. @xebiconfr #xebiconfr Softmax Regression - Résultats 29 4b 44.5% Nombre d'itérations Probabilité
  30. 30. @xebiconfr #xebiconfr 30
  31. 31. @xebiconfr #xebiconfr Approfondissons un peu : TNN (“Tiny Neural Network”) 5 31
  32. 32. @xebiconfr #xebiconfr Tiny Neural Network 32 5a
  33. 33. @xebiconfr #xebiconfr Tiny Neural Network 33 5a Inputs (= pixels) Classes (= sentiment) Poids
  34. 34. @xebiconfr #xebiconfr Tiny Neural Network 34 5a Inputs (= pixels) Classes (= sentiment) Poids Couche cachée / intermédiaire
  35. 35. @xebiconfr #xebiconfr Softmax Regression - Résultats 35 5b 44.5%
  36. 36. @xebiconfr #xebiconfr Tiny Neural Network - Résultats 36 5c 56%
  37. 37. @xebiconfr #xebiconfr 37
  38. 38. @xebiconfr #xebiconfr Continuons sur notre lancée : MSNN (“Medium Size Neural Network”) 6 38
  39. 39. @xebiconfr #xebiconfr Medium Size Neural Network 39 6a
  40. 40. @xebiconfr #xebiconfr Medium Size Neural Network 40 6a Inputs (= pixels) Classes (= sentiment) Poids Couches cachées
  41. 41. @xebiconfr #xebiconfr Tiny Neural Network - Résultats 41 6b 56%
  42. 42. @xebiconfr #xebiconfr Medium Size Neural Network - Résultats 42 6c 57.2%
  43. 43. @xebiconfr #xebiconfr 43
  44. 44. @xebiconfr #xebiconfr Allons-y gaiement : BFNN (“Big Fat Neural Network”) 7 44
  45. 45. @xebiconfr #xebiconfr Big Fat Neural Network 45 7a
  46. 46. @xebiconfr #xebiconfr Big Fat Neural Network 46 7a Inputs (= pixels) Classes (= sentiment) Poids Couches cachées
  47. 47. @xebiconfr #xebiconfr Medium Size Neural Network - Résultats 47 7b 57.2%
  48. 48. @xebiconfr #xebiconfr Big Fat Neural Network - Résultats 48 7c 58.1%
  49. 49. @xebiconfr #xebiconfr 49
  50. 50. @xebiconfr #xebiconfr Pourquoi les résultats ne s’améliorent pas ? 50 7e ● Normalement, un réseau plus profond permet d’apprendre des fonctions plus complexes Mais ... ● Différentes vitesses d’apprentissage des poids selon les couches ● La mise à jours des poids d’une couche dépend de celle des poids de la couche suivante (back-propagation)
  51. 51. @xebiconfr #xebiconfr Quelles solutions ? 51 7f Changement d’architecture de réseau ? Algorithme d’apprentissage plus avancé ? Changement de fonction d’activation ?
  52. 52. @xebiconfr #xebiconfr Nombre de paramètres à estimer 52 7g 2304 pixels * 7 poids + 7 biais = 16 135 paramètres
  53. 53. @xebiconfr #xebiconfr Nombre de paramètres à estimer 53 7g 2304*384 + 384 + 384*7 + 7 = 887 815 paramètres 2304 pixels * 7 poids + 7 biais = 16 135 paramètres
  54. 54. @xebiconfr #xebiconfr Nombre de paramètres à estimer 54 7g 2304*384 + 384 + 384*7 + 7 = 887 815 paramètres 2304*500 + 500 + 500*300 + 300 + 300*150 + 150 + 150*7 + 7 = 1 349 007 paramètres 2304 pixels * 7 poids + 7 biais = 16 135 paramètres
  55. 55. @xebiconfr #xebiconfr Nombre de paramètres à estimer 55 7g 2304*384 + 384 + 384*7 + 7 = 887 815 paramètres 2304*500 + 500 + 500*300 + 300 + 300*150 + 150 + 150*7 + 7 = 1 349 007 paramètres 2304*1000 + 1000 + 1000*750 + 750 + 750*500 + 500 + 500*300 + 300 + 300*150 + 150 + 150*7 + 7 = 3 627 757 paramètres 2304 pixels * 7 poids + 7 biais = 16 135 paramètres
  56. 56. @xebiconfr #xebiconfr Soyons plus intelligents : CNN (Convolutional Neural Network) 8 56
  57. 57. @xebiconfr #xebiconfr Réfléchissons un peu 57 8a ● Est-ce une bonne idée d’utiliser des réseaux de neurones où tous les neurones entre deux couches sont connectés entre eux ? ● Ce type de réseau ne prend pas en compte la structure spatiale de l’image
  58. 58. @xebiconfr #xebiconfr Réfléchissons un peu ● Est-ce une bonne idée d’utiliser des réseaux de neurones où tous les neurones entre deux couches sont connectés entre eux ? ● Ce type de réseau ne prend pas en compte la structure spatiale de l’image 58 8a
  59. 59. @xebiconfr #xebiconfr Réfléchissons un peu 59 8a ● Est-ce une bonne idée d’utiliser des réseaux de neurones où tous les neurones entre deux couches sont connectés entre eux ? ● Ce type de réseau ne prend pas en compte la structure spatiale de l’image
  60. 60. @xebiconfr #xebiconfr Réfléchissons un peu 60 8a ● Est-ce une bonne idée d’utiliser des réseaux de neurones où tous les neurones entre deux couches sont connectés entre eux ? ● Ce type de réseau ne prend pas en compte la structure spatiale de l’image
  61. 61. @xebiconfr #xebiconfr Réfléchissons un peu 61 8a ● Est-ce une bonne idée d’utiliser des réseaux de neurones où tous les neurones entre deux couches sont connectés entre eux ? ● Ce type de réseau ne prend pas en compte la structure spatiale de l’image
  62. 62. @xebiconfr #xebiconfr Réfléchissons un peu Peut-on trouver une architecture qui tire avantage de cette structure ? 62 8b
  63. 63. @xebiconfr #xebiconfr Réfléchissons un peu 63 8b Peut-on trouver une architecture qui tire avantage de cette structure ?
  64. 64. @xebiconfr #xebiconfr Réfléchissons un peu 64 8b Peut-on trouver une architecture qui tire avantage de cette structure ?
  65. 65. @xebiconfr #xebiconfr Réfléchissons un peu 65 8b Peut-on trouver une architecture qui tire avantage de cette structure ?
  66. 66. @xebiconfr #xebiconfr Réfléchissons un peu 66 8b Peut-on trouver une architecture qui tire avantage de cette structure ?
  67. 67. @xebiconfr #xebiconfr Réfléchissons un peu 67 8b Peut-on trouver une architecture qui tire avantage de cette structure ?
  68. 68. @xebiconfr #xebiconfr Réfléchissons un peu 68 8b Peut-on trouver une architecture qui tire avantage de cette structure ?
  69. 69. @xebiconfr #xebiconfr Réfléchissons un peu 69 8b Peut-on trouver une architecture qui tire avantage de cette structure ?
  70. 70. @xebiconfr #xebiconfr Réfléchissons un peu 70 8b Peut-on trouver une architecture qui tire avantage de cette structure ?
  71. 71. @xebiconfr #xebiconfr Réfléchissons un peu 71 8b Peut-on trouver une architecture qui tire avantage de cette structure ?
  72. 72. @xebiconfr #xebiconfr Réfléchissons un peu 72 8b Peut-on trouver une architecture qui tire avantage de cette structure ?
  73. 73. @xebiconfr #xebiconfr Hypothèses principales ● Associations locales ○ Tous les pixels ne sont pas connectés à tous les neurones cachés ○ Les connexions sont faites dans des petites zones localisées de l’image ● Mêmes poids et biais pour tous les neurones d’une même couche ○ Tous les neurones d’une même couche cachée détectent le même pattern (ex : un coin) ● Pooling ○ Souvent utilisés juste après une couche de convolution ○ Condenser l’information autour d’une région (max/mean) 73 8c
  74. 74. @xebiconfr #xebiconfr Première architecture utilisée 74 8d
  75. 75. @xebiconfr #xebiconfr Première architecture utilisée 75 8d
  76. 76. @xebiconfr #xebiconfr Première architecture utilisée 76 8d Convolutions Couche dense
  77. 77. @xebiconfr #xebiconfr Big Fat Neural Network - Résultats 77 8e 58.1%
  78. 78. @xebiconfr #xebiconfr Convolutional Neural Network 1 - Résultats 78 8f 62.8%
  79. 79. @xebiconfr #xebiconfr 79
  80. 80. @xebiconfr #xebiconfr Deuxième architecture utilisée 80 8h
  81. 81. @xebiconfr #xebiconfr Deuxième architecture utilisée 81 8h
  82. 82. @xebiconfr #xebiconfr Deuxième architecture utilisée 82 8h
  83. 83. @xebiconfr #xebiconfr Deuxième architecture utilisée 83 8h Convolutions Couche denseConvolutions
  84. 84. @xebiconfr #xebiconfr Convolutional Neural Network 1 - Résultats 84 8i 62.8%
  85. 85. @xebiconfr #xebiconfr Convolutional Neural Network 2 - Résultats 85 8j 64.7%
  86. 86. @xebiconfr #xebiconfr 86
  87. 87. @xebiconfr #xebiconfr Take Aways 9 87
  88. 88. @xebiconfr #xebiconfr BE SMART! ● Exploiter au mieux la structure de vos données. ● Certaines architectures sont plus adaptées pour les images, d’autres pour le texte, etc.
  89. 89. @xebiconfr #xebiconfr TEST AND LEARN! ● Pas de règles absolues sur les structures de réseaux de neurones qui fonctionnent le mieux. ● Tester intelligemment différentes structures et essayer de comprendre pourquoi l’une fonctionne mieux que l’autre.
  90. 90. @xebiconfr #xebiconfr DO NOT REINVENT THE WHEEL! ● L’écosystème autour du Deep Learning est en croissance continue. ● De plus en plus de frameworks sont disponibles et bien documentés (TensorFlow, Keras, etc.). ● Commencer avec des exemples connus puis se perfectionner par rapport aux données à disposition.
  91. 91. @xebiconfr #xebiconfr HAVE FUN! ● Introduction à TensorFlow - Martin Görner (Google) https://docs.google.com/presentation/d/1TVixw6ItiZ8igjp6U17tcgoFrLSaHWQm MOwjlgQY9co/pub?start=false&loop=false&delayms=3000 ● Neural Networks and Deep Learning - Online Book http://neuralnetworksanddeeplearning.com/ ● TensorFlow documentation https://www.tensorflow.org/
  92. 92. @xebiconfr #xebiconfr MERCI =)

×