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


Finalement, cette technique fonctionne bien dans beaucoup de cas, elle peut se montrer plus puissante que les autres techniques actuelles, elle peut utiliser différents noyau (Linéaire, Polynomial, Gaussien…) et du fait de son algorithme plutôt simple, celui-ci est applicable pour des vidéos allant jusqu’à 400 FPS.
 

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.