Comment va tout le monde. Avec la propagation de l'infection à coronavirus, de nombreuses personnes peuvent travailler ou faire des recherches à domicile. Depuis quelques mois, je regarde chaque jour mon PC à la maison. Je suis vraiment fatigué lol
Maintenant, cette fois, je voudrais me concentrer sur la tâche de reconstruction qui utilise le modèle de génération. En particulier, essayez de reconstruire la "vidéo". (Ce que vous pouvez comprendre dans cet article, ce sont les résultats expérimentaux et la prise en compte de la méthode de reconstruction qui mord le modèle de séries temporelles basé sur l'encodeur-décodeur, qui peut être étendu à la détection d'anomalies des images en mouvement, et le contexte théorique tel que les formules mathématiques. Je ne chasserai pas.)
C'est la reconstruction de ** "image" ** qui est souvent utilisée dans le champ "détection d'anomalies". Il s'agit d'une méthode de calcul du degré d'anomalie en entrant une image dans un modèle codeur-décodeur, en la reconstruisant et en prenant la différence entre l'entrée et la sortie. La VAE est particulièrement connue comme modèle de génération utilisable pour la reconstruction d'images, et récemment, des méthodes de détection d'anomalies utilisant le GAN (AnoGAN, EfficientGAN, etc.) sont également apparues. Voici un exemple d'AnoGAN.
L'image ci-dessus est tirée de ici
Cependant, pour une raison quelconque, lorsqu'il s'agit de reconstruire des «vidéos», aucun cas de recherche ne peut être trouvé. (Dans certains cas de "génération" vidéo, certaines méthodes utilisent le GAN.)
(** Addendum (2020/05/26) **: Un exemple d'utilisation de la convolution 3D comme dans Détection d'événements anormaux dans les vidéos en utilisant Spatiotemporal Autoencoder Il semble que l'utilisation de Spatio Temporal Networks (STN) soit recherchée comme tâche d'extraction de fonctionnalités spatio-temporelles telles que les films. [Deep Learning for Anomaly Detection: A Survey](https://arxiv.org/ À partir de abs / 1901.03407). Je ne vois pas beaucoup de littérature en japonais, mais lol. À l'avenir, je voudrais faire un rapport sur l'état de la recherche de ces détections d'anomalies d'images en mouvement sous forme d'article. )
Je pense que la technologie de détection d'anomalies d'image est devenue extrêmement répandue dans le monde pour les applications industrielles. Je pense qu'il y a une certaine demande d'images en mouvement, mais n'est-elle pas très développée?
Bien sûr, si vous ne vous souciez pas de la détection d'anomalies vidéo et de la «reconstruction», il y a diverses choses d'il y a longtemps. (Classification utilisant SVM basée sur des fonctionnalités ST-Patch à l'ancienne, etc.)
Cependant, c'est un monde où le Deep Learning est devenu si populaire. Vous pouvez également reconstruire la vidéo! Cette fois, nous allons implémenter un modèle de reconstruction vidéo en combinant le modèle de séries temporelles GRU et le modèle encodeur-décodeur. ** Tout le code est disponible sur ici. ** **
Le modèle à mettre en œuvre cette fois est illustré ci-dessous.
$ \ boldsymbol {x_1, x_2, ..., x_T} $ signifie une vidéo d'une longueur de T, et $ \ boldsymbol {x_t} $ est chaque image. L'encodeur reçoit l'image de chaque image et la mappe sur $ \ boldsymbol {z} $. En répétant ces T fois, la variable latente de longueur de série correspondant à la vidéo d'entrée, $ \ boldsymbol {Z_1, Z_2, ..., Z_T} $ est obtenue. Cette variable latente est modélisée à l'aide de GRU. La sortie à chaque t correspond à $ \ boldsymbol {\ hat {z_t}} $. Le reste est la procédure d'utilisation de cela pour cartographier l'espace d'observation avec le décodeur.
Je ne suis pas sûr que le modèle ci-dessus puisse garantir une exactitude mathématique stricte car je ne suis pas sûr de la plaque de fer de la tâche de reconstruction d'image en mouvement, mais je ne suis pas sûr si elle est particulièrement excellente ou non. Peut être reconstruit. ** **
Voici un supplément de point, mais pourquoi ne pas encoder l'image en mouvement en un point dans l'espace latent. Dans un modèle codeur-décodeur normal, l'image d'entrée est codée avec une seule variable latente. Je pensais que je suivrais cela lors de l'expansion vers une image en mouvement, mais en menant une enquête sur les articles basés sur le GAN dans mes recherches, ** c'est trop pour correspondre à un point dans l'espace latent * J'ai trouvé qu'il y avait une discussion sur *.
Je suis d'accord avec cela, en règle générale dans le passé. Auparavant, j'ai essayé de reconstruire une image en mouvement à l'aide de Keras, mais la méthode ci-dessus n'a pas produit les résultats souhaités.
Par conséquent, cette fois, profitant de cette réflexion, j'ai pensé à traiter les variables latentes de la série, et suis venu définir le modèle ci-dessus.
** Le flux de reconstruction est le suivant. ** **
1.human action dataset Ces données ont été utilisées pour la vérification dans un modèle de génération vidéo appelé MocoGAN, et comme son nom l'indique (je ne connais pas la première apparition), elles montrent des gens marchant et agitant. C'est devenu une chose.
Vous pouvez le télécharger depuis ici. (L'image ci-dessus est également tirée des données de ce lien.)
Ensuite, nous entraînerons le modèle en utilisant les données ci-dessus. La fonction de perte est MSE, ce qui minimise naturellement l'erreur entre l'entrée et la sortie. Pour plus de détails sur le modèle, consultez le code d'implémentation (implémenté par PyTorch) de ici.
L'apprentissage a atteint 10 000 itr et la perte a changé comme suit. Il est devenu presque 0 en seconde période, et je ne vois pas beaucoup de changement, mais j'ai l'impression qu'il a convergé en toute sécurité.
Faites des inférences à l'aide du modèle. Dans l'implémentation ci-dessus, le résultat de la reconstruction est enregistré dans generated_videos dans le dossier logs pour chaque point de contrôle spécifié par l'argument. Comme nous l'avons appris, nous avons montré le comportement suivant. La ligne supérieure de chaque itr est l'entrée et la ligne inférieure est la sortie.
--0 ses yeux Bien sûr, il ne peut pas du tout être reconstruit.
--1 000 itrth Bien qu'il soit flou, il a une forme humaine.
--5000 yeux Lorsqu'il atteint 5000 fois, le mouvement est bien reproduit.
―― 9000 yeux L'échantillon est subtil, mais l'impression est qu'il est devenu possible de le reconstruire sous une forme presque parfaite.
Cette fois, j'ai essayé de reconstruire une image en mouvement en utilisant GRU-AE. C'est un modèle simple, mais le fait est qu'il gère les variables latentes dans l'ordre chronologique. En utilisant cette méthode, nous pouvons nous attendre à une extension de la détection des anomalies. Mais pour être honnête, que faites-vous ces jours-ci en tant que nouveauté par rapport au GAN? C'est l'endroit. De plus, il est indéniable qu'il est honnêtement inférieur (certaines parties sont floues) par rapport aux images reconstruites à partir du GAN. (Auparavant, mon article a également introduit VAEGAN) Cependant, c'est une méthode simple et facile à utiliser, donc j'apprécierais que vous puissiez l'essayer.
Recommended Posts