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