Quand le Deep Learning se met à la peinture ?
Pour commencer cette première saison du podcast Human Coders, j'ai rencontré Anaëlle Laurans pour parler de Deep Learning.
Attirée par l'intelligence artificielle lors de ces études, Anaëlle travaille aujourd'hui pour Samsung AI Labs en tant qu'ingénieur en Machine Learning.
Cet épisode est donc l'occasion pour elle de partager ses connaissances sur le sujet et de donner quelques clés pour se lancer avec le projet Neural Style Transfer.
Très bonne écoute !
Interview réalisée par @nivdul
Transcription de l'épisode
Ludwine Probst : Bonjour à tous et à toutes et bienvenue. Vous écoutez les podcasts Human Coders. Dans chaque épisode, j'invite un ou une développeuse pour parler de techno, de pratiques de développement ou tout simplement de sujets en lien avec l'informatique. Au programme également, des parcours de dev qui, j'espère, vous inspireront.
Je retrouve aujourd'hui Anaëlle Laurans, ingénieure spécialisée en Machine Learning, pour parler de Deep Learning. Alors qu'est-ce que le Deep Learning ? Quels outils utiliser pour en faire ? Et où retrouve-t-on le Deep Learning dans notre quotidien ? Voici quelques-unes des questions auxquelles Anaëlle va répondre. Enfin, si vous avez envie de vous lancer dans le Deep Learning, restez jusqu'au bout : Anaëlle va vous présenter le projet Style Transfer, idéal pour faire ses premiers pas. Bonjour Anaëlle.
Anaëlle Laurans : Bonjour Ludwine. Merci de m'avoir accueillie.
Ludwine Probst : De rien. Est-ce que tu pourrais te présenter ?
Anaëlle Laurans : Oui, bien sûr. Je m'appelle Anaëlle. J'ai une passion pour l'intelligence artificielle depuis plusieurs années maintenant. Cela m'a amenée à faire un Master en Data Science et Machine Learning jusqu'à aujourd'hui où je fais du Deep Learning (ou apprentissage profond en français) au sein de Samsung AI Labs. Pour donner une idée de ce que je fais au quotidien, mon rôle est d'exploiter les articles scientifiques du domaine Deep Learning et Machine Learning pour amener ces dernières avancées au sein de produits ou de services. À côté de ça, je blogue aussi un peu sur mes projets personnels, toujours sur le Deep Learning.
Ludwine Probst : D'accord, donc c'est très recherche ce que tu fais.
Anaëlle Laurans : C'est très recherche, mais en même temps c'est de la recherche appliquée. C'est assez gratifiant de pouvoir avoir un produit ou une démonstration à la fin.
Qu'est-ce que le Deep Learning ?
Ludwine Probst : Tu as cité deux mots-clés : Machine Learning et Deep Learning. Est-ce que tu peux rappeler, pour ceux qui ne connaissent pas trop, ce qu'on appelle le Deep Learning ?
Anaëlle Laurans : Le Deep Learning est une technologie qui s'appuie sur les réseaux de neurones pour faire de l'apprentissage par l'exemple. C'est une cascade de fonctions. Chaque sous-fonction a une entrée et une sortie qui vont être transférées d'une couche à l'autre. Une couche est une sous-fonction. Chaque sous-fonction va accorder un poids à la donnée qu'elle reçoit. Par exemple, si tu dois trouver un ballon rouge, tu vas accorder du poids à une forme sphérique et à la couleur rouge. Le réseau de neurones va faire la même chose. Mais avoir un réseau de neurones ne suffit pas, il faut aussi avoir des exemples, beaucoup d'exemples, pour qu'il apprenne à généraliser, pour trouver un ballon rouge dans toutes ses formes, avec du reflet, etc. Ce qui est fascinant avec le Deep Learning, c'est qu'on arrive à expliquer des tâches à l'ordinateur par l'exemple. Avant toute méthode de Machine Learning ou Deep Learning, il fallait encoder et dire avec des règles ce qu'on essayait de retrouver, alors que maintenant, avec l'exemple, c'est beaucoup plus facile.
Ludwine Probst : Si je comprends bien, la différence entre le Deep Learning et le Machine Learning, c'est cette histoire de couches ? Il y a cette notion de couches successives où tu vas de plus en plus en profondeur pour aller reconnaître ou trouver des spécificités dans ton jeu d'exemples ?
Anaëlle Laurans : Le Deep Learning est compris dans le Machine Learning. On est toujours dans l'apprentissage par l'exemple. C'est juste que dans le Machine Learning, on va retrouver des méthodes beaucoup plus simples comme des régressions linéaires ou ce qu'on appelle aussi des Random Forests. Ce sont d'autres méthodes mais qui ont toujours l'idée d'apprendre par l'exemple. Le Deep Learning a vraiment cette idée d'architecture de réseau de neurones qui en fait sa spécificité.
Le Deep Learning dans notre quotidien
Ludwine Probst : Pour que ce soit un peu plus concret pour les gens qui nous écoutent, est-ce que tu pourrais donner des exemples de choses qu'on retrouve tous les jours et pour lesquelles on utilise des méthodes de Deep Learning ?
Anaëlle Laurans : On en retrouve dans la recommandation, par exemple de films sur Netflix ou de produits sur Amazon. On en retrouve aussi quand on tape un SMS, avec l'autocomplétion qui propose "je", puis "suis" juste après. Derrière tout ça, il y a du Deep Learning. Pour des choses plus fun, il y a des applications qui permettent de reconnaître des plantes ou le chant d'un oiseau. On en retrouve aussi un peu partout dans l'appareil photo : le fait qu'il zoome sur votre visage ou le visage d'une personne pour faire le focus, il peut y avoir des méthodes de Deep Learning derrière.
Ludwine Probst : En fait, si on reprend ce que tu as expliqué avant, pour retrouver la face ou la tête, j'imagine qu'il sait que l'algorithme a des yeux, un nez, une bouche et, par couches successives, il va essayer de reconnaître chacun des éléments ?
Anaëlle Laurans : C'est ça. Au niveau de la première couche, il va extraire les contours. Au fur et à mesure, avec ces contours, il va pouvoir associer un doigt, puis avec un doigt constituer une main, etc. Pareil pour le visage : avec ces contours, il va constituer certains motifs comme des sphères qui, combinées avec d'autres traits, vont devenir des yeux. Il va reconnaître des motifs de plus en plus complexes et c'est comme ça qu'il va reconnaître qu'à cet endroit-là, il y a un visage.
Faut-il être bon en mathématiques ?
Ludwine Probst : Tu t'es spécialisée en Data Science et en Machine Learning. Quand j'étais développeuse, j'entendais souvent dire que le Machine Learning les intéressait mais qu'ils n'avaient pas les connaissances en maths. Ils s'imaginaient qu'il fallait absolument avoir fait des maths à haut niveau pour en faire. Qu'est-ce que tu en penses ?
Anaëlle Laurans : Je pense que ce n'est pas forcément le cas. Pour commencer, les maths du lycée suffisent. On fait beaucoup de statistiques et de calcul matriciel dans le Deep Learning. Au final, le calcul matriciel, c'est un tableau dans lequel on va parfois faire la somme d'une colonne ou d'une ligne avec un autre tableau pour donner un résultat. Ce n'est pas si compliqué à comprendre. De plus, toutes les formations qu'on trouve aujourd'hui mettent l'accent sur le côté pratique tout en gardant la dimension mathématique.
Ludwine Probst : Et j'imagine aussi qu'il y a des librairies qui sont faites pour le Machine Learning et qui intègrent directement des algorithmes. On n'a pas forcément besoin de comprendre tout ce qu'il y a derrière, même si c'est mieux, pour faire ces modèles ?
Anaëlle Laurans : Même moi, parfois quand je ne comprends pas les maths, je vais chercher le code qui va avec et je me dis : "Ah génial, j'ai compris ce que voulait dire cette équation". Pour ceux qui veulent se lancer, vous pouvez !
Les outils : TensorFlow et PyTorch
Ludwine Probst : Je voulais qu'on parle des outils à notre disposition pour faire du Deep Learning. J'ai pas mal entendu parler de TensorFlow et tu m'avais parlé de PyTorch.
Anaëlle Laurans : Pour TensorFlow, c'est Google. Ils ont intégré une autre librairie qui s'appelle Keras, qui permettait de faire des modèles de Deep Learning de façon plus simple. Aujourd'hui, TensorFlow a beaucoup de choses. Ils sont en train de sortir une version 2 qui simplifie pas mal les choses. À côté de ça, j'ai une préférence pour PyTorch, qui est soutenu par Facebook. Ils sont plus proches de la version Python et, pour débugger, je peux utiliser mon outil de débug habituel. Je trouve que c'est beaucoup plus simple à utiliser. Mais c'est vrai que TensorFlow a une énorme communauté derrière, plus grande que PyTorch, ce qui fait qu'on peut trouver énormément de ressources. C'est un bon point pour tous ceux qui veulent se lancer. Par exemple, Google met à disposition une plateforme qui s'appelle Colab et qui vous permet de lancer un modèle et d'expérimenter dans votre navigateur avec des GPU. C'est vraiment très bien pour commencer car, au début, il pouvait y avoir un problème sur toute la partie matérielle qui demandait des machines puissantes. Aujourd'hui, vous lancez un Colab, vous pouvez tester PyTorch ou TensorFlow dessus et vous faire votre propre avis.
Ludwine Probst : J'ai l'impression qu'on parle souvent du langage de programmation Python quand on parle de Machine Learning ou Deep Learning. Est-ce que c'est le cas et est-ce qu'on peut en faire avec d'autres langages ?
Anaëlle Laurans : C'est vrai que Python est beaucoup utilisé. Je pense que c'est lié à la communauté de scientifiques qui préfèrent utiliser Python car c'est beaucoup plus simple. Mais on peut faire du Deep Learning avec d'autres langages. On a Deeplearning4j pour Java, TensorFlow.js pour le JavaScript. TensorFlow est un peu partout, aussi dans le C++ et d'autres langages. Côté Apple, on a Core ML pour coder avec Swift. Il y a pas mal de frameworks pour pouvoir faire du Deep Learning et du Machine Learning dans d'autres langages.
Le projet Neural Style Transfer
Ludwine Probst : Pour finir, je voulais qu'on parle d'un projet sympa que tu m'avais suggéré : le projet Style Transfer.
Anaëlle Laurans : Le projet Style Transfer a pour idée de générer une image dans le style d'un artiste. Vous avez une photo de vous et vous voulez qu'elle soit dans le style de Van Gogh, par exemple. Votre image et le tableau de Van Gogh choisi vont être donnés à un réseau de neurones. À l'intérieur, le réseau va extraire les éléments qui composent votre visage (les contours, les yeux, le nez, la bouche, etc.). Il va aussi prendre le tableau de l'artiste et essayer d'extraire son style : comment il a dessiné le nez ou le visage. Il va essayer de transposer votre nez dans le nez du style de Van Gogh. Il va faire ça pour toute la photo et à la fin vous aurez une image stylisée.
Ludwine Probst : Et du coup, il y aura une couche qui va s'occuper du contour du visage, une couche qui va se focaliser sur les yeux ?
Anaëlle Laurans : Au sein d'une même couche, on va plutôt parler de niveaux de représentation. Les premières couches vont avoir des représentations très simples de la photo : les contours les plus simples, les verticales, les horizontales, les diagonales. Au fur et à mesure qu'on monte de niveau, le réseau va être capable de combiner les motifs extraits des couches précédentes pour en former de nouveaux. On a les verticales, horizontales et diagonales, et dans la couche suivante, il va les combiner pour former un ovale. Dans la couche suivante, il va utiliser d'autres éléments pour affiner cet ovale en un visage avec plus de forme au niveau du menton et des cheveux. Plus on monte de niveau, plus la représentation du visage va être riche. On part de quelque chose de très simple pour arriver à quelque chose de beaucoup plus complet et complexe.
Ludwine Probst : Et est-ce qu'on voit en "live" la création du visage ?
Anaëlle Laurans : Dans ce projet, on ne voit pas en live la création du visage. Il y a par contre pas mal de vidéos qui montrent comment fonctionnent les réseaux de neurones, notamment ce qu'on appelle les réseaux de convolution, au fur et à mesure de leurs couches.
Ludwine Probst : Donc pour ceux qui voudraient se lancer, ils ont juste besoin d'une photo d'eux et d'une photo d'une peinture d'un artiste qu'ils aiment bien. Est-ce qu'il y a d'autres choses à faire ou à paramétrer ?
Anaëlle Laurans : Il y a énormément de tutoriels là-dessus dans plusieurs types de langages. Au niveau des paramètres, il n'y a pas énormément de choses à changer en suivant les tutoriels. Il faut vraiment avoir ses images, suivre les étapes, apprendre et voir le résultat.
Ludwine Probst : Et il y a un peu de code à faire quand même ?
Anaëlle Laurans : Il y a un peu de code, sinon ce ne serait pas drôle !
Conseils pour progresser
Ludwine Probst : Est-ce que tu as des conseils à donner à ceux qui seraient tentés ?
Anaëlle Laurans : Faire de la pratique ! Pour moi, c'est pratiquer car c'est un domaine qui se comprend le mieux en expérimentant.
Ludwine Probst : Tu me disais que tu faisais quelques concours parfois ? Je sais qu'il y a les concours Kaggle.
Anaëlle Laurans : La principale plateforme est Kaggle car elle propose des compétitions de tous niveaux. Surtout, vous avez une communauté derrière où vous pouvez comparer les résultats ou récupérer des idées d'autres personnes. Cela permet de s'enrichir, de gagner de l'expérience et d'être meilleur à la fin.
Ludwine Probst : Eh bien merci beaucoup Anaëlle. À vos claviers pour tester ce projet Style Transfer et n'hésitez pas à partager avec nous vos images stylisées. À bientôt dans un nouvel épisode du podcast Human Coders. N'hésitez pas à venir en discuter sur notre blog, sur notre Discord ou à nous suivre sur les réseaux sociaux. À très bientôt !
Informations sur l'épisode
- Date de publication
- Saison
- 1
- Épisode
- 1
- Durée
- 16:56
- Série
- Human Coders Podcast
Pour aller plus loin
Consultez l'article sur notre blog pour approfondir le sujet.