Alexandre Moulinet & Elie Yelmo
Suivi d’objets par la méthode KCF
(Kernelized Correlation Filters)
Introduction
Aujourd’hui, il existe beaucoup de méthodes de tracking (MIL, MOSSE, TLD, Struck …) qui présentent des capacités de tracking intéressantes. Mais toutes ses méthodes utilisent des classifieurs qui sont formés de plusieurs correctifs pour une seule et unique image. De ce fait, les matrices de données présentent une redondance extrêmement élevée et donc, que les processeurs qui font tourner ses algorithmes effectuent du travail non-nécessaire. Pour éviter ces calculs inutiles, des chercheurs de l’Université de Coimbra (João F. Henriques, Rui Caseiro, Pedro Martins, et Jorge Batista) ont mis au point un algorithme simple et efficace pour effectuer du tracking : la méthode KCF (Kernelized Correlation Filters).
I. Principe de la méthode KCF
Cette méthode repose principalement sur une idée nouvelle qui a été introduite durant les recherches sur l’application de cette méthode. Cette idée est que la matrice noyau peut être considérée comme circulante. Si on considère un vecteur n*1, alors la matrice circulante est une matrice n*n où la 2ème ligne est égale à la 1ère ligne sauf que l’élément de la colonne 1 est xn et donc x1,x2,… se retrouve décalés sur les colonnes de droite ; et ainsi de suite jusqu’à la dernière ligne.
Figure 1 : Matrice circulante |
Figure 2 : Matrice circulante avec pixels |
Sur ces matrices circulantes et sous certaines conditions, les manipulations algébriques sont simples à effectuer et peuvent donc être transformée dans le domaine de Fourier.
Figure 3 : Différentes opérations algébriques réalisable et transposable dans le domaine de Fourier
Grâce à cela, on va pouvoir appliquer différentes phases de calculs (Figure 4) qui seront exécutées simultanément pour obtenir la translation d'un motif de l'image précédente avec limage actuelle.Figure 4 : Différents calculs pour obtenir la translation d’une image
Figure 5 : Un exemple comparatif de la méthode KCF avec d’autres méthodes connues de tracking
II. Application de la méthode KCF
Pour appliquer cette méthode, on utilise l’exemple de code C++ inclus dans le module tracking de la librairie OpenCV.Après avoir modifié le code pour que l’application puisse accéder à la webcam et avoir compilé le code, il suffit de tracer un rectangle pour choisir l’objet à suivre :
Figure 6 : Sélection de la fenêtre pour l’objet à suivre
Après avoir choisi la fenêtre de l’objet à suivre, on se rend compte que la fenêtre suit plutôt bien si l’objet ne sort pas du cadre de la fenêtre :
Figure 7 : Démonstration de la fenêtre suivant l’objet
On peut introduire des objets qui vont cacher l’objet à suivre mais si on en cache pas de trop, le fenêtre arrive toujours à suivre l’objet :
Figure 8 : Démonstration de la fenêtre suivant l’objet à moitié caché
Si l’on passe très rapidement un objet devant l’objet à suivre, cela à tendance à ne pas déstabiliser la poursuite de l’objet à suivre.
Par contre, si l’on cache l’objet à suivre totalement puis en le découvrant ensuite, alors le cadre va suivre plutôt l’objet qui cache l’objet à suivre plutôt que ce dernier :
Figure 9 : Démonstration de la fenêtre ne suivant plus l’objet à suivre
III. Utilisation de la librairie OpenCV permettant le tracking d'objet par la méthode KCF sur des échantillons vidéo
Pour avoir un meilleur aperçu de l'utilisation de la méthode KCF, on a réalisé d'autres tests sur des vidéos montrant des cas réel de la vie quotidienne tel que le tracking d'un véhicule ou le suivi d'une personne.
Tracking d'une personne:
Dans cette vidéo, la personne selectionnée est bien suivie mais lorsqu'elle sort du cadre de la vidéo, le cadre reste sur l'extrémité de la vidéo. On note également que lorsqu'une nouvelle personne entre dans le cadre de la vidéo, celle-ci n'est pas suivie puisqu'on ne l'as pas selectionnée.
Tracking d'un véhicule:
Dans cette vidéo, on observe que la voiture sélectionnée est bien suivie mais comme la voiture ne reste jamais à la même distance de la caméra, alors le cadre d'origine qui était plus petit que la voiture, devient plus grand que la voiture. Cette méthode n'inclus pas encore de rescaling.
Tracking de Mister Been:
Dans cette vidéo, alors que Mister Been bouge assez rapidement, l'application de la méthode KCF arrive toujours à suivre la tête.
Conclusion
Cette méthode récente est un cas intéressant à mettre en place puisqu’il n’existe pas énormément d’application de cette méthode. Ainsi, on pourra observer les limites de cette méthode lorsque l’on cherche à tracker un objet qui pourra être caché partiellement ou sur du multitracking. On peut ajouter que le rescaling et que la détection d'objets à suivre ne s'effectue pas. L’intérêt de cette méthode est que l’algorithme est assez léger et donc peut être implémentée sur des cible embarqué pour des vidéos contenant plus de 25/30 images par secondes.