[PYTHON] Comment traiter les images de caméra avec Teams et Zoom Volume de l'analyse des émotions avec Tensorflow

`Cet article est également présenté ici. '' https://cloud.flect.co.jp/entry/2020/04/01/201158

Bonjour à tous.

La dernière fois, j'ai présenté comment traiter les images de caméra avec Teams et Zoom. Nous avons introduit une démo qui détecte un sourire et affiche une marque souriante. https://qiita.com/wok/items/0a7c82c6f97f756bde65

Cette fois, j'aimerais en présenter une version légèrement élargie, car j'ai essayé d'analyser les émotions en temps réel avec l'IA (Tensorflow). Plus précisément, comme indiqué ci-dessous, les émotions telles que la tristesse et la colère sont lues à partir des expressions faciales de la personne dans l'image, et l'image qui leur correspond est affichée à l'écran. Il semble que vous puissiez maintenant exprimer vos sentiments sans avoir à dire des mots lors d'une vidéoconférence. (Non attends ...)

out2.gif

supposition

Veuillez vous référer à Article précédent et définir v4l2loopback etc.

Extension de crochet de caméra Web

Cette fois, nous analyserons les émotions de la personne prise par la caméra et afficherons l'image correspondante dans la vidéo sur le flux vidéo. Nous utiliserons Tensorflow pour l'analyse des émotions, mais utilisons le modèle entraîné fourni par la licence MIT sur le site suivant.

https://github.com/oarriaga/face_classification

Commencez par cloner le script à partir du référentiel suivant et installez les modules requis comme auparavant.

$ git clone https://github.com/dannadori/WebCamHooker.git
$ cd WebCamHooker/
$ pip3 install -r requirements.txt

Ensuite, obtenez un modèle formé pour l'analyse des émotions du site précédent. De plus, cette fois, afin d'afficher une image appropriée, je jugerai également le sexe en même temps.

$ wget https://github.com/oarriaga/face_classification/raw/master/trained_models/emotion_models/fer2013_mini_XCEPTION.110-0.65.hdf5 -P models #Modèle d'analyse des émotions
$ wget https://github.com/oarriaga/face_classification/raw/master/trained_models/gender_models/simple_CNN.81-0.96.hdf5 -P models/ #Modèle de détermination du sexe

Aussi, empruntons à nouveau l'image de M. Toya.

$ wget https://4.bp.blogspot.com/-8DirG_alwXo/V5Xc1SMykvI/AAAAAAAA8u4/krI2n_SWimUBGEyMWCw5kZZ-HzoUKrY8ACLcB/s800/pose_sugoi_okoru_woman.png -P images/
$ wget https://4.bp.blogspot.com/-EBpxVigkCCY/V5Xc1CHSeEI/AAAAAAAA8u0/9XIAzDJaQNU3HIiXi4PCPK3aMip3aoGyACLcB/s800/pose_sugoi_okoru_man.png -P images/

$ wget https://4.bp.blogspot.com/-HJ0FUQz67AA/XAnvUxSRsLI/AAAAAAABQnM/3XzIWzvW6L80aGB-geaHvAQETlJTAwkYQCLcBGAs/s800/business_woman2_4_think.png -P images/
$ wget https://3.bp.blogspot.com/-S7iQQCOgfWY/XAnvQWwBGtI/AAAAAAABQmc/z7yIqGjIQr88Brc_QNdOGsrJRLvqY1hcQCLcBGAs/s800/business_man2_4_think.png -P images/

$ wget https://4.bp.blogspot.com/-PQQV4wfGlNI/XAnvQBMeneI/AAAAAAABQmU/lN7zIROor9oi3q-JZOBJiKKzfklzPE1hwCLcBGAs/s800/business_man2_2_shock.png] -P images/
$ wget https://3.bp.blogspot.com/-QcDbWqQ448I/XAnvUT4TMDI/AAAAAAABQnE/_H4XzC4E93AEU2Y7fHMDBjri1drdyuAPQCLcBGAs/s800/business_woman2_2_shock.png -P images/

$ wget https://3.bp.blogspot.com/-dSPRqYvIhNk/XAnvPdvjBFI/AAAAAAABQmM/izfRBSt1U5o7eYAjdGR8NtoP4Wa1_Zn8ACLcBGAs/s800/business_man1_4_laugh.png -P images/
$ wget https://1.bp.blogspot.com/-T6AOerbFQiE/XAnvTlQvobI/AAAAAAABQm8/TYVdIfxQ5tItWgUMl5Y0w8Og_AZAJgAewCLcBGAs/s800/business_woman1_4_laugh.png -P images/

$ wget https://4.bp.blogspot.com/-Kk_Mt1gDKXI/XAnvS6AjqyI/AAAAAAABQm4/LQteQO7TFTQ-KPahPcAqXYannEArMmYfgCLcBGAs/s800/business_woman1_3_cry.png -P images/
$ wget https://4.bp.blogspot.com/-3IPT6QIOtpk/XAnvPCPuThI/AAAAAAABQmI/pIea028SBzwhwqysO49pk4NAvoqms3zxgCLcBGAs/s800/business_man1_3_cry.png -P images/

$ wget https://3.bp.blogspot.com/-FrgNPMUG0TQ/XAnvUmb85VI/AAAAAAABQnI/Y06kkP278eADiqvXH5VC0uuNxq2nnr34ACLcBGAs/s800/business_woman2_3_surprise.png -P images/
$ wget https://2.bp.blogspot.com/-i7OL88NmOW8/XAnvQacGWuI/AAAAAAABQmY/LTzN4pcnSmYLke3OSPME4cUFRrLIrPsYACLcBGAs/s800/business_man2_3_surprise.png -P images/

$ cp images/lN7zIROor9oi3q-JZOBJiKKzfklzPE1hwCLcBGAs/s800/business_man2_2_shock.png]  images/lN7zIROor9oi3q-JZOBJiKKzfklzPE1hwCLcBGAs/s800/business_man2_2_shock.png

Parmi ce qui précède, la dernière commande supprime simplement la corbeille (crochets de fin) dans le nom de fichier.

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 emotion_mode sur True.

De plus, veuillez utiliser ctrl + c pour le terminer.

$ python3 webcamhooker.py --input_video_num 0 --output_video_dev /dev/video2 --emotion_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.

Organisons une vidéoconférence!

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. La chaîne de caractères en haut de l'écran change selon l'expression et l'image correspondante s'affiche en conséquence. C'est un grand succès. out2.gif

finalement

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.

référence

Pour l'analyse des émotions par Tensorflow, je me suis référé au site suivant. (Ce site est introduit dans tensorflowjs)

https://book.mynavi.jp/manatee/detail/id=99887

Recommended Posts

Comment traiter les images de caméra avec Teams et Zoom Volume de l'analyse des émotions avec Tensorflow
Comment traiter les images de caméra avec Teams et Zoom
Comment traiter les images de caméra avec Teams et Zoom Volume de traitement dans le style d'animation
Comment partager des dossiers avec Docker et Windows avec tensorflow
[Comment!] Apprenez et jouez à Super Mario avec Tensorflow !!
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Comment rechercher à l'aide de l'Astroquery de Python et obtenir des images ajustées avec Skyview
Comment afficher des images en continu avec matplotlib Memo
Apprenez à gonfler des images à partir du code TensorFlow
[Linux] Comment afficher l'utilisation du processeur avec la commande ps, afficher l'en-tête et ne pas afficher le processus grep
Comment extraire des valeurs Null et des valeurs non Null avec des pandas
Comment boucler et lire une vidéo gif avec openCV
[TensorFlow] Je souhaite traiter des fenêtres avec Ragged Tensor
J'ai essayé d'implémenter Grad-CAM avec keras et tensorflow
[TF] Comment enregistrer et charger les paramètres d'entraînement Tensorflow
Comment insérer un processus spécifique au début et à la fin de l'araignée avec la tremblante
Comment créer un BOT Cisco Webex Teams à l'aide de Flask
[TensorFlow 2 / Keras] Comment exécuter l'apprentissage avec CTC Loss dans Keras
Comment ne pas charger d'images lors de l'utilisation de PhantomJS avec Selenium
[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse
Méthode d'apprentissage TensorFlow pour les professionnels des arts libéraux et les débutants en Python
Convertissez des images numérisées déformées en PDF avec Pillow et PyPDF
Comment créer une trame de données et jouer avec des éléments avec des pandas
Comment se connecter à AtCoder avec Python et soumettre automatiquement
Analyse des émotions par Python (word2vec)
Comment mettre à jour avec SQLAlchemy?
Comment lancer avec Theano
Comment modifier avec SQLAlchemy?
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment supprimer avec SQLAlchemy?
Analyse des émotions par SMS avec ML-Ask
Comment définir un raccourci pour basculer entre pleine largeur et demi-largeur dans IBus
Création d'un modèle séquentiel Tensorflow avec une image originale ajoutée à MNIST
Comment importer des fichiers CSV et TSV dans SQLite avec Python
Comment gérer les erreurs lors de l'installation de whitenoise et du déploiement sur Heroku
Analyse de correspondance des phrases avec l'API COTOHA et sauvegarde dans un fichier
Comment exécuter Jupyter et Spark sur Mac avec des paramètres minimaux
Comment installer des pandas sur EC2 (Comment gérer MemoryError et PermissionError)
[Langage C] Comment créer, éviter et créer un processus zombie
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
Comment gérer les erreurs lors de l'installation de Python et de pip avec choco
Explique comment utiliser TensorFlow 2.X avec l'implémentation de VGG16 / ResNet50
Node.js: Comment tuer les descendants d'un processus démarré par child_process.fork ()
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Le moyen le plus rapide d'obtenir régulièrement des images de caméra avec opencv de python
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Comment mettre OpenCV dans Raspberry Pi et collecter facilement des images des résultats de détection de visage avec Python