Transcript for:
Découverte de Python et Vision par Ordinateur

Les amis, si vous avez envie d'apprendre le langage Python, peu importe que vous soyez débutant ou non, je vous propose de découvrir 5 projets révolutionnaires, ou en tout cas extrêmement utiles au quotidien. Vous pourrez vous baser dessus pour apprendre le langage le plus populaire au monde. simplement les utiliser. Je vous donne le lien en description également pour télécharger l'éditeur de code PyCharm afin de commencer de votre côté très facilement. On commence tout de suite avec le premier ou les deux premiers projets dans cette vidéo et on verra la suite dans une autre vidéo. Pour commencer je tenais à vous parler de ce qu'on appelle en anglais le computer vision c'est à dire la vision assistée par ordinateur. C'est une discipline qui est en pleine expansion qui fait partie de tout ce qui est intelligence artificielle, deep learning, etc. Et on va par exemple essayer avec l'ordinateur de suivre un visage. Vous connaissez sans doute l'application Snapchat qui permet par exemple d'appliquer des filtres. Et nous ferons tout pour faciliter les trajets et le quotidien de nos concitoyens travailleurs transfrontaliers. et le service de santé des armées et tous les volontaires de la réserve de salut de faire du fait soit donc de changer le visage entre deux personnes ou tout simplement voilà de suivre une main ou un corps entier et d'ainsi de pouvoir interagir avec un ordinateur je vais vous montrer l'exemple pour commencer et puis on va voir un petit peu comment tout cela fonctionne et comment mettre cela en place je suppose donc que vous avez pas et charme d'installer Il vous faudra également installer MediaPipe de Google et OpenCV Python. Je vous donne les détails sans doute en description pour ne pas faire trop long, ou en tout cas je vais en parler dans un instant, mais je vais déjà vous montrer ce que ça donne pour que vous ayez un aperçu avant de commencer, et que vous sachiez de quoi il en retourne. Vous voyez donc ma webcam qui s'est allumée, et vous voyez directement le maillage sur mon visage qui me suit en direct, avec les yeux, la bouche, etc. Et vous voyez que même si je bouge vite, il me suit très bien. avec également les FPS, les frames per seconde qui sont affichés à l'écran pour que vous voyez un petit peu à quel point cela permet d'être efficace point de vue ordinateur. Et pourtant là, on utilise seulement le processus... de mon ordinateur, le CPU. On n'utilise pas la carte graphique, on pourrait quand même le faire pour encore plus optimiser tout ceci. Mais vous voyez que mon visage est directement suivi. Et grâce à ça, c'est ce que je disais, on peut appliquer beaucoup de choses. Regardez, même si ma main passe devant, le programme arrive à reconstruire quand même mon visage. Il faut vraiment réussir à le masquer complètement pour qu'il ne me trouve plus. Et encore, vous voyez que c'est vraiment efficace. Et là, on est bien en Full HD, on n'est pas dans une résolution assez faible. Pour donc mettre tout cela en place, on utilise tout simplement deux modules de bibliothèques de code qui sont déjà préconstruites. En tant que programmeur, il y a deux types de programmeurs, on peut très bien programmer ses bibliothèques nous-mêmes, mais on peut aussi ne pas réinventer la roue, utiliser... a été créé pour ensuite en faire diverses applications comme ici un simple exemple de maillage pour le coup lorsque vous avez pas et charme d'installer si vous voulez installer les modules en question soit vous passez la souris dessus comme je le fais puis vous cliquez sur installe package soit vous allez dans fichiers ou files Settings ou Paramètres vous sélectionnez votre projet, puis Python Interpreter Et là, vous cliquez sur le petit Plus et puis vous tapez OpenCV-Python Alors, je le dis en anglais et en français en même temps, OpenCV-Python voilà. Et vous installez également, alors je crois qu'il faudra aussi NumPy peut-être, c'est pas sûr. Il vous faudra en tout cas MediaPipe et OpenCV Vous mettez les deux là, et puis si jamais il a besoin de autre chose, vous les installez de la même façon. Une fois que ceci est fait, vous pourrez copier ou en tout cas taper ce code et voir ainsi ce que ça donne. Alors pour vous expliquer rapidement ce code, tout d'abord ce qu'on fait c'est qu'on utilise la bibliothèque OpenCV pour justement Computer Vision et Video Capture pour obtenir la vidéo sous. que l'on souhaite utiliser pour notre pistage du visage pour le coup ici le paramètre qui est demandé c'est tout simplement l'identifiant du périphérique que vous voulez chez moi c'est un ma webcam actuelle il peut ça peut être être 0 normalement par défaut 0 1 2 peu importe ça dépend en fait de combien de web cam ou de dans quel ordre elle est dans votre ordinateur donc si ça marche pas avec 0 mettez 1 et ainsi de suite alternativement vous pouvez également ici j'ai mis en commentaire utiliser une vidéo qui est déjà pré enregistré par exemple ici j'ai un dossier j'ai créé un dossier vidéo avec un fichier test point mp4 d'une autre de mes vidéos et regardez bien si je lance le programme et bien il va faire tout ce qui fait directement sur ma vidéo là vous voyez qu'il suit à nouveau mon visage. Et regardez bien, même un deuxième visage qui est statique ici est aussi détecté parce qu'on peut décider dans le programme de choisir combien de faces de visages on peut détecter. Vous voyez que c'est ici max name face, le nombre maximum de visages, on a mis 2. Donc tout ça pour dire qu'on charge ici tous les modules, toutes les choses dont on a besoin pour faire fonctionner ceci avec le face mesh qui est donc... Donc le maillage du visage. Ici, on a le Drawing Spec, qui sont en fait les paramètres de dessin. Vous voyez, par exemple, on a Thickness, qui est l'épaisseur du maillage. Par exemple, si je mets 1, alors du coup, je vais garder ma vidéo pour l'exemple. Vous voyez que c'est beaucoup plus fin et du coup, on le voit même presque plus bien. A l'inverse, si je mets 3, vous imaginez que ça sera beaucoup plus gros. Je vais remettre 2 et vous avez également le Circle Radius. Ça, c'est le rayon. de cercle, si ici je mets plus gros, et bien vous voyez que les cercles sont tout simplement plus gros sur le visage. Après c'est juste pour vous montrer comment ça fonctionne avec les petits profilements que vous pouvez faire. On a ensuite le Frame Width et le Frame Height qui sont les dimensions de la vidéo. Ici on est en full HD et puis on définit tout ça sur notre cap qui était pour rappel notre vidéo et on a une boucle. C'est la boucle qui va afficher tout simplement tout ce tracking, ce pistage sur le visage et puis on choisit les couleurs. On a la fonction process qui permet d'obtenir les landmarks, c'est à dire tous les différents points sur notre visage. Je ne sais plus combien il y en a par défaut. Je crois qu'il y en a... Dans les 48, je ne sais plus exactement. En tout cas, c'est cette fonction-là qui permet de faire ceci. Et ensuite, pour chaque visage, on a une boucle fort. Pour chaque face, visage détecté, on va dessiner le maillage dessus. Alors, je crois que par défaut, en fait... Pour aller plus vite, ce que fait ce module, c'est qu'il va d'abord détecter le visage. Une fois qu'il a le maillage dessus, il va juste faire du tracking. Il va juste essayer de suivre le visage. Il ne va pas à chaque fois, à chaque image de la vidéo, re-tester. redétecter le visage, sinon ce serait beaucoup plus problématique, beaucoup plus difficile à faire, et plus long également. Donc on fait ceci, et puis là on calcule tout simplement les FPS, avec le calcul, un divisé par le temps, la seconde actuelle, ou la milliseconde d'ailleurs actuelle, par rapport à la milliseconde précédente, et ce calcul nous fait simplement le FPS qu'on affiche ensuite, avec put text ici, avec la bonne police, avec la couleur également. Et ensuite, IM, show, c'est la... Le plus important ici, c'est celui-là qui va tout simplement nous afficher notre image avec notre maillage sur le visage. Et enfin, on a le waitKey qui dit au programme qu'il attend une touche. Et si la touche, c'est ici le numéro 27, s'échappe, on break, on arrête toute notre boucle. C'est-à-dire qu'on arrive à la fin du code et qu'on arrête notre fenêtre. Voilà donc pour les explications. J'espère que ça suffit. Si jamais vous avez besoin de savoir un petit peu mieux comment ça fonctionne, N'hésitez surtout pas, et c'est ce que je vous conseille vraiment si vous souhaitez apprendre le langage Python, prenez tout ce code-là, je vous le donne dans la description, vous le copiez, vous essayez de modifier les paramètres, vous essayez de le comprendre, et potentiellement vous essayez ensuite d'appliquer vos propres changements dessus pour comprendre et apprendre cette discipline de la vision assistée par ordinateur. Je vous montre un deuxième exemple qui est beaucoup plus adapté à un cas vraiment pratique, parce que là on va se dire, bon, il y a un maillage, c'est bien, ça fonctionne, mais... on peut pas faire grand chose en tant que tel et bien c'est facile je vais vous montrer un ce qui est un peu plus grand qui lui va en fait récupérer notre main il va en fait nous pister la main et grâce à ça on va pouvoir changer le volume de notre ordinateur simplement avec nos doigts comme ça en augmentant ou en diminuant le volume et ceci en temps réel grâce à cette détection de notre main. Le code est donc ici, je le lance. Voilà, on a lancé notre webcam, donc là vous voyez à nouveau, cette fois-ci on a fait une fenêtre un peu plus petite, et puis vous voyez une barre de volume justement, en rectangle sur ma droite ou gauche, je ne sais pas, et donc regardez bien, si je mets ma main, Et bien c'est ma main qui est cette fois-ci détectée, où vous voyez qu'entre mon index et mon pouce, j'ai une barre violette rose qui est en fait la barre de volume. Et vous voyez qu'en même temps, si je réduis, ça me réduit, et si j'augmente, je peux aller à 100%. Après, il faut peut-être que je sois au bon endroit. Comme ceci, le point devient vert, c'est-à-dire qu'on est à 0, et puis on peut passer comme ça jusqu'à 100. Et donc, pour vous montrer que ça marche en temps réel, je vais en même temps ouvrir la petite barre de volume de Windows. voilà et maintenant regardez bien le curseur bouge vraiment en même temps si ça ne bug pas le curseur bouge vraiment en même temps et je peux donc définir comme ça mon niveau de volume puis bien sûr si je lance une vidéo en même temps je crois que ça va me péter les oreilles voilà donc une application très pratique de ce qu'on pourrait faire faire ce serait par exemple pratique pour des personnes je sais pas qui souhaitent interagir avec un écran sans souris ou qui vous si on a un problème particulier peut-être même un handicap ben tout ce qui est vision comme ça assisté par ordinateur peut servir pour contrôler différemment les différents système, les différents périphériques et de manière générale tout simplement tout ce qui est système informatique. Ce code donc c'est un peu plus compliqué que le code précédent, on a un module ici, je vous ai mis toutes les sources, les codes ne sont pas de moi, je les ai repris, je les ai potentiellement adaptés. peaufinée, mais ici, les crédits sont là, et la personne a fait une classe en Python qui permet de récupérer la main et la position des différents doigts, et de ce qu'on appelle les landmarks en anglais. Pour vous montrer un exemple de ça, ces landmarks si je descends un petit peu ici dans mon main en fait vous voyez qu'on récupère ici les deux doigts le doigt numéro un le pouce de numéro 4 et le doigt de l'index qui est le numéro 8 alors pourquoi ces numéros là parce que c'est assez important à comprendre si je relance de nouveau ma caméra et bien si je mets ma main comme ça vous voyez des points rouges donc en fait ils sont tous numérotés on a le 0 tout en bas ensuite on a le 1 2 3 4 c'est pour ça qu'on a le point ici qui est numéro 4 ensuite on arrive là 5 6 7, 8, c'est pour ça que le 8, on est tout en haut ici, et le 4, on est là. Donc par exemple, si je compte tous les autres, je crois que j'arrive ici à 20, le tout dernier. Donc je pourrais très bien modifier mon programme et puis me dire que je veux non pas le 8 ici, mais le 20. Ce qui va un petit peu me compliquer la tâche sans doute quand même. Je vais relancer le programme. Et là regardez, je me complique un peu la tâche, mais à présent c'est mon auriculaire et mon pouce qui permettent de gérer le volume. Vous voyez qu'on peut ainsi choisir au niveau de la main, faire des opérations en fonction de ces différents points, de ces différents landmarks. Vous voyez que ça capte très bien et bien sûr si je prends mon autre main, ça fonctionnera tout aussi bien si j'arrive dans quel sens me mettre. Là vous voyez que ça fonctionne vraiment très bien. Pour aller un petit peu au-delà et voir non pas cette fois-ci un script Python, mais un autre exemple pratique, je vous propose également WebGazer, qui est un projet permettant de suivre la position des yeux et ainsi de contrôler... chose juste avec les yeux ça c'est je parlais avant des personnes qui seraient par exemple handicapés qui aimeraient interagir avec des systèmes sans souris eh bien on pourrait imaginer que dans le futur on puisse le faire avec les yeux grâce à ce type d'application ça c'est un site web que je vous donne dans la description et que vous pouvez utiliser pour tester directement chez vous sans rien installé. Vous voyez ici qu'avec ma caméra, j'ai un petit maillage sur mon visage. Alors, je vais me mettre bien au milieu de ce carré vert. Et ce qu'on va faire pour commencer, c'est qu'on va devoir calibrer tout de même notre application, notre programme. Donc, ce que je vais faire, c'est qu'avec mon curseur, je vais regarder avec mes deux yeux forcément le curseur et je vais cliquer. Je vais faire pareil ici. Pareil là. Pareil ici Ici Ici Ici On va mettre au milieu également. Et maintenant, si je sors mon curseur, j'essaie de regarder la petite boule jaune. Et puis, vous voyez que j'arrive à pousser toutes les boules bleues directement, juste avec, bon ça demande peut-être un peu de pratique, mais j'arrive directement à contrôler. Vous voyez, si je regarde en haut à droite, si je regarde en bas à droite. Alors peut-être qu'il manque encore un petit peu un calibrage. Je vais essayer de le refaire un peu mieux. Voilà, et comme ça, vous voyez qu'on peut s'amuser un petit peu, juste avec les yeux, à bouger tout ce... Voilà, regardez, je me regarde moi-même. Et on pourrait ainsi imaginer interagir avec l'ordinateur, par exemple en regardant quelque chose, en clignant des yeux. Voilà, j'ai regardé en plein sur la boule jaune, ça a fonctionné. Et on pourrait imaginer comme ça qu'on puisse cliquer, qu'on puisse interagir avec différents... différentes applications. Enfin, autre exemple, j'en ai fait ici un autre projet, c'est tout ce qui permet de détecter un masque. Par exemple, vu avec la situation sanitaire actuelle, on est tous habitués maintenant à porter des masques, et bien, un des scripts... populaire par rapport à ça, c'est de détecter si on porte ou non un masque. Et pour cela, il y a une petite différence ici, c'est qu'on a ce qu'on appelle ici des fichiers cascade, qui permettent, on est là dans les réseaux neuronaux, donc dans l'intelligence artificielle, où on va en fait entraîner le programme avec plein plein plein d'images de personnes qui portent un masque, et plein plein d'images de personnes qui ne portent pas de masque. Et grâce à ça, le programme va être entraîné, on va pouvoir exporter les résultats dans ce type de fichiers, et ainsi on va pouvoir opérer nos... détection de ce type de de ce qu'on veut en fait par exemple avec ce masque donc j'ai lancé le programme A nouveau, il va fonctionner avec mon webcam. Donc là, c'est un peu la même manière qu'avant. Vous voyez que le programme se ressemble avec le white key, etc. Je n'ai pas entré dans le détail du code, mais vous voyez ici le vidéo capture 1 de nouveau, qui est celui de ma caméra. Vous voyez qu'on a l'image en noir et blanc. En fait, par défaut, le programme utilise le noir et blanc pour pouvoir détecter le masque. Et vous voyez d'ailleurs qu'il aura un petit peu de mal dans mon cas, parce que j'ai tout mon visage qui est blanc. Donc ce que je devrais faire, c'est de mettre un petit peu de lumière et ce que j'aurais dû faire d'abord, c'est peut-être réduire la luminosité. pour que j'ai peut-être un peu plus de... Vous voyez, un peu plus de mon visage qui apparaît. Et donc, si je mets mon masque, vous voyez qu'il détecte que j'ai mis mon masque avec masque. Ça ne détecte pas exactement bien, parce que c'est comme ce que je vous disais avant, il y a le petit souci du noir et blanc ici. Mais du coup, si je l'enlève, vous voyez qu'il a bel et bien détecté ici que je n'ai pas de masque. Et donc, peut-être que si je fais avec ma... on arrive également à détecter. Voilà donc un autre exemple d'application que vous pouvez créer tout simplement avec ce type d'outil. J'espère donc que ces courts exemples vous ont permis d'en savoir un petit peu plus sur cette discipline et vous permettre d'apprendre pourquoi pas le langage Python en vous basant là dessus sur des projets concrets, des projets d'avenir. N'hésitez pas à prendre ce code, à l'adapter, à créer vos propres projets. Si jamais vous avez des questions, n'hésitez pas à me les poser en commentaire et je vous dis à la prochaine pour la suite.