Cette vidéo montre comment les visages changent lorsque vous vous déplacez dans l’espace latent de 512 dimensions dans lequel ils sont intégrés dans une seule dimension à la fois. Il n’y a pas de vraies personnes dans cette vidéo. (Non-sens.) La plupart des vidéos montrant la déformation entre les visages à l’aide de StyleGAN2 ou de méthodes similaires se déplacent le long d’un vecteur correspondant à l’âge, à la taille de la bouche ou à la direction à laquelle la personne fait face, de sorte qu’elle vieillit ou que sa bouche s’agrandit, ou qu’elle tourne la tête . Ces changements s’accomplissent en suivant un vecteur créé par la somme de multiples dimensions, d’un endroit avec des « jeunes » à un autre, à une certaine distance, « la même personne mais plus âgée ». Ces voyages ont généralement d’autres effets secondaires (tels que le raccourcissement des cheveux en vieillissant ou la disparition de leur sourire lorsque leurs yeux s’agrandissent), car l’espace sous-jacent est gênant. Ils sont découverts au hasard et ajustés au cours de la phase d’apprentissage. Bien qu’ils aient tendance à équilibrer les caractéristiques dans différentes directions, ils sont essentiellement une combinaison de caractéristiques sélectionnées au hasard. Mon approche est légèrement différente : d’abord, j’ai limité l’espace de recherche à un petit nombre de dimensions (dans cet exemple, j’ai coché 5 possibilités sur les 21 vecteurs d’exploration auxquels je l’ai limité (ce code me limite aux dimensions (Au-dessus) 111 à 132 des 512 dimensions de l’espace latent choisissez ce que vous voyez) et déplacez-vous le long de l’une d’elles. Considérez cela comme un déplacement vers le nord, l’ouest ou le sud, vers le haut, l’est ou le bas. En plus de ces trois dimensions, vous en avez plus. Plutôt que “l’espace” que vous déplacez, c’est “l’espace du visage”. Même sans connaître la “direction” réelle du mouvement, vous pouvez comprendre le type de changements qui se produisent lorsque la vue se déplace d’une certaine manière, ainsi que l’espace à proximité dans la vidéo. (C’est-à-dire que vous remarquerez peut-être quelles “combinaisons de caractéristiques sélectionnées au hasard” sont affectées lorsqu’il se déplace vers “nord” et “sud”.) Généré dans la “position potentielle de l’espace” à partir de la direction de “Je suis” Je fais la prochaine chose différente : je vérifie le flou de l’image, si ce n’est pas trop grave, j’essaie de saisir des repères faciaux, si cela fonctionne, je calcule certains indicateurs et génère un score à partir de ces indicateurs. Dans cette séquence, j’utilise un score simple : les facteurs qu’il prend en compte sont : Plus c’est proche, mieux c’est. (Fondamentalement, le produit scalaire du vecteur de départ (normalisé) et du vecteur d’échantillonnage (normalisé). Considérez-le comme une longueur commune projetée sur l’autre.) – À quel point l’image est-elle floue ? Plus c’est net, mieux c’est. (En gros, j’obtiens la différence absolue moyenne normalisée entre deux flous gaussiens d’images avec des rayons différents ; plus il y a de détails dans l’image d’origine, plus le flou supprimé est important, et donc plus le score est élevé. Il s’agit d’un indicateur qualitatif, et uniquement utilisé entre les échantillons, pas dans le sens absolu, donc l’étalonnage n’est pas trop un problème.) – Jusqu’où suis-je allé ? Encore mieux. – Quelle est la largeur et la hauteur de chaque œil ? Le plus large et le plus haut, mieux c’est. -Combien occupe chaque œil ? Le moins sera le mieux. Les deux dernières tentatives étaient axées sur les grands yeux, mais je pense que cela les rend en fait soit grands, soit larges… doit être vérifié. Cependant, l’effet précoce est plus important. Une fois que j’ai trouvé quelqu’un avec un score élevé, j’essaie de m’éloigner de différentes distances le long du vecteur pour essayer d’obtenir un meilleur score. (Si je n’essaie pas de “faire une dimension à la fois”, alors il est facile de le laisser essayer la direction “à proximité” pour essayer d’optimiser la recherche de caractéristiques.) Ensuite, j’ai commencé à me diriger vers la position avec le score le plus élevé , et accéléré en douceur. Une fois que l’image commence à devenir trop floue, j’utilise les mêmes règles pour changer de direction. La seule situation où je ne me déplace pas le long d’une seule dimension, c’est quand je me perds (c’est-à-dire, si tout devient flou et que je ne peux voir aucun visage). Ensuite, j’ai marché jusqu’à un bon endroit connu jusqu’à ce que je puisse à nouveau voir le visage. Les taches sont essentiellement dues au fait que je quitte l’espace facial normal, et il y a moins de contraintes ici. Cela, et utilisez une petite gamme de couleurs. Oui RVB. L’outil que j’ai écrit pour cela s’appelle WRocket, car il vous permet de parcourir l’espace w (la surface spatiale potentielle qui existe dans StyleGAN). Dans tous les cas, le code peut éventuellement apparaître sur mon github. Si vous pouvez exécuter le code StyleGAN2, cela ne devrait poser aucun problème pour que mon code fonctionne. Je vais mettre à jour cette section et mettre un lien quand/si je le fais. Vous aurez besoin des liaisons Python pour dlib et d’autres packages aléatoires pouvant être installés à l’aide de pip (ou Anaconda). Mais voyons comment cela se passe. Oui, j’ai écrit une excellente description. Les 250 derniers caractères de toute mise à jour seront enregistrés. .