{"id":7052,"date":"2020-06-05T22:51:15","date_gmt":"2020-06-05T21:51:15","guid":{"rendered":"https:\/\/www.erroussafi.com\/?p=7052"},"modified":"2020-06-05T22:55:38","modified_gmt":"2020-06-05T21:55:38","slug":"creer-un-avatar-a-partir-de-votre-webcam-grace-au-deep-learning","status":"publish","type":"post","link":"https:\/\/www.erroussafi.com\/index.php\/2020\/06\/05\/creer-un-avatar-a-partir-de-votre-webcam-grace-au-deep-learning\/","title":{"rendered":"Cr\u00e9er un avatar \u00e0 partir de votre webcam gr\u00e2ce au Deep Learning"},"content":{"rendered":"\n<p>J&#8217;ai d\u00e9couvert r\u00e9cemment un article traitant d&#8217;un travail de recherche &#8220;First Order Motion Model for Image Animation&#8221; qui pr\u00e9sente un mod\u00e8le de deeplearning appliqu\u00e9 \u00e0 l&#8217;animation vid\u00e9o. Cette technique a \u00e9t\u00e9 pratiqu\u00e9 par plusieurs amateurs sur youtube sous le titre &#8220;deepfake&#8221;. J&#8217;ai retrouv\u00e9 quelques code pour pouvoir ex\u00e9cuter cela sur sa machine et voir le r\u00e9sultat. Je partage ici le projet init\u00e9 par un groupe de d\u00e9veloppeurs sur github, ainsi que comment mettre en place l&#8217;environnement de d\u00e9veloppement et aboutir \u00e0 un r\u00e9sultat.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Le travail des chercheurs tourne autour de quatres typologies de vid\u00e9o :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"775\" height=\"541\" src=\"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/teaser.png\" alt=\"\" class=\"wp-image-7054\" srcset=\"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/teaser.png 775w, https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/teaser-300x209.png 300w, https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/teaser-768x536.png 768w, https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/teaser-500x350.png 500w\" sizes=\"auto, (max-width: 775px) 100vw, 775px\" \/><\/figure>\n\n\n\n<p>Un r\u00e9seau neuronal pond\u00e9r\u00e9, \u00e0 l&#8217;image de ce qui a \u00e9t\u00e9 cr\u00e9e ici, est un r\u00e9seau o\u00f9 les liens entre les n\u0153uds ont des poids qui leur sont attribu\u00e9s. Les \u00e9l\u00e9ments d&#8217;un syst\u00e8me sont repr\u00e9sent\u00e9s comme des n\u0153uds (\u00e9galement appel\u00e9s acteurs ou sommets) et les connexions entre les \u00e9l\u00e9ments en interaction sont appel\u00e9es liens, ar\u00eates, arcs ou liens. Les n\u0153uds peuvent \u00eatre des neurones, des individus, des groupes, des organisations, des a\u00e9roports ou m\u00eame des pays, tandis que les liens peuvent prendre la forme d&#8217;amiti\u00e9, de communication, de collaboration, d&#8217;alliance, de flux ou de commerce, pour n&#8217;en nommer que quelques-uns.<\/p>\n\n\n\n<p>Nous allons utiliser le r\u00e9seau de neurone (VoxCeleb) qui va nous permettre d&#8217;utiliser la capture video de la webcam.<\/p>\n\n\n\n<p>Notre objectif est de pouvoir capturer le flux video, d&#8217;appliquer le mod\u00e8le machine learning, et \u00e0 partir d&#8217;une biblioth\u00e8que d&#8217;image, arriver \u00e0 sortir un flux vid\u00e9o qui reprend nos expressions faciales mais avec le mod\u00e8le. voir le r\u00e9sultat final ci dessous :<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"demo avatarify\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/v5wo9ONUlr8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Etapes<\/h2>\n\n\n\n<p>Pour pouvoir exploiter le code, nous allons installer Anaconda (lite) qui nous permettera de disposer de l&#8217;interpr\u00e9teur python, mais aussi des d\u00e9pendances assez rapidement :<\/p>\n\n\n\n<p>Voici le lien pour installer miniconda pour windows : <a href=\"https:\/\/docs.conda.io\/en\/latest\/miniconda.html#windows-installers\">https:\/\/docs.conda.io\/en\/latest\/miniconda.html#windows-installers<\/a><\/p>\n\n\n\n<p>Nous devons aussi installer la version Windows de GIT, un outil de contr\u00f4le de version qui va nous permettre de r\u00e9pliquer le code des chercheurs sur notre machine.<\/p>\n\n\n\n<p>Lien pour installer GIT for Windows : <a href=\"https:\/\/git-scm.com\/download\/win\">https:\/\/git-scm.com\/download\/win<\/a><\/p>\n\n\n\n<p>Suivre les \u00e9tapes de l&#8217;install, et une fois installez, lancez depuis le menu d\u00e9marrer le &#8220;Anaconda Prompt (miniconda3)&#8221;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/anaconda_1.png\" alt=\"\" class=\"wp-image-7053\" width=\"622\" height=\"507\" srcset=\"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/anaconda_1.png 981w, https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/anaconda_1-300x245.png 300w, https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/anaconda_1-768x626.png 768w, https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/anaconda_1-124x100.png 124w\" sizes=\"auto, (max-width: 622px) 100vw, 622px\" \/><\/figure>\n\n\n\n<p>Une fois lanc\u00e9, nous allons nous mettre dans un r\u00e9p\u00e9rtoire de travail et utiliser GIT pour r\u00e9pliquer le code \u00e0 travers les commandes suivantes et l&#8217;installer :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/alievk\/avatarify.git\ncd avatarify\nscripts\\install_windows.bat<\/code><\/pre>\n\n\n\n<p>Ensuite nous aurons besoin de t\u00e9l\u00e9charger les poids du r\u00e9seau qui sont les donn\u00e9es du r\u00e9seau neuronal cr\u00e9e par les chercheurs, nous allons donc t\u00e9l\u00e9charger les donn\u00e9es de voxceleb, et les mettre dans le repertoire de travail avatarify cr\u00e9e par git pr\u00e9cedemment (par d\u00e9faut, le prompt de anaconda s&#8217;ouvre dans c:\\users\\your-username\\..)<\/p>\n\n\n\n<p>Ces donn\u00e9es sont disponibles sur le lien google drive suivant : <a href=\"https:\/\/drive.google.com\/file\/d\/1coUCdyRXDbpWnEkA99NLNY60mb9dQ_n3\/view?usp=sharing\">https:\/\/drive.google.com\/file\/d\/1coUCdyRXDbpWnEkA99NLNY60mb9dQ_n3\/view?usp=sharing<\/a><\/p>\n\n\n\n<p>Ensuite, nous allons nous remettre sur le prompt anaconda pour d\u00e9marrer le programme avec la commande suivante toujours dans le repertoire de travail avatarify :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>run_windows.bat<\/code><\/pre>\n\n\n\n<p>Si tout est bien fait, une premi\u00e8re fen\u00eatre de capture de votre webcam va d\u00e9marrer, il vous sera demand\u00e9 de zoomer ou d\u00e9zoomer de telle facon \u00e0 contenir votre visage dans le rectangle rouge de capture, une fois le calibrage fait, appuyer sur X.<\/p>\n\n\n\n<p>une deuxi\u00e8me fen\u00eatre va d\u00e9marrer avec votre mod\u00e8le.<\/p>\n\n\n\n<p>Noter que le code arrive avec 9 avatars que vous pouvez changer en appuyant sur les touches de 0 \u00e0 9 et \u00e0 chaque fois que l&#8217;image n\u00e9cessite un recalibrage, refaire l&#8217;op\u00e9ration d\u00e9crite plus haut.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J&#8217;ai d\u00e9couvert r\u00e9cemment un article traitant d&#8217;un travail de recherche &#8220;First Order Motion Model for Image Animation&#8221; qui pr\u00e9sente un mod\u00e8le de deeplearning appliqu\u00e9 \u00e0 l&#8217;animation vid\u00e9o. Cette technique a \u00e9t\u00e9 pratiqu\u00e9 par plusieurs amateurs sur youtube sous le titre &#8220;deepfake&#8221;. J&#8217;ai retrouv\u00e9 quelques code pour pouvoir ex\u00e9cuter cela sur sa machine et voir le [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7055,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Avatarify - Cr\u00e9er un avatar \u00e0 partir de votre webcam gr\u00e2ce au Deep Learning","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[94,9],"tags":[],"class_list":["post-7052","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-open-source","category-technique"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/06\/featured.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts\/7052","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/comments?post=7052"}],"version-history":[{"count":0,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts\/7052\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/media\/7055"}],"wp:attachment":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/media?parent=7052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/categories?post=7052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/tags?post=7052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}