[Notes papier] Segmentation d'instance vidéo CVPR2021 Oral——VisTR : segmentation d'instance vidéo de bout en bout avec transformateurs

Segmentation d'instance vidéo segmentation d'instance vidéo, sur la base de vos, étiquetez chaque instance.

La segmentation d'instance est détection de cible + segmentation sémantique. La cible est détectée dans l'image, puis chaque pixel de la cible se voit attribuer une étiquette de catégorie, qui peut distinguer différentes instances avec la même catégorie sémantique de premier plan.

Jeu de données : Youtube-VIS

Prédécesseur : segmentation des instances vidéo

image-20220514164204594

VisTR:Segmentation d'instance vidéo de bout en bout avec transformateurs

problème résolu

VIS non seulement détecte et segmente les objets dans une seule image d'images, mais trouve également la relation correspondante de chaque objet dans plusieurs images, c'est-à-dire les associe et les suit.

  • La vidéo elle-même est constituée de données au niveau de la séquence et est modélisée comme une tâche de prédiction de séquence. Compte tenu de l'entrée de plusieurs images, la sortie de la séquence de masque de segmentation de plusieurs images nécessite un modèle capable de traiter plusieurs images en parallèle .
  • Unifiez les deux tâches de segmentation et de suivi de la cible. La segmentation est l'apprentissage de la similarité des caractéristiques des pixels, et le suivi de la cible est l'apprentissage de la similarité des caractéristiques de l'instance.

Application de transformateurs à la segmentation d'instances vidéo

  • lui-même pour séquence à séquence
  • Transformer est bon pour modéliser de longues séquences et peut être utilisé pour établir des dépendances à longue distance et apprendre des informations temporelles sur plusieurs images
  • L'auto-attention peut apprendre et mettre à jour les fonctionnalités en fonction de la similitude entre les paires, et peut mieux apprendre la corrélation entre les cadres

De bout en bout, tenez compte des caractéristiques temporelles et spatiales de la vidéo dans son ensemble, en vous référant au DETR

introduire

Tâche : effectuez une segmentation d'instance pour chaque trame et établissez une association de données d'instances dans des trames consécutives en même temps - suivi de suivi

Résumé : Il traite la tâche VIS comme une tâche parallèleséquenceProblèmes de décodage/prédiction. Étant donné un clip vidéo composé de plusieurs images en entrée, VisTR produit directement une séquence de masques pour chaque instance de la vidéo. La séquence de sortie de chaque instance est appelée séquence d'instance dans cet article.

Dans l'image ci-dessous, les cadres se distinguent par la forme, les instances se distinguent par la couleur, trois cadres et quatre instances

image-20220514165143772

  • Dans la première étape, étant donné une séquence d'images vidéo, un module CNN standard extrait les caractéristiques d'une seule image, puis concatène plusieurs caractéristiques d'image dans l'ordre des images pour former une séquence de caractéristiques.

    Remarque : La sélection du réseau à l'étape d'extraction des entités peut être modifiée en fonction du type d'image

  • Dans la deuxième étape, le transformateur prend une séquence de caractéristiques au niveau du segment en entrée et produit une séquence de prédictions d'instance en séquence. La séquence des prédictions suit l'ordre des trames d'entrée , tandis que les prédictions pour chaque trame suivent également le même ordre des instances .

Défi : Modélisation en tant que problème de prédiction de séquence

Bien qu'à l'entrée initiale, l'entrée et la sortie de plusieurs images dans la dimension de séquence temporelle soient ordonnées, mais pour une seule image, la séquence d'instances n'est pas ordonnée dans l'état initial et l'association de suivi des instances ne peut pas être réalisée, donc il Il est nécessaire de rendre cohérent l'ordre des instances en sortie de chaque image de trame, de sorte que tant que la sortie de la position correspondante est trouvée, l'association d'une même instance peut être naturellement réalisée.

  • Comment garder l'ordre de la sortie

    Stratégie de correspondance de séquence d'instance : cotation de séquence d'entités à la même position de force

    Effectuez une correspondance graphique bipartite entre les séquences de sortie et de vérité terrain et supervisez les séquences dans leur ensemble

  • Comment obtenir la séquence de masques pour chaque instance à partir du réseau de transformateurs

    Module de segmentation de séquence d'instance : obtenez les caractéristiques de masque de chaque instance dans plusieurs images avec attention et utilisez la convolution 3D pour segmenter la séquence de masque de chaque instance

Structure globale de VisTR

Une dorsale CNN pour extraire des représentations d'entités multi-images (Différents réseaux d'extraction de caractéristiques peuvent être utilisés ici en fonction des différentes exigences de la scène)

Un transformateur encodeur-décodeur pour modéliser la similarité des caractéristiques au niveau des pixels et au niveau de l'instance

Un exemple de module de correspondance de séquence

Un module de segmentation de séquence d'instances
Structure globale

colonne vertébrale

Entrée initiale : trame T * nombre de canaux 3 * H' * W'

Matrice de caractéristiques de sortie (concat chaque image): T * C * H * W

codeur de transformateur

Apprenez la similitude entre les points et les points, et la sortie est une séquence dense de caractéristiques de pixels

Tout d'abord, les caractéristiques extraites par le squelette sont réduites de 1*1 convolution : T * C * H * W => T * d * H * W

Aplatissement : l'entrée du transformateur doit être bidimensionnelle, donc aplatir l'espace (H, W) et le temps (T), T * d * H * W => d * (T * H * W)

La compréhension de l'aplatissement : d est similaire au canal, et T * H * W est tous les pixels de toutes les trames T de cette séquence

Encodage de position dans le temps et dans l'espace

Encodage positionnel temporel et spatial.

La dimension du code de position finale est d

Le résultat de Transformer est indépendant de la séquence d'entrée, et la tâche de segmentation d'instance nécessite des informations de position précises, de sorte que la fonctionnalité est complétée par des informations de codage de position fixe, qui contiennent la position tridimensionnelle (temps, espace - H, W) dans le Informations de segment, envoyées au codeur avec les informations de caractéristiques extraites par le backbone

Dans le transformateur d'origine, les informations de position sont unidimensionnelles, donc iii est de dimension 1 à d, donc2k 2k2 k de 0 à d,wk w_kwkProgressivement de 1 à infiniment proche de 0
Veuillez ajouter une description de l'image
Veuillez ajouter une description de l'image

Ensuite, le vecteur à la position t finale est également de dimension d :
pt = [ sin ( w 1 . t ) cos ( w 1 . t ) sin ( w 2 . t ) cos ( w 2 . t ) sin ( wd / 2 . t ) cos ( wd / 2 . t ) ] d p_t = \left[ \begin{matrice} sin(w_1 .t)\\ cos(w_1 .t)\\ sin(w_2 .t)\\ cos(w_2 .t) \\ \\ \\ sin(w_{d/2}.t)\\ cos(w_{d/2}.t)\\ \end{matrice} \right] _dpt=s je n ( w1. t )c o s ( w1. t )s je n ( w2. t )c o s ( w2. t )s je n ( wj / 2. t )c o s ( wj / 2. t )
Dans cet article, ce qu'il faut considérer, c'est la position des trois dimensions, H, W, T, c'est-à-dire que pour un point pixel, ses coordonnées ont trois valeurs, donc pour trois dimensions, générer indépendamment d / 3 d/ 3d / vecteur de position tridimensionnel

Pour les coordonnées de chaque dimension, en utilisant indépendamment les fonctions sinus et cosinus, on obtient d/3 d/3vecteur de d / 3 dimensions

pos posp o s représente les coordonnées (h , w , th, w, th ,w ,t ),iii représente la dimension, en supposant que l'on ne regarde quehhh , sectioniii de 1 àj/3 j/3d / 3 dimensions, en même temps afin d'assurerwk w_kwkLa valeur est comprise entre 0 et 1, donc ici wk w_kwkPas le même que le transformateur d'origine.

image-20220515153825709

image-20220518133305019

Le vecteur de position finale dans la dimension H est exprimé comme suit
PE ( pos ) H = [ sin ( w 1 . t ) cos ( w 1 . t ) sin ( w 2 . t ) cos ( w 2 . t ) sin ( wd / 6 . t ) cos ( wd / 6 . t ) ] d / 3 PE(pos)_H = \left[ \begin{matrice} sin(w_1 .t)\\ cos(w_1 .t)\\ sin(w_2 .t) \\ cos(w_2 .t)\\ \\ \\ sin(w_{d/6}.t)\\ cos(w_{d/6}.t)\\ \\end{matrice} \ droite] _{ d/3}P E ( pos ) _ _H=s je n ( w1. t )c o s ( w1. t )s je n ( w2. t )c o s ( w2. t )s je n ( wj / 6. t )c o s ( wj / 6. t )j / 3

Entrez ensuite le code de position (d * H * W * T) dans l'encodeur avec les caractéristiques extraites par le backbone

décodeur de transformateur

Décodez la séquence de caractéristiques de pixels denses sortie par l'encodeur en une séquence de caractéristiques d'instance clairsemée

A voir : Inspiré de DETR, en supposant que chaque frame a n instances, chaque frame a un nombre fixe de plongements d'entrée utilisés pour extraire les caractéristiques de l'instance, nommé requête d'instance, alors la requête d'instance de T frame a N = n* t. est apprenable et a les mêmes dimensions que les éléments de pixel

requête d'instance : utilisée pour effectuer des opérations d'attention avec des séquences d'entités en entrée denses et sélectionner des entités pouvant représenter chaque instance

Entrée : E + requête d'instance

Sortie : la séquence de prédiction O de chaque instance, le processus suivant considère la séquence de prédiction de toutes les images d'une seule instance dans son ensemble, et les sort dans l'ordre de la séquence d'images vidéo d'origine, qui est n * T vecteurs d'instance

correspondance de séquence d'instances

La sortie du décodeur est n * T séquences de prédiction, dans l'ordre des trames, mais l'ordre des n instances dans chaque trame est incertain

La fonction de ce module est de garder la position relative inchangée pour la prédiction de la même instance dans différentes trames

Correspondance binaire de la séquence prédite de chaque instance avec la séquence GT de chaque instance dans les données étiquetées, et utilisation de la méthode de correspondance hongroise pour trouver les données étiquetées les plus proches pour chaque prédiction

Supplément FFN : En fait, c'est le perceptron multicouche MLP, qui est FC+GeLU+FC

Dans Transformer, MSA est suivi d'un FFN (Feed-forward network), qui contient deux couches FC, la première FC transforme les caractéristiques de la dimension D en 4D, la seconde FC restaure les caractéristiques de la dimension 4D en D, et la moyenne Non linéaire les fonctions d'activation utilisent toutes GeLU (Gaussian Error Linear Unit, Gaussian Error Linear Unit) - il s'agit essentiellement d'un MLP (le perceptron multicouche est similaire au modèle linéaire, la différence est que MLP augmente le nombre de couches par rapport à FC et introduit non -fonctions d'activation linéaires, telles que FC + GeLU + FC)

Principalement pour maintenir la position relative de la prédiction de la même instance dans différentes images

Segmentation de la séquence d'instances

Tâche : Calculer le masque de chaque instance dans le cadre correspondant

O est la sortie du décodeur, E est la sortie de l'encodeur et B est la caractéristique extraite par CNN

L'essence de la segmentation d'instance est l'apprentissage de la similarité des pixels. Pour chaque image , envoyez d'abord l'image de prédiction O et la caractéristique d'encodage E à l'auto-attention, calculez la similarité et utilisez le résultat comme masque initial de l'image de l'instance , puis la comparer avec la trame. La caractéristique de squelette initiale et la caractéristique de codage E sont fusionnées pour obtenir la caractéristique de masque finale de l'instance de la trame. Afin de mieux utiliser les informations de synchronisation, le concat de masque multi-images de cette instance génère une séquence de masque, qui est envoyée au module de convolution 3D pour la segmentation

Cette méthode renforce la segmentation d'une seule image en utilisant les caractéristiques de la même instance de plusieurs images pour tirer parti de la synchronisation

Raison : Lorsque l'objet est dans l'état de défi, comme le flou de mouvement, la couverture, etc., il peut aider à la segmentation en apprenant des informations à partir d'autres images, c'est-à-dire que les caractéristiques de la même instance à partir de plusieurs images peuvent aider le réseau à mieux identifier l'objet. exemple

En supposant la caractéristique de masque g(i, t) de l'instance i dans la trame t : 1 * a * H'/4 * W'/4, où a est le numéro de canal, concaténer les caractéristiques de la trame T pour obtenir l'instance dans tous masque dans le cadre 1*a*T*H'/4*W'/4

4 ici parce qu'il y a 4 instances dans l'exemple

image-20220515160846905

Expérience d'ablation

durée de la séquence vidéo

De 18 à 36 ans, l'effet s'améliore et plus d'informations sur le temps peuvent aider à améliorer les résultats
insérez la description de l'image ici

ordre des séquences vidéo

image-20220515162424531

code de localisation

position relative dans la séquence vidéo

L'effet de la première ligne sans codage de position est que la correspondance entre le format ordonné de la supervision de séquence et l'ordre d'entrée et de sortie du transformateur implique une partie de l'information de position relative

image-20220515162527332

Incorporations de requêtes d'instance pouvant être apprises

Niveau de prédiction par défaut : une incorporation est responsable d'une prédiction, un total de n * T

niveau vidéo : un seul encastrement, réutilisé n*T fois

niveau image : pour chaque image, utilisez une intégration, c'est-à-dire T intégrations, et pour chaque intégration, répétez n fois

niveau instance : pour chaque instance, utilisez une intégration, c'est-à-dire n intégrations, répétées T fois

Les requêtes d'une instance peuvent être partagées , ce qui peut être utilisé pour améliorer la vitesse

image-20220515162914171

Résultats expérimentaux

Ensemble de données : YouTube-VIS

Vitesse rapide grâce à : Décodage parallèle

Résultats de la visualisation : (a) instances qui se chevauchent, (b) changements de positions relatives entre les instances, © confusion lorsque les instances de la même catégorie sont proches les unes des autres, (d) instances dans différentes poses.
insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/xqh_Jolene/article/details/124784226
conseillé
Classement