La classification vidéo est la tâche d'apprentissage automatique consistant à identifier ce qu'une vidéo représente. Un modèle de classification vidéo est formé sur un ensemble de données vidéo qui contient un ensemble de classes uniques, telles que différentes actions ou mouvements. Le modèle reçoit des images vidéo en entrée et génère la probabilité que chaque classe soit représentée dans la vidéo.
Les modèles de classification vidéo et de classification d'images utilisent tous deux des images comme entrées pour prédire les probabilités de ces images appartenant à des classes prédéfinies. Cependant, un modèle de classification vidéo traite également les relations spatio-temporelles entre les images adjacentes pour reconnaître les actions dans une vidéo.
Par exemple, un modèle de reconnaissance d'action vidéo peut être formé pour identifier les actions humaines telles que courir, applaudir et saluer. L'image suivante montre la sortie d'un modèle de classification vidéo sur Android.
Commencer
Si vous utilisez une plate-forme autre qu'Android ou Raspberry Pi, ou si vous connaissez déjà les API TensorFlow Lite , téléchargez le modèle de classification vidéo de démarrage et les fichiers de support. Vous pouvez également créer votre propre pipeline d'inférence personnalisé à l'aide de la bibliothèque de support TensorFlow Lite .
Télécharger le modèle de démarrage avec les métadonnées
Si vous débutez avec TensorFlow Lite et que vous travaillez avec Android ou Raspberry Pi, explorez les exemples d'applications suivants pour vous aider à démarrer.
Android
L'application Android utilise la caméra arrière de l'appareil pour la classification vidéo continue. L'inférence est effectuée à l'aide de l' API Java TensorFlow Lite . L'application de démonstration classe les cadres et affiche les classifications prévues en temps réel.
Tarte aux framboises
L'exemple Raspberry Pi utilise TensorFlow Lite avec Python pour effectuer une classification vidéo continue. Connectez le Raspberry Pi à une caméra, comme Pi Camera, pour effectuer une classification vidéo en temps réel. Pour afficher les résultats de la caméra, connectez un moniteur au Raspberry Pi et utilisez SSH pour accéder au shell Pi (pour éviter de connecter un clavier au Pi).
Avant de commencer, configurez votre Raspberry Pi avec Raspberry Pi OS (de préférence mis à jour vers Buster).
Description du modèle
Les réseaux vidéo mobiles ( MoViNets ) sont une famille de modèles de classification vidéo efficaces optimisés pour les appareils mobiles. Les MoViNets font preuve d'une précision et d'une efficacité de pointe sur plusieurs ensembles de données de reconnaissance d'action vidéo à grande échelle, ce qui les rend bien adaptés aux tâches de reconnaissance d'action vidéo .
Il existe trois variantes du modèle MoviNet pour TensorFlow Lite : MoviNet-A0 , MoviNet-A1 et MoviNet-A2 . Ces variantes ont été formées avec l'ensemble de données Kinetics-600 pour reconnaître 600 actions humaines différentes. MoviNet-A0 est le plus petit, le plus rapide et le moins précis. MoviNet-A2 est le plus grand, le plus lent et le plus précis. MoviNet-A1 est un compromis entre A0 et A2.
Comment ça fonctionne
Lors de la formation, un modèle de classification des vidéos est fourni avec les vidéos et leurs libellés associés. Chaque étiquette est le nom d'un concept distinct, ou d'une classe, que le modèle apprendra à reconnaître. Pour la reconnaissance d'action vidéo , les vidéos seront des actions humaines et les libellés seront l'action associée.
Le modèle de classification vidéo peut apprendre à prédire si de nouvelles vidéos appartiennent à l'une des classes fournies pendant la formation. Ce processus s'appelle l' inférence . Vous pouvez également utiliser l'apprentissage par transfert pour identifier de nouvelles classes de vidéos en utilisant un modèle préexistant.
Le modèle est un modèle de streaming qui reçoit une vidéo continue et répond en temps réel. Lorsque le modèle reçoit un flux vidéo, il identifie si l'une des classes de l'ensemble de données d'apprentissage est représentée dans la vidéo. Pour chaque image, le modèle renvoie ces classes, ainsi que la probabilité que la vidéo représente la classe. Un exemple de sortie à un moment donné pourrait ressembler à ceci :
Action | Probabilité |
---|---|
danse carrée | 0,02 |
aiguille à enfiler | 0,08 |
se tourner les doigts | 0,23 |
Agitant la main | 0,67 |
Chaque action dans la sortie correspond à une étiquette dans les données d'apprentissage. La probabilité indique la probabilité que l'action soit affichée dans la vidéo.
Entrées du modèle
Le modèle accepte un flux d'images vidéo RVB en entrée. La taille de la vidéo d'entrée est flexible, mais idéalement, elle correspond à la résolution et à la fréquence d'images de la formation du modèle :
- MoviNet-A0 : 172 x 172 à 5 ips
- MoviNet-A1 : 172 x 172 à 5 ips
- MoviNet-A1 : 224 x 224 à 5 ips
Les vidéos d'entrée doivent avoir des valeurs de couleur comprises entre 0 et 1, conformément aux conventions d'entrée d'image courantes .
En interne, le modèle analyse également le contexte de chaque trame en utilisant les informations recueillies dans les trames précédentes. Ceci est accompli en prenant les états internes de la sortie du modèle et en les réinjectant dans le modèle pour les trames à venir.
Sorties du modèle
Le modèle renvoie une série d'étiquettes et leurs scores correspondants. Les scores sont des valeurs logit qui représentent la prédiction pour chaque classe. Ces scores peuvent être convertis en probabilités à l'aide de la fonction softmax ( tf.nn.softmax
).
exp_logits = np.exp(np.squeeze(logits, axis=0))
probabilities = exp_logits / np.sum(exp_logits)
En interne, la sortie du modèle inclut également les états internes du modèle et les réinjecte dans le modèle pour les images à venir.
Références de performances
Les numéros de référence de performance sont générés avec l' outil d'analyse comparative . MoviNets ne prend en charge que le processeur.
Les performances du modèle sont mesurées par le temps nécessaire à un modèle pour exécuter l'inférence sur un élément matériel donné. Un temps inférieur implique un modèle plus rapide. La précision est mesurée par la fréquence à laquelle le modèle classe correctement une classe dans une vidéo.
Nom du modèle | Taille | Précision * | Dispositif | CPU ** |
---|---|---|---|---|
MoviNet-A0 (entier quantifié) | 3,1 Mo | 65% | Pixel 4 | 5 millisecondes |
Pixel 3 | 11 millisecondes | |||
MoviNet-A1 (entier quantifié) | 4,5 Mo | 70% | Pixel 4 | 8 millisecondes |
Pixel 3 | 19 millisecondes | |||
MoviNet-A2 (entier quantifié) | 5,1 Mo | 72% | Pixel 4 | 15 millisecondes |
Pixel 3 | 36 millisecondes |
* Précision Top-1 mesurée sur l'ensemble de données Kinetics-600 .
** Latence mesurée lors de l'exécution sur CPU avec 1 thread.
Personnalisation du modèle
Les modèles pré-formés sont formés pour reconnaître 600 actions humaines à partir de l'ensemble de données Kinetics-600 . Vous pouvez également utiliser l'apprentissage par transfert pour réentraîner un modèle à reconnaître les actions humaines qui ne figurent pas dans l'ensemble d'origine. Pour ce faire, vous avez besoin d'un ensemble de vidéos de formation pour chacune des nouvelles actions que vous souhaitez intégrer au modèle.
Pour en savoir plus sur le réglage fin des modèles sur les données personnalisées, consultez le référentiel MoViNets et le didacticiel MoViNets .
Lectures complémentaires et ressources
Utilisez les ressources suivantes pour en savoir plus sur les concepts abordés sur cette page :