`Cet article est également présenté ici. '' https://cloud.flect.co.jp/entry/2020/04/02/114756#f-459f23dc
Dans les articles précédents et deux précédents, j'ai présenté comment traiter les images de caméra avec Teams et Zoom. Dans ces articles, nous présentons une démo qui détecte les sourires et les émotions (expressions) et affiche une marque de sourire.
https://qiita.com/wok/items/0a7c82c6f97f756bde65 https://qiita.com/wok/items/06bdc6b0a0a3f93eab91
Cette fois, je l'ai élargi un peu plus et j'ai essayé une expérience pour convertir l'image en style d'animation et l'afficher, donc je vais la présenter. Tout d'abord, je pense qu'il est difficile d'utiliser le CPU car le décalage est un peu trop important pour le convertir en image de type animation en temps réel. ~~ (Je n'ai pas essayé si c'est mieux avec le GPU.) ~~ ➔ Je l'ai essayé sur GPU. Environ 15fps sort. C'était incroyablement rapide.
Ensuite, je vais le présenter immédiatement.
Il semble qu'il ait été présenté dans les médias d'information il y a environ six mois, tant d'entre vous le savent peut-être, mais la méthode de conversion des photos en style anime est publiée sur la page suivante.
https://github.com/taki0112/UGATIT
Dans cet UGATIT, contrairement à la simple conversion de style image2image, il semble qu'il soit devenu possible de répondre aux changements de forme en ajoutant une fonction unique appelée AdaLIN basée sur la technologie dite GAN qui utilise Generator et Discriminator. est.
In our work, we propose an Adaptive Layer-Instance Normalization (AdaLIN) function to adaptively select a proper ratio between IN and LN. Through the AdaLIN, our attention-guided model can flexibly control the amount of change in shape and texture.
Pour plus de détails, consultez cet article [^ 1] et l'article de commentaire [^ 2], et lorsque vous effectuez une conversion en utilisant le modèle entraîné publié sur la page ci-dessus, cela ressemble à ceci.
Cela ne semble pas très bien se convertir si le sujet est éloigné. De plus, mon oncle ne semble pas être capable de le gérer très bien. L'ensemble de données utilisé dans la formation est également publié sur la page ci-dessus, mais il semble être biaisé envers les jeunes femmes, donc cela semble être la cause. (Je ne suis pas encore oncle, est-ce impossible?)
Comme mentionné ci-dessus, il semble nécessaire de faire une image proche du sujet (le visage de la personne) (≒ le visage occupe la majeure partie de l'écran). Cette fois, j'ai essayé la procédure d'identification de l'emplacement du visage avec la fonction de détection de visage introduite jusqu'à la dernière fois, en découpant l'emplacement et en le convertissant avec UGATIT.
Pour plus de détails sur l'implémentation, consultez le référentiel mentionné ci-dessous. [^ 3] [^ 3]: Depuis le 2 avril 2020, le code source est sale car il est fait par ajout et ajout. Refactoriser quelque part)))
Veuillez préparer v4l2loopback, modèle de reconnaissance faciale, etc. en vous référant aux Articles jusqu'à la dernière fois.
De même, comme précédemment, clonez le script à partir du référentiel suivant et installez les modules requis.
$ git clone https://github.com/dannadori/WebCamHooker.git
$ cd WebCamHooker/
$ pip3 install -r requirements.txt
UGATIT fournit officiellement le code source pour Tensorflow et PyTorch, mais il semble que le seul modèle formé soit la version Tensorflow. Obtenez ceci et déployez-le. De plus, il semble que l'extraction échoue avec l'outil d'extraction zip normal de Windows ou Linux. Il y a un rapport dans le problème que 7zip fonctionne bien avec Windows. De plus, cela ne semble pas poser de problèmes sur Mac. La solution pour Linux est inconnue ... [^ 4] [^ 4]: tous au 2 avril 2020
Pour le moment, la valeur de hachage (md5sum) du modèle qui fonctionne normalement est décrite. (C'est peut-être la principale pierre d'achoppement.)
$ find . -type f |xargs -I{} md5sum {}
43a47eb34ad056427457b1f8452e3f79 ./UGATIT.model-1000000.data-00000-of-00001
388e18fe2d6cedab8b1dbaefdddab4da ./UGATIT.model-1000000.meta
a08353525ecf78c4b6b33b0b2ab2b75c ./UGATIT.model-1000000.index
f8c38782b22e3c4c61d4937316cd3493 ./checkpoint
Stockez ces fichiers dans UGATIT / checkpoint
du dossier cloné à partir de git ci-dessus. Si ça ressemble à ça, ça va.
$ ls UGATIT/checkpoint/ -1
UGATIT.model-1000000.data-00000-of-00001
UGATIT.model-1000000.index
UGATIT.model-1000000.meta
checkpoint
L'exécution est la suivante. Une option a été ajoutée.
--Saisissez le numéro de périphérique webcam réel dans input_video_num. Pour / dev / video0, entrez le 0 de fin. --Spécifiez le fichier de périphérique du périphérique de webcam virtuelle pour output_video_dev. --Définissez anime_mode sur True.
De plus, veuillez utiliser ctrl + c pour le terminer.
$ python3 webcamhooker.py --input_video_num 0 --output_video_dev /dev/video2 --anime_mode True
Lorsque vous exécutez la commande ci-dessus, ffmpeg s'exécute et la vidéo commence à être livrée au périphérique de caméra virtuelle.
Comme auparavant, lorsque vous avez une visioconférence, vous verrez quelque chose comme factice ~ ~ dans la liste des appareils vidéo, alors sélectionnez-le. Ceci est un exemple de Teams. L'image source de la conversion est également affichée en balayant dans le coin supérieur droit de l'écran. Il sera converti en un style anime et livré plus que ce à quoi je m'attendais. Cependant, il est très lourd, et s'il s'agit d'un petit vieux PC, il est au niveau de 1 image par seconde (processeur Intel (R) Core (TM) i7-4770 à 3,40 GHz, 32 Go de RAM). Il peut être difficile de fonctionner normalement. Pour l'instant, je pense que c'est un personnel décrocheur. J'aimerais éventuellement l'essayer sur GPU.
Il peut être difficile de communiquer avec désinvolture car le travail à domicile est prolongé, mais je pense qu'il serait bon d'apporter ce genre de jeu aux vidéoconférences et d'activer les conversations. Je pense que nous pouvons faire plus, alors essayez-le.
Recommended Posts