Suivi d’objets par la méthode KCF (Kernelized
Correlation Filters)

Arthur KREITTNER & Yoann DESVIGNES

 

Introduction

La vision par ordinateur est un domaine récent. Effectivement, les ordinateurs sont depuis peu, capables de gérer des très grandes quantités de données, tel qu’un flux vidéo.
La vision par ordinateur s’appuie sur le traitement du signal, et la théorie de l’information, qui sont eux, connus depuis plus longtemps. Une image, peut-être perçu comme étant un signal en 2 Dimensions, et les outils usuels du traitement du signal comme la Transformée de Fourier fonctionne toujours. Une librairie très puissante a été développée en C++ puis en Python, OpenCV (Open Computer Vision). Elle permet de faire de la vision par ordinateur très facilement, en fournissant à l’utilisateur beaucoup de librairies de traitement d’images et de vidéos. C’est dans ce contexte, que de nombreuses méthodes de suivis d’objets ont vus le jour. TLD, KLT, MIL, KCF, sont les plus connus, mais nous allons nous intéresser particulièrement au KCF (Kernalized Correlation Filters) qui se trouve dans les extra_modules d’OpenCV.

Présentation de la méthode KCF

Une première publication sur le KCF basé sur d’anciens travaux est sortie en 2014, écrites par plusieurs chercheurs (João F. Henriques, Rui Caseiro, Pedro Martins, et Jorge Batista).

 

Fig1: Algorithme Matlab de la méthode KCF

Voici l’implémentation de l’algorithme KCF sous Matlab (Fig1). Dans une 1 ère phase, on entraîne le « tracker » à partir d’une image de l’objet à tracker (En ayant pris le soin de prendre ce qui se passe autour, pour avoir le contexte).

Fig2 : Exemple d'objet à tracker

Dans cette première phase, on effectue une autocorrélation en vue d’obtenir la densité spectrale de l’objet. Pour cela, il y a l’appel à la fonction kernel_correlation qui permet de faire la corrélation de deux matrices avec un noyau gaussien. Grâce à cette 1 ère phase, on obtient, une matrice de ressemblance que l’on va chercher à détecter avec la fonction detect. Cette fonction nous ressort un score de plus en plus élevé, plus l’objet détecté est présent. L’algorithme est appelé plusieurs fois, afin d’obtenir la meilleure réponse.

Expérimentations

Le code utilisé a été le code fournis dans la documentation d'OpenCV 3.1, qui permet de faire du tracking KCF avec plusieurs objets choisis à la souris. Le code est disponible à l'adresse suivante : http://l.facebook.com/l.php?u=http%3A%2F%2Fdocs.opencv.org%2Ftrunk%2Fd5%2Fd07%2Ftutorial_multitracker.html&h=RAQE0joS-

Voici la 1ère vidéo de test avec une gazelle et son reflet (Multi tracking)

Video 1: Gazelle qui sautille, suivis avec son reflet

 

Voici la 2ème vidéo de test, où l'on suit une personne

Video 2: Suivis de personne

 

Voici la 3ème vidéo de test avec un suivis de voiture tout en étant sois même en mouvement

Video 3: Suivis de voiture, changement important d'échelle

Sur cette vidéo on peut observer les limites de cette méthode. Effectivement, lors d'un changement important d'échelle, le tracking deviens inefficace, il ne parvient pas à adapté la taille du rectangle suffisamment pour continuer le tracking.

Voici la 4ème vidéo de test représente un comédien, Mr Bean, qui bouge rapidement la tête

Video 4: Mr Bean, oscille rapidement

 

Conclusion et perspectives

 Le méthode KCF est l'une des méthodes les plus efficaces de tracking, avec un temps de calcul asser faible par rapport à d'autres méthodes de tracking. Cela vient de la simplicité avec laquelle cette méthode est implémenter, et aussi que les objets choisis représente une région d'intérêt où il faut effectuer les calculs. Les perspectives de cette méthodes sont très nombreuses, notamment dans l'aide à la conduite ou encore le suivis de personnes par caméra de surveillance.

Bibliographie

 http://docs.opencv.org/3.1.0/d2/d0a/tutorial_introduction_to_tracker.html

http://l.facebook.com/l.php?u=http%3A%2F%2Fdocs.opencv.org%2Ftrunk%2Fd5%2Fd07%2Ftutorial_multitracker.html&h=RAQE0joS-

http://www.robots.ox.ac.uk/~joao/#publications

https://arxiv.org/pdf/1404.7584v3.pdf