Rapport final - AgroParisTech

publicité
Etude de méthodes de Clustering pour la segmentation d’images faciales
Abderraouf Boukhatem [email protected]
Alexandre Duhamel [email protected]
David-Alexandre EKLO [email protected]
Université Paris-Dauphine
Abstract
cluster représente la distance minimale entre deux points
de clusters différents, plus cette distance est grande, plus
les clusters sont différents. L’idéal est donc de maximiser
la distance inter cluster et de minimiser la distance intra
cluster. Concernant notre problématique, une distance intra
cluster trop grande aura tendance à regrouper deux personnages différents au sein d’un même cluster, c’est un faux
positif ,à l’inverse, une distance intra cluster trop petite fera
différencier deux mêmes personnages, il s’agit d’un faux
négatif. Dans notre problème, un faux positif et un faux négatif sont traités similairement, il suffit donc de minimiser
notre erreur. La partie entraînement est donc essentielle car
elle donne un ordre de grandeur des distances à trouver et
par comparaison, nous pouvons ajuster le nombre de clusters prédéfinis.
La clustering est un domaine du Machine Learning appartenant à l’apprentissage non supervisé. Le clustering est
principalement utilisé pour regrouper des populations en
communautés disposant de critères communs proches. La
population peut être de nature très diverse : objets, image,
musique, attributs, etc. . . Cette article présente une solution pour résoudre un problème de clustering appliqué à
des images provenant d’une série télévisée, le but étant de
rassembler les mêmes personnages au sein de cluster commun. Le sujet principal de cette article est de présenter
notre première approche pour résoudre ce problème, cela
inclura : l’algorithme de clustering utilisé, la notion de distance entre images, les distances intra et inter cluster, de
la réduction d’attributs et de la réduction/valorisation de
données.
Mot-clefs : Clustering, Segmentation d’images, Extraction d’attribut, Reconnaissance faciale, Apprentissage
non supervisé.
Les données sont sous format d’images regroupées en
“tracks” correspondant à des scènes, nous disposons de
12267 tracks (9349 en entraînement et 2918 en test) avec
environ 10 images par track (soit 122670 images). Sachant
que les images d’un track sont très proches, voire identiques, nous avons à disposition une grande masse de données apportant un gain d’information minime. Dans cette
première approche, nous avons décidé de sélectionner une
image par track permettant au mieux de représenter le track.
1. Introduction
Le sujet est proposé par la société Reminiz sur challengedata.ens.fr. La problématique principale est d’effectuer une
clustering (clustering) des images de personnages de séries
télévisées à partir d’images extraites de scènes où ils apparaissent. Le but étant de regrouper les images d’un même
personnage de différentes scènes au sein d’un même cluster. Nous disposons d’un ensemble de données comportant
une partie d’entraînement et d’une autre partie de test, qui
servira pour évaluer la qualité finale de notre modèle. Dans
le cadre d’apprentissage non supervisé, la partie entraînement permettra de définir un ordre de grandeur des métriques décisives aux choix du nombre de cluster. En effet
des mesures comme la distance inter/intra cluster sont des
mesures importantes dans le choix du nombre de clusters.
La distance intra cluster représente la distance maximale
entre deux points d’un même cluster, plus cette distance
est grande, plus le cluster est hétérogène. La distance inter
Une partie de cet article traitera de la sélection d’images
et de la réduction des ensembles de données mais l’idée
générale est de comparer ces images pour choisir la représentative d’un point de vue qualité et visibilité. Toutes les
images sont uniformisées dans un format 224 x 224 pixels,
dans une approche naïve, chaque pixel représente un attribut, une image est donc représentée par 50176 attributs,
mais d’un point de vue pratique seul le visage de l’image
compte, l’idée est donc d’extraire les attributs (donc des
pixels) les plus importants pour alléger la charge de calcul et éviter de réunir des images possédant le même fond
de scène. La partie traitant de ce sujet présentera deux méthodes d’extraction d’attributs : la reconnaissance de visage
et l’ACP (Analyse en composantes principales). Après ces
prétraitements indispensables pour l’efficacité et la cohérence du modèle, nous présenterons notre approche algo1
rithmique pour résoudre ce problème par l’intermédiaire de
notre premier modèle et par l’analyse de nos résultats. Pour
ce premier modèle, nous avons opté pour une implémentation du k-means adapté à notre problématique et sa partie
dédiée présentera nos adaptations et sa singularité.
2. Distribution des données
Un des aspects importants des données est la distribution
des personnages présents. Dans un ensemble de données
équilibrées, nous aurions une distribution des images des
personnages uniformes chaque personnage auraitle même
nombre d’images mais dans ce challenge, les données étant
issues d’une série télévisée, la fréquence d’apparition des
personnages principaux est évidemment plus élevée que les
personnages secondaires.
F IGURE 2. Exemple des différentes images au sein d’un track
— La qualité du rendu de l’image, privilégier des
images nettes aux images floues.
— La luminosité du visage, le nombre de pixels du visage visible.
— L’orientation du visage, privilégier les visages vus de
face par rapport aux vues latérales.
F IGURE 1. Distribution des acteurs dans le jeu d’entraînement
On observe donc une distribution assez hétérogène, on
peut donc distinguer deux types de population :
— Les personnages principaux (environ plus de 500 occurrences)
— Les personnages secondaires (moins de 500 occurrences)
On suppose donc que la population des personnages
principaux a de forte chance d’apparaître dans les données
de test (correspondant à la fin de la série).
F IGURE 3. Exemple d’un choix d’image au sein d’un track
3. Réduction du volume des données
Comme évoquée auparavant, la première étape de notre
approche à été de nettoyer notre ensemble de données pour
alléger son volume sans réduire sa qualité. L’intérêt de posséder plusieurs images proches dans un cas de clustering est
de généraliser et d’hétérogénéiser le cluster. Dans notre cas,
les images entre deux tracks sont très différentes comparées aux images du même track, en prenant en compte cette
échelle, toutes les images d’un track sont assimilables à un
point, on a donc un volume de données conséquent avec un
gain d’informations presque nul.
Notre problématique a donc été de trouver la meilleure
image de chaque track. Pour quantifier la qualité d’une
image, nous prenons en compte trois critères principaux :
2
Nous avons donc réduit l’ensemble de données de
122670 images (environ 1.5 GB) à 12267 images (environ
170 MB).
4. Extraction d’attributs
En plus de réduire l’ensemble des données, il nous faut
aussi extraire les attributs (ici les pixels) les plus importants
pour le choix de la clustering. Dans un contexte de reconnaissance faciale, la partie de l’image la plus importante est
évidemment le visage. Notre but dans cette partie est d’expliquer nos deux différentes méthodes pour extraires les attributs important de l’image.
F IGURE 5. Exemple d’extraction de visage provenant d’images de
plusieurs tracks
4.1. Extraction de visage
Tout d’abord l’approche naïve, l’extraction de visage.
Considérant que sur chaque image, il existe un visage, nous
apprenons via un classificateur à reconnaître et à délimiter un visage. Nous n’entraînons pas ce classificateur, nous
utilisons une librairie appelé OpenCV. Son algorithme se
base sur la méthode de détection Viola et Jones. Pour résumer globalement cette algorithme, le classificateur Viola et
Jones se construit par deux composants principaux : une recherche exhaustive par des matrices de convolutions et une
clustering basée sur un modèle en cascade créé par des classificateurs boostés.
F IGURE 6. Exemple d’extraction de visage de profil
F IGURE 4. Schéma représenantant la méthode de Viola et Jones
F IGURE 7. Exemple d’extraction de visage d’image excentrique
Cette méthode est globalement efficace sur notre jeu
de données malgré qu’il existe quelques erreurs provenant
d’images contenant des spécificités.
Même si la plupart des faces latérales sont supprimées via la sélection faite au préalable, certains tracks ne
contiennent que des faces vues de profil.
La première option entraîne la création d’images de taille
possiblement différente ce qui rend toute modélisation future impossible. La seconde option permet de garder une
uniformité du format des données mais les rectangles pouvant être de tailles différentes, le calcul de distance entre
deux images sera forcément surévalué.
La réduction de l’image peut aller de 3/4 jusqu’à
1/4 dans les images excentriques. On estime la réduction
moyenne à 2/3, ce qui fait passer un problème à 50 176
attributs à 22 500.
4.2. Formatage des images
Après avoir quadrillé la zone faciale, l’idée principale est
d’isoler ces attributs, deux possibilités s’offrent à nous :
— Créer à partir du rectangle une nouvelle image.
— Remplacer l’arrière plan par un fond noir.
3
2. Nous calculons le vecteur propre avec la plus grande
valeur propre
w1 = argmax(
wt Cw
)
wt w
3. Nous calculons ensuite les k vecteurs propres avec
les valeurs propres les plus élevées, soit :
‘
Xk = X −
k−1
X
Xws wsT
s=1
On a alors :
F IGURE 8. Résultat du formatage des images initiales
‘ T ‘
wt X k X k w
)
wk = argmax(
wt w
4.3. Analyse en composantes principales (ACP)
4.3.1
Idée générale
5. Modèle KNN + KMeans
L’analyse en composantes principales a pour but de
convertir des données qui sont représentées grâce à des variables (possiblement corrélées) vers une autre représentation avec un nombre moindre de variables qui ne sont pas
corrélées et qui assurent de garder les principales spécificités de ces données. Nous devons donc composer avec les
variables que nous avons (de façon linéaire) pour obtenir les
quelques propriétés qui représentent le mieux une observation, c’est-à-dire qui nous permettent de les différencier le
mieux par rapport aux autres observations.
4.3.2
5.1. Score et mesure de performance
Pour quantifier la réussite des propositions faites, le challenge a décidé d’utiliser la V-Measure comme score.
La V-Measure est la moyenne harmonique entre deux
critères :
— l’homogénéité : critère permettant de savoir si les
clusters prédits ne contiennent que des points appartenant à la même classe.
— la complétude : critère permettant de savoir si les
points ayant la même classe sont contenus dans le
même cluster.
La V-Measure est souvent utilisée dans les problèmes de
clustering car elle permet de quantifier correctement la cohérence des clusters prédits.
Définition mathématique
Soit X une matrice de données de taille l ∗ m avec l
le nombre d’observations, et m le nombre de variables utilisées pour représenter les données. L’analyse en composantes principales est une transformation linéaire orthogonale qui va permettre de faire la projection de X dans un
nouveau système de coordonnées qui permet de maximiser
la variance. Nous devons donc trouver une matrice P telle
que XP = Y , avec Y la matrice de la nouvelle représentation des données
4.3.3
5.2. Choix de la distance
Avant d’appliquer un algorithme de clustering à nos données, il nous faut définir une distance permettant d’estimer
la dissemblance entre deux images. Il existe des distances
usuelles, l’objectif est donc de choisir dans ces distances,
celle qui est la plus adéquate au problème. Dans notre cas,
nous avons utilisé la distance euclidienne classique :
v
u n
uX
t
(xi − yi )2
Procédure de calcul de la projection
Intuitivement nous allons essayer de trouver les combinaisons linéaires de variables qui vont maximiser la variance, et cela en trouvant les directions dans lesquelles les
données varient le plus.
1. Nous devons en premier
variance-covariance

V ar(X1 )
...
C=
Cov(Xp , X1 )
i=1
Pour notre problème, utiliser la distance euclidienne est
intéressant car elle met en évidence la dissemblance des éléments du visage (couleur de peau, contraste des yeux, etc...)
par rapport à une distance de Manhattan.
calculer la matrice de
...
...
...
5.3. Décomposition du problŁme

Cov(X1 , Xp )

...
V ar(Xp )
Le premier modèle étudié se base sur des algorithmes
usuels de clustering, le KNN (plus proches voisins) et
4
KMean. Comme dit précédemment, la fréquence d’apparition d’un personnage n’est pas uniforme, on distingue deux
types de personnages :
— Les personnages principaux : présents abondamment
dans le jeu d’entraînement
— Les personnages secondaires
Il est tout à fait possible qu’un personnage estimé principal soit en réalité secondaire mais l’estimer nous paraît
très difficile. Compte tenu de ces deux populations, on suppose donc que le noyau des personnages principaux sera
présent dans le jeu de test contrairement aux personnages
secondaires. On transforme donc une partie du problème de
clustering en problème de classification classique.
F IGURE 10. Représentation d’un KDTree
5.4.2
Les paramètres importants dans ce modèle sont le
nombre de voisins choisis pour le vote, pour le déterminer,
nous testons ce paramètre empiriquement (voir partie résultats) mais l’idée générale est d’avoir un k assez élevé pour
avoir un vote de qualité et un k assez raisonnable pour ne
pas avoir l’influence du cluster le plus peuplé, ceci est déterminable par analyse de la distribution des personnages
dans les données.
Pour le seuil, il nous faut déterminer quelle proportion le
noyau des personnages représente vis-à-vis du jeu de test.
Si nous estimons que le noyau représente 50 % des données
de test, on paramètre le seuil comme la distance moyenne
de la matrice cible avec ses plus proches voisins.
Pour notre part, nous avons estimé empiriquement cette
proportion de 25 % . Soit un personnage sur quatre est déjà
présent dans le jeu d’entraînement.
F IGURE 9. Décomposition du problème
5.4. Modele de classification : KNN
La partie classification aura donc pour but d’utiliser les
données d’entraînement pour créer les clusters principaux
du jeu de test. Pour déterminer si une image représente un
personnage du noyau, on utilise un seuil choisi arbitrairement, si la distance moyenne dépasse ce seuil, on considère
celui-ci comme hors du noyau et sera traité par le kmean
ultérieurement.
5.4.1
Paramétrage
5.5. Modele de classification : KMeans
La seconde partie est donc d’appliquer un algorithme de
clustering sur les données considérées comme représentant
un personnage nouveau. On utilise un algorithme Kmean
comme modèle. Il nous reste donc à déterminer le nombre
de cluster k à construire.
Nous avons à disposition le nombre de personnages présents dans chaque épisode. Après analyse des jeux d’entraînement, on observe que peu de personnages n’apparaissent
uniquement dans un épisode. Par simplification, on suppose
donc que chaque personnage apparaît au moins dans deux
épisodes. On estime donc le nombre de personnages total
comme le maximum du nombre de personnages présents
dans un épisode (22 dans le jeu de test). Comme dit précédemment, on estime qu’un personnage sur quatre est un
personnage principal ce qui ramène le paramètre k à 16.
Espace de représentations
Lors de l’application du KNN, il nous faut un ensemble
de représentations des matrices images pour avoir la distance de chaque image avec son plus proche voisin. A petite échelle cela est traité par brute force, chaque élément
est stocké dans une liste, où chacun calcule sa distance avec
les autres éléments puis la liste est triée. Dans notre cas, la
quantité de données ne permet pas de faire du brute force,
nous utilisons donc une structure appelée KDTree.
Le KDTree un est arbre binaire utilisé pour stocker des
éléments dépendamment de leurs caractéristiques, l’idée
générale est de regrouper les éléments proches dans la
même branche.
Cette représentation permet d’accéder aux plus proches
voisins avec une complexité logarithmique.
5.6. Résultats et discussion
Cette partie permet de visualiser les différents résultats
obtenus par le modèle.
5
K Homogénéité Complétude VMeasure
11 14.253
14.381
14.314
16 15.999
15.745
15.981
20 17.825
17.855
17.845
24 19.221
19.227
19.224
26 18.252
18.126
18.240
D’après ces résultats, on a donc des résultats assez
faibles. On explique ce résultat par la mauvaise estimation
de distance entre deux images ce qui entraîne une incohérence du système malgré un modèle robuste. La prochaine
étape est donc d’utiliser des algorithmes plus spécialisés
dans la reconnaissance faciale (comme les algorithmes de
Fisher, Eigenfaces, etc...). Même si l’idée d’extraction d’attributs semble être une bonne idée, elle rend les résultats
incohérents.
F IGURE 11. Comparaison des scores obtenus par Isomap et ACP
7. DBSCAN
6. Isomap
(density-based spatial clustering of applications with
noise). C’est un algorithme de partitionnement de données
qui s’appuie sur la densité estimée des clusters. Il ne nécessite pas le nombre de clusters en entrée.
6.1. Idée générale
Isomap est une méthode de réduction de dimension nonlinéaire. Tout comme des méthodes linéaires, Isomap essaie
de maintenir une certaine similarité entre les points, cependant elle n’utilise pas les memes distances de calcul. La distance entre les points est plutôt calculée selon le plus court
chemin entre ces points.
7.1. Idée générale
L’algorithme DBSCAN utilise 2 paramètres : la distance
epsilon et le nombre minimum de points MinPts devant se
trouver dans un rayon epsilon pour que ces points soient
considérés comme un cluster. Les paramètres d’entrées sont
donc une estimation de la densité de points des clusters.
L’idée de base de l’algorithme est ensuite, pour un point
donné, de récupérer son epsilon -voisinage et de vérifier
qu’il contient bien MinPts points ou plus. Ce point est alors
considéré comme faisant partie d’un cluster. On parcourt
ensuite l’epsilon -voisinage de proche en proche afin de
trouver l’ensemble des points du cluster
6.2. Description de l’algorithme
— Trouver les K plus proches voisins d’un point : cela
est calculé en utlisant la distance euclidéenne la plupart des temps.
— Créer un graph, en reliant chaque point avec ses K
plus proches voisins, l’arête créée est pondérée par
la distance euclidéenne entre ces deux points.
— Calculer le plus court chemin entre chaque points
deux à deux , en utilisant des algorithmes tels que :
Djikstra ou Floyd-Warshall, et construire la matrice
de dissimilarité.
— Calculer les vecteurs propres de la matrice de dissimilarité, ces vecteurs sont la base du nouvel espace
vectoriel.
7.2. Remarques
Il n’est pas nécessaire donner le nombre de clusters. On
peut donc apprendre epsilon et MinPts sur le training et utiliser ça pour le test. Cependant il ne gère pas des clusters
de densités différentes (comme c’est le cas chez nous). En
outre il considère des points qui ne répondent pas à ses critères comme outliers.
6.3. Résultats obtenus
Voici les résultats obtenus avec les deux méthodes de réduction de dimension, en utilisant différentes méthodes de
clustering :
8. OPTICS
(acronyme de ordering points to identify the clustering
structure en anglais) est un algorithme de partitionnement
de données basé sur la densité dont le principe est similaire
à DBSCAN mais élimine son principal défaut : la possibilité
de détecter des partitions de densités différentes.
Comme DBSCAN, OPTICS demande deux paramètres :
epsilon, définissant un rayon maximum à considérer, et
MinPts, définissant un nombre de points minimum. Ces
deux paramètres définissent donc une densité minimale
6
pour constituer un groupe de données. Un point p appartient à un groupe si au moins MinPts points existent dans
son epsilon -voisinage. Par contre, à l’inverse de DBSCAN,
le paramètre epsilon est optionnel. S’il est omis, il sera alors
considéré comme infini. L’algorithme définit pour chaque
point une distance, appelée core distance, qui décrit la distance avec le MinPtsème point le plus proche.
[6] Image KDTree, wikipedia.org/wiki/Arbre_kd
[7] Charles Otto, Brendan Klare, Anil Jain"An Efficient
Approach for Clustering Face Images"
[8] Liwei Wang, Yan Zhang, Jufu Feng, "On the Euclidean
Distance of Images"
9. Conclusion
Cette conclusion aura pour but de faire un bilan général
sur le problème de clustering et sur de la reconnaissance
faciale.
Nous pouvons décomposer notre problème en deux sous
problèmes fortement dépendants : Une partie pré traitement
pour restructurer la donnée dans un format plus favorable,
l’autre partie pour appliquer un algorithme de clustering et
déterminer le bon paramétrage pour un résultat optimal.
Pour la première partie, nous avons opté pour une approche naïve de localisation et extraction de visage pour réduire le volume de données et valoriser les attributs déterminants. Même si d’un point de vue extérieur, l’idée semble
pertinente, on remarque par les résultats obtenus que l’extraction et surtout de calcul de distance entraîne une incohérence sur le système. Dans une amélioration future, il
semble indispensable de se baser sur des algorithmes spécialisés dans la reconnaissance faciale ayant déja fait ses
preuves pour estimer cette distance.
Pour la seconde partie, plusieurs modèles ont été développés en parallèle pour assurer une diversité de résultat
pouvant être comparés, et si possible être optimisés.La recherche du paramètrage a aussi été largement effectuée empiriquement.
Cet article a pour but une exploration du sujet sur des
points connus mais avec par un point de vue moins commun. L’idée principale est aussi de proposer un modèle
connu répondant au problème du challenge avec des adaptations mineures innovantes. Même si les résultats ne sont pas
satisfaisants, la compréhension d’une erreur permet d’approcher la solution.
Références
[1] Paul Viola et Michael Jones, « Rapid Object Detection
using a Boosted Cascade of Simple Features », IEEE
CVPR, 2001
[2] Peter N. Belhumeur, Joao P. Hespanha, and David J.
Kriegman, Eigenfaces vs. Fisherfaces : Recognition
Using Class Specific Linear Projection
[3] Rahib H. Abiyev, "Facial feature extraction techniques
for face recognition"
[4] OpenCV,opencv.org/documentation.html
[5] Scikit-learn, scikit-learn.org/stable/documentation.html
7
Téléchargement