Le suivi OpenCV est une méthode populaire utilisée pour suivre des objets dans une vidéo en temps réel. OpenCV est une bibliothèque puissante utilisée pour les applications de traitement d'images et de vision par ordinateur.
De l'analyse vidéo en temps réel à la réalité augmentée, OpenCV Tracking a un large éventail d'utilisations et peut aider les secteurs privé et public à détecter et à suivre l'objet souhaité dans une image ou une vidéo.
Dans ce guide complet, nous allons explorer le suivi OpenCV et ses trackers pré-construits. Nous utiliserons la bibliothèque OpenCV et Python pour mettre en œuvre cette application de suivi d'objets.
Dans cet article
Partie 1. Qu'est-ce que le suivi d'objets ?
Le suivi d'objets détermine l'emplacement d'un objet dans une vidéo et peut être utilisé à des fins diverses, notamment la surveillance, la sécurité, le contrôle du trafic, la criminalistique numérique, la détection d'anomalies, la reconnaissance de gestes, la surveillance visuelle, l'interaction homme-machine, la réalité augmentée et la vision robotique.
Même si cela peut sembler facile pour une personne ordinaire, le suivi d'un objet est assez complexe pour les ordinateurs, car ils doivent analyser un ensemble d'images et estimer la trajectoire de l'objet en se basant sur des chiffres plutôt que sur des images.
En raison de sa complexité, le suivi des objets est considéré comme l'une des tâches les plus difficiles de la vision par ordinateur. Même s'il s'agit d'un défi, il n'est pas impossible à relever.
Et il y a deux niveaux de suivi d'objet que vous devez connaître :
1. SOT et MOT
- Single Object Tracking (SOT): SOT est un algorithme de suivi qui crée des modèles d'apparence avancés et/ou des modèles de mouvement pour gérer des problèmes difficiles comme les rotations hors plan, les variations d'éclairage ou les changements d'échelle.
- Multiple Object Tracking (MOT): MOT suit toutes les parties d'une vidéo et s'occupe principalement des tâches de niveau moyen et sert de base aux tâches de haut niveau.
Pour mieux comprendre les deux niveaux de suivi d'objet, veuillez lire notre article sur le sujet : Un guide complet du suivi multi-objets.
2. La différence entre le suivi et la détection
Après avoir appris ce qu'est le suivi d'objets, il existe un autre concept que vous devez connaître : la détection d'objets.
Le suivi et la détection d'objets sont deux méthodes importantes en vision par ordinateur. Le suivi d'objet permet de suivre en temps réel la position d'un objet donné dans une image, tandis que la détection d'objet identifie et localise les objets dans une image ou une vidéo. C'est là toute la différence.
Partie 2. Les types de suivi d'objets
Suivi des images
Le suivi d'image permet aux utilisateurs d'interagir plus naturellement avec le contenu numérique et les aide à se déplacer et à interagir avec les objets numériques de la même manière qu'avec les objets physiques du monde réel.
Le suivi des images peut être utilisé dans diverses applications de réalité augmentée (RA), telles que les jeux, le shopping et la navigation en RA. En outre, vous pouvez également l'utiliser à des fins pédagogiques, par exemple pour enseigner l'anatomie ou fournir des instructions pour une tâche difficile.
Suivi des vidéos
Le suivi vidéo est le processus de suivi des objets dans une séquence vidéo et peut être utilisé pour diverses applications, telles que la détection et le comptage des objets dans une scène, la compréhension de leurs mouvements et la reconnaissance des activités.
Partie 3. Quelles sont les difficultés du suivi des objets ?
Comme il a été mentionné ci-dessus, l'utilisation du suivi d'objet est polyvalente. Cependant, le suivi des objets présente certains défis, tels que :
Encombrement de l'arrière-plan : L'arrière-plan peut avoir un impact sur l'extraction des caractéristiques d'un objet. Si l'arrière-plan est plus densément peuplé, la détection ou le suivi de l'objet d'intérêt peut être plus difficile.
Occlusion : Il s'agit d'un phénomène où l'objet suivi est affecté par l'arrière-plan ou le premier plan. L'algorithme de suivi est alors perturbé par la proximité de plusieurs objets, ce qui entraîne la perte de la trace de l'objet.
Variations d'échelles spatiales : Les échelles spatiales variables font référence à l'objet cible de taille ou de forme différente, ce qui peut perturber l'algorithme et entraîner des erreurs.
Formation et suivi de la vitesse : Si l'objet se déplace trop rapidement ou est trop petit, il peut être difficile à suivre. Le module de suivi doit donc être conçu pour suivre, identifier et localiser des objets en quelques secondes.
Partie 4. Étapes du processus de suivi des objets
Après l'introduction du suivi d'objets sur le plan technique, découvrons son mécanisme sous deux angles : les périodes du processus de travail et la façon dont il effectue le suivi.
1. Étapes du processus de suivi des objets
Voici les étapes du processus de suivi des objets :
Initialisation de la cible
L'initialisation de la cible est la première étape du suivi d'objets. Elle consiste à définir les cibles ou les objets d'intérêt et à dessiner une boîte englobante autour d'eux dans l'image initiale. Ensuite, le tracker doit détecter la position de l'objet dans l'image tout en dessinant la boîte englobante.
Modélisation de l'apparence
La modélisation de l'apparence est importante pour comprendre comment un objet se présentera dans différentes circonstances. Si l'objet suivi change d'aspect en raison d'un éclairage, d'un angle ou d'une vitesse différents, l'algorithme de suivi peut perdre ses informations et l'objet lui-même. Par conséquent, elle doit être menée pour permettre à l'algorithme de détecter les changements et les distorsions.
Estimation du mouvement
L'estimation du mouvement implique la capacité du modèle à anticiper avec précision la position future d'un objet.
Positionnement de la cible
L'estimation du mouvement est un processus d'approximation de la région la plus probable où un objet pourrait être présent. Une fois l'emplacement de l'objet approximé, un modèle visuel peut être utilisé pour déterminer plus précisément l'emplacement de la cible.
2. Méthodes de suivi des objets
Voici quelques méthodes de suivi des objets :
Suivi d'objets basé sur OpenCV
La méthode de suivi d'objet OpenCV est largement utilisée car elle offre plusieurs fonctions intégrées conçues spécifiquement dans ce but, telles que GOTURN, MIL, MediandFlow, et CSRT. Le type de tracker que vous choisirez dépendra de la conception de votre application spécifique. Chaque tracker a ses avantages et ses inconvénients, de sorte qu'il n'existe pas un seul type de tracker idéal pour toutes les applications.
MDNet
Multi-Domain Convolutional Neural Network Tracker est un tracker visuel basé sur des neurones convolutifs et a remporté le défi VOT2015. De plus, il est composé de couches spécifiques au domaine, de branches et de multiples couches partagées.
Le tracker MDNetT est un réseau neuronal profond qui a été entraîné sur de nombreux ensembles de données de suivi d'objets. Le traqueur est conçu pour fonctionner dans plusieurs domaines, notamment la vidéo, le texte et les images.
DeepSort
L'algorithme DeepSort peut suivre les objets en temps réel et utilise YOLO v3 pour calculer les boîtes englobantes autour des objets dans une image.
DeepSort utilise le filtre de Kalman de l'algorithme Simple Online and Realtime Tracking et un modèle d'identification, ReID, pour relier les boîtes de délimitation et les pistes des objets.
ROLO
ROLO est une nouvelle méthode de suivi des objets qui utilise des réseaux neuronaux récurrents (RNN) pour apprendre des représentations spatio-temporelles spécifiques aux objets. Cette méthode fonctionne avec YOLO, un algorithme de détection d'objets, et un LTSM pour déterminer la trajectoire d'un objet.
Partie 5. La puissante sauvegarde : OpenCV
Nous avons démontré la puissance du suivi OpenCV et son fonctionnement. Cependant, vous vous demandez ce qu'est OpenCV ? Comment cela soutient-il les objectifs de suivi en cours de réalisation ? Dans cette partie, nous allons nous concentrer sur OpenCV et vous aider à mieux comprendre les mécanismes sous-jacents.
1. Qu'est-ce qu'OpenCV ?
OpenCV est une bibliothèque puissante qui vous permet d'effectuer des tâches de traitement d'images, d'apprentissage profond, d'apprentissage automatique et de vision par ordinateur sur des flux vidéo en direct. En outre, elle peut être utilisée pour détecter des objets, suivre leurs mouvements et reconnaître des visages.
Elle peut aider à traiter les données qui comportent des vidéos et des images et a été utilisée dans diverses applications, telles que la reconnaissance et la détection d'objets, les voitures autonomes, les robots, l'analyse d'images médicales, la surveillance automatisée et la détection d'anomalies.
2. Les algorithmes préconstruits offerts par OpenCV pour le suivi d'objets
Il y a 8 algorithmes prédéfinis qu'OpenCV offre pour le suivi d'objets. Ils sont tous uniques et nous vous présentons ici leurs avantages et leurs inconvénients pour vous permettre de mieux les comprendre.
Traqueur | Avantages | Inconvénients |
BOOSTING Tracker |
|
|
MIL Tracker |
|
|
KCF Tracker |
|
|
TLD Tracker |
|
|
MEDIANFLOW Tracker |
|
|
GOTURN Tracker |
|
|
MOSSE Tracker |
|
|
Suivi du CSRT |
|
|
3. Mise en œuvre avec Python et OpenCV
Maintenant, après l'explication théorique d'OpenCV et du suivi OpenCV, apprenons le suivi d'objets OpenCV Python avec le codage et nos instructions simples et pas à pas :
Installer les dépendances
Installez l'application pycharm sur votre PC, et lancez-la. Créez un nouveau projet et allez dans le Terminal. Installez le paquet opencv-contrib-python en collant la commande suivante dans le Terminal.
Configurer les traqueurs
Maintenant, créez un Jupyter-notebook et configurez les trackers avec ce code :
Tâches :
- cv2. version renvoie le numéro de version de la bibliothèque OpenCV.
- Enregistrez le nom des huit trackers.
- Vérifiez la liste de la version sur laquelle vous travaillez et créez un objet de suivi en fonction du numéro.
Capturez l'entrée vidéo
Pour capturer l'entrée vidéo, écrivez les lignes de code suivantes :
Tâches :
- Utilisez la classe VideoCapture pour capturer une vidéo via la webcam ou en récupérer une enregistrée sur votre PC.
- Dans VideoCapture - ligne 2, donnez le chemin vers votre vidéo.
- Commentez la deuxième ligne pour utiliser la webcam pour le suivi et décommentez la troisième ligne.
Création de la boîte englobante et initialisation du traqueur
Définissez une boîte englobante aléatoire initiale ou sélectionnez les choix pour l'objet que vous voulez suivre avec le code suivant :
Démarrer le traqueur et vérifier la sortie
Enfin, écrivez les lignes de code ci-dessous pour démarrer le traqueur :
Tâches
- Lire chaque image vidéo.
- Lancez le minuteur et, grâce au tracker, déterminez la trajectoire de l'objet.
- Utilisez la trajectoire pour dessiner la boîte de délimitation.
- Le programme commencera le suivi. Ensuite, appuyez sur la barre d'espacement pour arrêter le suivi.
Vidéo - Suivi d'objets avec Opencv et Python
Conclusion
Dans cet article, nous avons abordé en détail le suivi d'objet et sa comparaison avec la détection d'objet. En outre, nous avons exploré les méthodes utilisées pour le suivi des objets et fourni des conseils complets sur la méthode de suivi OpenCV et ses fonctionnalités intégrées.
Nous espérons que ce guide vous a été utile et que vous pouvez désormais suivre des objets en temps réel sans aucun problème.