[PYTHON] J'ai essayé de laisser VAE apprendre les animations

Qu'est-ce que le graphisme animé?

** C'est un mouvement cool de chiffres, logos, illustrations, etc. **. C'est une définition assez vague, n'est-ce pas? Je ne pense pas qu'il y ait réellement une définition claire. Les graphiques animés sont souvent utilisés dans ce que l'on appelle communément emo. Il est souvent utilisé dans les MV d'artistes et les CM d'entreprise. Si vous recherchez des «graphiques animés» sur YouTube, etc., vous trouverez de nombreuses images sympas, alors jetez un œil.

Je veux générer automatiquement des graphiques animés!

La plupart des graphiques animés sont créés à la main par les créateurs. C'est une tâche très longue et difficile. Récemment, je me suis demandé s'il pouvait être généré à l'aide de l'IA populaire. Ne serait-il pas amusant d'entraîner l'IA à générer des animations graphiques?

base de données

Même s'il est généré, un ensemble de données pour la formation est nécessaire. Cependant, dans mes recherches, ** les ensembles de données d'animation graphique n'existaient pas. ** Vous devez donc créer votre propre ensemble de données. Cependant, il faut beaucoup de temps pour créer un grand ensemble de données, donc cette fois j'ai simplement créé des graphiques animés pour 6 types de particules. J'ai utilisé les effets Afrique d'Adobe pour créer l'ensemble de données.

Ensemble de données créé

123456
ae.png

Modèle utilisé pour l'apprentissage

Maintenant que nous avons créé le jeu de données (à part s'il peut être appelé un jeu de données à une échelle assez petite), la prochaine chose à considérer est le modèle. Il existe plusieurs modèles de génération, et le courant dominant est le GAN ou VAE. Le GAN est difficile à apprendre, et si l'ensemble de données est petit comme cette fois, il y a de fortes chances qu'il n'apprenne pas bien, c'est pourquoi nous avons adopté la VAE. La VAE est un système dérivé de l'AE, et la distribution des variables latentes est acquise par compression et restauration de l'ensemble de données. Après apprentissage, il peut être généré en donnant du bruit z à la partie décodeur. Pour AE et VAE, les articles suivants seront utiles. Explication approfondie du codeur automatique variationnel Cette fois, nous allons générer une vidéo, donc VAE a construit un modèle de structure Unet par convolution 3D. Apprenez les informations spatio-temporelles des images en mouvement par convolution 3D. La convolution de transposition de la partie décodeur est la convolution de translocation. La convolution de translocation est expliquée d'une manière facile à comprendre avec une vidéo dans l'article [ici](ttps: //qiita.com/kenmatsu4/items/b029d697e9995d93aa24 "Transfer convolution").

models figure (1).png

Apprentissage

Comme l'ensemble de données est petit, la formation s'est terminée immédiatement.J'ai jugé qu'elle pouvait être générée à environ 200 époques, alors j'ai terminé la formation là-bas. Cela a pris environ une heure avec GTX1080Ti.

Détails de l'expérience

Taille de la vidéo numéro d'époque Cadre GPU
128x128x32 200 PyTorch GTX1080Ti

Résultat de la génération

gen1.gif gen2.gif gen3.gif gen4.gif

Les graphiques animés qui ressemblent à des données d'entraînement ont été générés correctement.

Morphing En complétant le vecteur de bruit z donné au décodeur entre les animations graphiques, il est possible de générer une animation graphique intermédiaire entre les deux animations graphiques. Il s'agit d'une version vidéo de ce qui est souvent généré par GAN et qui change petit à petit. 111111

Les animations graphiques intermédiaires sont générées en complétant la variable latente z entre les animations graphiques comme indiqué dans la formule suivante.

z = t z_1 + (1-t)z_2 \\
0 < t < 1

Résumé

J'ai pu générer des animations graphiques en utilisant un apprentissage approfondi. Cette fois, il n'y avait pas de diversité dans la génération en raison du jeu de données assez petit. Si vous avez un grand ensemble de données d'animation graphique, j'aimerais faire des expériences. (Quelqu'un peut-il le faire?) Cependant, il est intéressant de pouvoir générer des choses intermédiaires avec Mophing etc. Dans cette expérience, nous avons constaté que Morphig peut être créé même avec un petit ensemble de données.

référence

Explication approfondie du codeur automatique variationnel [Déconvolution dans un réseau neuronal](ttps: //qiita.com/kenmatsu4/items/b029d697e9995d93aa24 "Transfer Convolution")

Recommended Posts

J'ai essayé de laisser VAE apprendre les animations
J'ai essayé d'apprendre PredNet
J'ai essayé de laisser optuna résoudre le nombre
J'ai essayé d'apprendre le fonctionnement logique avec TF Learn
J'ai essayé de détecter rapidement un mouvement avec OpenCV
J'ai essayé de déboguer.
J'ai essayé d'entraîner la fonction péché avec chainer
J'ai essayé d'implémenter et d'apprendre DCGAN avec PyTorch
J'ai essayé d'organiser SVM.
J'ai essayé d'implémenter PCANet
J'ai essayé de réintroduire Linux
J'ai essayé de présenter Pylint
J'ai essayé de résumer SparseMatrix
jupyter je l'ai touché
J'ai essayé d'implémenter StarGAN (1)
J'ai essayé d'implémenter Deep VQE
J'ai essayé de créer l'API Quip
J'ai essayé de toucher Python (installation)
J'ai essayé de mettre en place une validation contradictoire
J'ai essayé d'expliquer l'ensemble de données de Pytorch
J'ai essayé l'authentification vocale Watson (Speech to Text)
J'ai touché l'API de Tesla
Je veux gratter des images et les former
J'ai essayé de m'organiser à propos de MCMC.
J'ai essayé d'implémenter Realness GAN
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
J'ai essayé de laisser Pepper parler des informations sur l'événement et des informations sur les membres
J'ai fait apprendre à RNN la vague de péché et j'ai essayé de prédire
J'ai essayé de créer un linebot (implémentation)
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé de résumer la commande umask
J'ai essayé d'implémenter la permutation en Python
J'ai essayé de créer un linebot (préparation)
J'ai essayé de reconnaître le mot de réveil
J'ai essayé de commencer avec Hy
J'ai essayé d'implémenter PLSA dans Python 2
J'ai essayé de classer le texte en utilisant TensorFlow
J'ai essayé de résumer la modélisation graphique.
J'ai essayé d'ajouter un post-incrément à l'implémentation CPython
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé d'apprendre l'angle du péché et du cos avec le chainer
J'ai essayé d'estimer le rapport de circonférence π de manière probabiliste
J'ai essayé de toucher l'API COTOHA
J'ai essayé d'implémenter PPO en Python
J'ai essayé d'implémenter CVAE avec PyTorch
J'ai créé une API Web
J'ai essayé de résoudre TSP avec QAOA
[Python] J'ai essayé de calculer TF-IDF régulièrement
J'ai essayé de toucher Python (syntaxe de base)
J'ai fait de mon mieux pour retourner au Lasso
J'ai essayé de résumer les modules d'Ansible - l'édition Linux
[Azure] J'ai essayé de créer une machine virtuelle Linux avec Azure de Microsoft Learn
J'ai essayé de prédire l'année prochaine avec l'IA
J'ai essayé de créer une méthode de super résolution / ESPCN