Você está na página 1de 49

Stage de Master Image, Vision, Interation 2

me
anne
Analyse dynamique
d'expressions faciales
dans une vido
Smagghe Philippe
1/02/11 - 30/06/11
Laboratoire LIFL - quipe FOX-MIIRE
Directeur de stage : Chaabane Djeraba
Encadrants : Marius Bilaco, Taner Danman
16/05/11
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 1/49
Rsum
La reconnaissance d'motions dans un flux vido est une thmatique importante de la
vision par ordinateur. Ses applications sont varies, allant de l'animation de visage raliste
l'amlioration de la communication homme-machine, en passant par les robots-jouets
rpondant aux motions des utilisateurs. La mthode gnralement suivie consiste en un
reprage du visage et de caractristiques faciales, comme la position et le mouvement relatif
des sourcils, puis en une classification directe en motion pour chaque image. Dans cette
tude, l'approche propose se base sur une vision dynamique de la reconnaissance d'motions.
En dtectant le visage, les sourcils, les yeux, et en cherchant les informations sur le mouvement
de ces parties du visage dans un flux vido, l'implmentation ralise permet de reconnatre
certaines de ces actions et d'en dduire les expressions faciales utilises.
Summary
Recognition of emotions in a video stream is a major theme of computer vision. Its
applications are wide, ranging from realistic facial animation to improved human-machine
communications, via robotic toys that meet the users' emotions. The standard approach
consists in tracking face and facial features, such as position and relative movement of the
eyebrows, followed by a direct classification into emotions for each picture. In this study, the
proposed approach is based on a dynamic vision of emotion recognition. By detecting the face,
eyebrows, eyes, and looking for informations on the movement of these parts of the face in a
video stream, the implementation allows to recognize some of these actions and to infer the
facial expressions used.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 2/49
Remerciements
Je tiens remercier ici :
Chabane Djeraba, pour m'avoir permis de raliser ce stage au sein de l'quipe,
Taner Danman et Marius Bilaco pour leur encadrement,
Robin Pochet, pour ses conseils aviss,
Ainsi que toute l'quipe FOX-MIIRE pour leur accueil et leurs conseils.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 3/49
Sommaire
I. Introduction
1. Laboratoire LIFL et quipe FOX-MIIRE
2. Analyse dynamique d'expressions faciales.
II. tat de l'art
1. Systmes de mesure d'expressions faciales
2. Types d'approches pour l'analyse d'expressions faciales
3. Extraction des caractristiques
4. Classification des expressions
5. Conclusion
III. Approche dveloppe
1. Approche globale
2. Dtection des zones d'intrt
3. Estimation de la pose
4. Dtection temporelle
5. Extractions des caractristiques
6. Classification en expression
IV. Implmentation et tests
1. Dtail de l'implmentation
2. Fonctions de dtection
3. Fonctions d'extraction et de classification
4. Tests et comparaisons de l'algorithme
V. Conclusion et perspectives
Bibliographie
Annexes
A. Liste des Units d'Actions
B. Code des fonctions
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 4/49
I. Introduction
1. Le laboratoire LIFL et l'quipe FOX-MIIRE
a) LIFL
Le LIFL, Laboratoire d'informatique fondamentale de Lille, est situ Villeneuve d'Ascq
sur le campus de l'Universit de Lille 1 et de la Haute-Borne. En partenariat troit avec le CNRS
depuis sa cration, le LIFL est une Unit Mixte de Recherche (UMR) de l'Universit Lille 1 du
CNRS et de l'universit Lille 3. Il est rattach l'Institut des Sciences Informatiques et de leurs
Interactions (INS2I) du CNRS. Partenaire privilgi du centre INRIA Lille Nord-Europe depuis sa
cration, il partage avec celui-ci 10 quipes-projets.
Riche de nombreux partenariats acadmiques, industriels et interdisciplinaires, le
laboratoire s'inscrit dans la dynamique rgionale de la recherche en STIC. Membre de l'institut
IRCICA (USR CNRS, Institut de Recherche sur les Composants matriels et logiciels pour
l'Information et la Communication Avance) depuis 2007, le LIFL est galement impliqu dans
l'Institut de Recherche Interdisciplinaire (IRI). Il dveloppe des plates-formes techniques
denvergure comme la Plate-forme Images Ralit Virtuelle et Interaction (PIRVI) ou participe
des plates-formes nationales (Grid 5000, EGEE, Senslab). Cr en 1983, le laboratoire a connu
depuis une forte croissance et accueille actuellement environ 250 personnes, dont une
centaine de chercheurs et enseignants-chercheurs, trente ingnieurs, techniciens et
administratifs et une centaine de doctorants : c'est le plus important laboratoire franais de
recherche en informatique au nord de Paris.
b) quipe FOX-MIIRE
L'quipe FOX-MIIRE (Fouille et indexation de dOcuments compleXes et multimdias -
Multimdia, Image, Indexation et Reconnaissance) est une quipe de recherche du LIFL. Les
thmes principaux du groupe portent sur a) l'analyse statistique de formes 3D et ses
applications comme la segmentation, la mise en correspondance et la recherche
d'informations 3D, et b) la reconnaissance de visages ou d'expressions faciales. Ce travail
s'inscrit dans ce second axe. L'quipe dveloppe de nouveaux outils mathmatiques et
algorithmiques en combinant de nombreux domaines d'expertise tel que la gomtrie, la
topologie, les statistiques, l'apprentissage, la reconnaissance de formes, ou encore la vision par
ordinateur.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 5/49
2 . Analyse dynamique d'expressions faciales dans une vido
a) Contexte
L'analyse d'motions remonte au 19
me
sicle, o Darwin [01] avait dmontr
l'universalit des expressions faciales et leurs prsences communes chez les hommes et les
animaux. Plus rcemment, Ekman et Friesen [02] ont postul l'existence de six motions
primaires distinctes qui rsultaient dans des expressions faciales diffrentes. Ces expressions
communes semblent tre universelles entre les cultures et ethnicits humaines (fig 1).
Auparavant rserve la recherche psychologique, la reconnaissance d'motions s'est
ouverte la recherche en vision par ordinateur avec l'arrive d'outils comme la dtection et le
suivi de visages, ainsi qu'une puissance de calcul croissante. Les applications envisages
recouvrent plusieurs domaines, de l'analyse d'images pour la robotique [46] et les interfaces
hommes-machines (IHMs) [45][48][50], l'analyse de visage en mdecine [03] ou pour des
tudes psychologiques, en passant par la compression d'images de visages, la ralit
augmente ou l'animation de visages virtuels [04]. L'intrt de la reconnaissance d'motions a
galement t montr dans l'apprentissage [47].
Lquipe FOX sintresse de manire gnrale lextraction des informations de la vido
et ses applications au comportement humain. Les travaux dj raliss ont explor
lextraction des motions de base partir des images en utilisant uniquement des informations
statiques telles que les distances entre les rgions significatives du visage (sourcils, yeux, nez,
bouche, etc). Ces informations taient suffisantes pour caractriser des motions simples et
plutt statiques telles que la joie ou la surprise. Cependant, elles ne suffisent pas lors de l'tude
des motions plus complexes telles que lnervement ou le stress.
Les expressions faciales sont gnres par les contractions des muscles du visage, ce qui
gnre des dformations dans les zones caractristiques du visage, telles que les paupires, les
sourcils, ou les lvres pour une dure gnralement comprise entre 250 ms et 5 s. Les motions
sont dduites de la dformation relative des diffrentes zones d'intrt faciales, mais
galement de leurs combinaisons et timings. C'est pourquoi l'analyse d'images statiques ne
peut rvler des changements subtils dans l'expression faciale. L'hypothse de l'quipe est que
lapport informationnel issu de ltude du mouvement de la personne dans sa globalit peut
augmenter de manire importante la dtection des motions et la quantification de leur
intensit, hypothse valide par diffrentes recherches psychologiques [49].
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 6/49
Figure 1 : Expressions de la colre, du dgot,de la tristesse, de la peur, de la suprise et de la joie.
b) Problmatique et objectifs
Le sujet de ce stage est dtudier limpact de la dynamique du visage et des gestes sur
lextraction des motions partir de flux vidos. L'objectif de ce stage est donc de modliser,
implmenter et tester un programme exploitant la composante dynamique des expressions
faciales pour reconnatre les motions des utilisateurs. Les diffrentes tapes incluent la
dtection temporelle des expressions, la dtection spatiale du visage, des yeux et de la bouche
et leur normalisation, puis l'extraction de caractristiques spcifiques aux expressions faciales,
et enfin une classification de ces caractristiques en motions.
Les principaux problmes rsoudre sont, notamment, la grande diversit des
physionomies d'une personne l'autre et l'immense gamme d'expressions faciales possibles,
variables en timing et en aspect la fois selon l'ge, le sexe, l'ethnie, l'apparence des cheveux,
ainsi que la prsence de divers accessoires (lunettes, mches). cela s'ajoutent les difficults
lies la prise de vue, comme les variations de la position de la tte, les clairages partiels, et
les occlusions. Enfin, des contraintes techniques imposent de limiter l'espace mmoire requis
et le temps de calcul afin de permettre l'excution en temps rel ou semi-temps rel.
c) Plan du rapport
Dans la suite du rapport, je prsente dans la partie II un tat de l'art dtaill sur les
mthodes existantes en reconnaissance dynamique d'motions, avec une comparaison des
types de mesures d'expressions faciales (II.1), une analyse des techniques de normalisation et
des approches de dtection des expressions faciales (II.2), une revue de plusieurs techniques
d'extraction de caractristiques (II.3) et une tude des mthodes de classification des
expressions (II.4).
J'expose dans la partie III l'approche labore au cours du stage, avec notamment la
dtection spatiale des caractristiques faciales (III.2), une estimation de la pose de la tte pour
la normalisation (III.3), la dtection temporelle des expressions (III.4), l'extraction de
caractristiques (III.5) et une classification des expressions en motions (III.6).
Ensuite, la partie IV montre le dtail de l'implmentation (IV.1), les tests et rsultats des
algorithmes de dtection (IV.2), des algorithmes d'extraction de caractristiques et des
algorithmes de classification (IV.3), enfin les tests de l'algorithme entier (IV.4). Enfin, la partie V
conclut ce rapport et apporte quelques perspectives sur des applications futures. Certains
dtails du systme de classification ainsi que le code des fonctions sont dtaills
respectivement dans les annexes A et B.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 7/49
II. tat de l'art
1 . Systmes de mesure d'expressions faciales
a) Approches base sur le jugement
Il existe diffrentes approches dans l'analyse d'expression. La plupart des approches se
rfrent un jugement humain et consistent en la classification directe de visages dans les 6
motions basiques dfinies par Ekman [02], en se basant sur l'interprtation d'experts ou de
non-experts pour juger des rsultats. Cette mthode est la plus simple tester, mais a pour
dsavantage d'influencer la prcision des rsultats, en particulier pour l'valuation du timing et
de l'intensit des expressions par les interprtes.
b) Approches bases sur les symboles
l'oppos, d'autres approches sont bases sur les symboles, les dformations et
mouvements du visage sont reconnues puis classifies, avant d'tre interprte. Diffrents
systmes ont dj t cr pour le codage de ces diffrentes actions faciales. Les plus rcents,
comme EMFACS [06], MAX [07], ou AFFEX [08] sont construits spcifiquement dans le but de
la reconnaissance d'motions. Cependant, le systme majoritairement utilis dans les
approches bases sur les symboles est le systme FACS (Facial Action Coding System) conu
dans ce but par Ekman et Friesen [05].
Selon Ekman [66], plusieurs aspects doivent tre considrs lors de la mesure
d'expressions faciales, comme (a) une rfrence externe pour l'valuation de certaines actions
faciales spcifiques, car certaines expressions sont plus aises reconnatre que d'autres, (b)
des expressions spontanes plutt que poses, (c) des sujets varis, y compris des enfants, des
adultes et des personnes ges, (d) l'utilisation d'experts et de non-experts pour la mesure, et
(e) l'valuation de la prcision de la mesure la fois pour le type et l'intensit des expressions.
Ces tapes sont plus facilement rsolus avec une approche base sur les symboles qu'avec une
approche base sur le jugement, car cette dernire ne peut fournir qu'une prcision de
classification limite. Par exemple, il y a au sein d'une catgorisation basique d'motions trop
de place pour l'interprtation. Mme si ces motions sont universelles, l'interprtation est
fortement influence par la culture [67] ou l'apprentissage [68].
D'un autre ct, les approches bases sur les symboles sont plus objectives, car les
interprtes ne doivent s'accorder que sur des actions spcifiques plutt que de raliser
l'interprtation globale du visage. Ces approches ont galement l'avantage de sparer la
reconnaissance et l'interprtation des expressions faciales. C'est pourquoi l'approche propose
ici se base sur les symboles, l'aide du systme FACS, dcrit plus prcisment dans la suite.
c) Dtail du systme FACS
Le Facial Action Coding System (FACS) est une mthode de description des mouvements
du visage dveloppe par les psychologues Paul Ekman et Wallace Friesen la fin des annes
1970 [05]. C'est devenu le principal outil de description utilis dans les tudes s'intressant
l'expression faciale, par exemple dans le domaine des sciences affectives. Cette nomenclature
s'inspire elle-mme des travaux de l'anatomiste sudois Carl-Herman Hjortsj publis dans son
ouvrage sur l'imitation faciale Mnniskans ansikte och mimiska sprket [59] (Le visage de
l'homme et le langage de l'imitation, 1969).
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 8/49
Dans le systme FACS, les mouvements du visage sont dcomposs en units d'action
(ou Action Unit, AU). Le systme FACS repose sur la description de 46 AUs identifies par un
numro dans la nomenclature FACS. Par exemple, l'AU 1 correspond au mouvement de lever les
sourcils au niveau du nez (Inner Brow Raiser), comme montr sur la figure 2.
Figure 2 : AU 1 : Lev sourcils intrieurs (Inner Brow Raiser)
Chaque AU peut correspondre la contraction ou la dtente d'un ou plusieurs
muscles, qui se traduit par un mouvement d'une partie donne du visage. Une expression
faciale, comme une expression de peur, correspond donc la mise en jeu de plusieurs units
d'action. Par exemple, dans le cas d'un visage apeur, les AUs mises en jeu seraient : (1), lev
des sourcils intrieurs (2), lev des sourcils extrieurs, et ventuellement (20), tension des
lvres et (26), abaissement de la mchoire infrieure.
Le systme FACS permet de coder manuellement presque l'ensemble des expressions
faciales possibles, en les dcomposant en AUs, et en segments temporels correspondants.
Comme les AUs sont indpendantes de l'interprtation, elles peuvent tre utilises par des
processus plus complexes, comme la reconnaissance des motions basiques. Ekman et Friesen
ont galement dvelopp EMFACS [06] (Emotion Facial Action Coding System) et FACSAID [09]
(Facial Action Coding System Affect Interpretation Dictionary) qui ne considrent que les
motions relatives aux actions faciales. Par exemple :
Joie AU 6+12
Tristesse AU 1+4+15
Surprise AU 1+2+5B+26
Peur AU 1+2+4+5
Colre AU 4+5+6+23
Dgot AU 9+15+16
Mpris AU 12A+14A
Le systme FACS est un index d'expressions faciales, mais ne donne aucune information
biomcanique propos du degr d'activation des muscles. Les intensits des AUs sont notes
par des lettres de A E, A tant le degr le plus faible, et E l'intensit maximale pour la
personne. Les degrs sont les suivants :
A Trace, B Lger, C Marqu/Prononc, D Svre/Extrme, E Maximum
Une liste des AUs est donne en Annexe A.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 9/49
2 . Types d'approches pour l'analyse d'expressions faciales
Sur la figure 3, on reprsente les diffrentes approches gnralement utilises dans le
cadre de la reconnaissance d'motions. Les mthodes varient selon leur mthode de
normalisations et segmentation, leur extraction des caractristiques, leur reprsentation et
codage sous-jacent, ainsi que leur interprtation.
L'analyse des expressions faciales en vision par ordinateur est complexe du fait de la
varit des physionomies d'une personne l'autre, ainsi que des problmes lis la prise de
vue, comme l'clairage, la position du visage par rapport la camra, et les occultations.
Certaines mthodes permettent de rsoudre ces problmes en normalisant le visage. En
particulier, il existe des algorithmes de normalisation par rapport des modles de visage pour
la position de la tte [10], ainsi que des mthodes d'analyse multi-rsolutions pour l'estimation
de la taille de la tte [11]. Pour les problmes d'illumination, il existe des approches base
d'ondelettes de Gabor [12] qui rsolvent les changements d'clairage de manire globale, mais
peu de travaux ont t raliss sur des visages en partie clairs [13]. L'approche propose ici
normalise le visage par rapport aux rotations et l'chelle, ce qui est dtaill dans la partie III.3.
Les problmes d'illuminations n'ont pas t considrs par manque de temps. Enfin, les
problmes d'occultations sont partiellement rsolus par la segmentation du visage en sous-
parties, ce qui est mis en vidence dans la partie III.6.
La dtection temporelle des expressions est peu abord dans les tudes, parfois rsolu
l'aide de dtection d'images-cls (keyframes) [16], ou par l'analyse de fentres temporelles de
taille variables. Ces mthodes permettent de rduire le temps de calcul de l'algorithme par
rapport une analyse directe pour l'ensemble des donnes, en vitant de raliser des calculs
inutiles sur des images o aucune expression n'est dtecte. L'approche propose utilise une
mthode drive de [16] pour la dtection temporelle des expressions, dans la partie III.4.
partir d'un visage normalis, on peut diviser les diffrentes approches selon plusieurs
critres. On distingue par exemple les approches bases sur les dformations (dites statiques)
des approches bases sur les mouvements (dites dynamiques). Dans le premier cas, on se
concentre sur une image suppose neutre du visage pour extraire des caractristiques faciales
qui sont pertinentes pour dterminer les expressions. Mais ces mthodes ne permettent pas
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 10/49
fig.3 : Reprsentation des diffrentes tapes de la reconnaissance d'motions. (donnes, mthodes) [14].
Normalisation :
Pose, chelle
Illumination
Acquisition
du visage
Approches : Dformation
- Base sur l'image
- Base sur des modles
Approches : Mouvement
- Suivi de points d'intrt
- Dense Optical Flow
- Modles de mouvements
Classification de
l'expression
Reprsentation des caractristiques :
Base sur les actions musculaires
Modles de paramtres
Projection en composantes
Reconnaissance :
- Codage en actions faciales
Interprtation :
- Classification en expressions
motions
basiques
Extraction des
caractristiques
Segmentation :
Arrire plan/Visage
Points d'intrts
de reconstruire des mouvements de manire globale. Des tudes psychologiques [49] ont
montr que la reconnaissance des expressions tait plus prcise et robuste dans le cas de
vidos qu'avec des images seules. Dans le cas des approches dynamiques, on extrait les
changements du visage dus une expression, ce qui permet de s'affranchir des
caractristiques propres une personne, telles que physionomie du visage, rides, tatouages,
mches de cheveux. Les mthodes dynamiques ont galement plus de liens avec les systmes
de codage tel que FACS, car les mouvements du visage sont directement lis aux actions
musculaires et donc aux Actions Units. C'est pourquoi l'algorithme propos se base sur une
approche de type dynamique.
3. Extraction des caractristiques
Dans le cadre des approches dynamiques, on peut distinguer deux directions de
recherche distinctes : les approches holistiques, o l'on analyse le visage dans sa globalit, et
les approches locales, o l'on se concentre sur des caractristiques faciales qui sont
reprsentatives des expressions. Les points caractristiques pertinents sont en particulier les
yeux, les sourcils, la bouche, et ventuellement le front. De manire gnrale, les mthodes
holistiques sont meilleures pour dterminer les expressions dans leur ensemble, tandis que les
mthodes locales peuvent dtecter des changements plus subtils [69].
a) Extraction par optical flow
Parmi les diffrentes mthodes dynamiques, nous trouvons l'optical flow dense [17][18],
appliqu de manire holistique. La mthode utilise dans [18] utilise en particulier une mthode
d'optical flow dense, multi-rsolution, bas sur des ondelettes. Dans la figure 4, nous pouvons
voir un exemple de vecteurs obtenus en appliquant une mthode d'optical flow sur une
squence d'images.
fig.4 : Exemple d'application d'optical flow [14].
Cette mthode a galement t applique de manire locale dans [19][58] en estimant
l'activit de plusieurs muscles faciaux. Le calcul est alors ralis dans chaque fentre autour de
la rgion d'intrt slectionne. D'autres travaux [20] ont galement estim l'expression
dynamique en appliquant la transforme de Fourier aux rsultats d'optical flow de zones
particulires. Ces algorithmes sont de manire gnrale sensibles au bruit, l'clairage, ainsi
qu'aux discontinuits de mouvement. Le temps de calcul peut parfois tre important.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 11/49
b) Extraction par modles de mouvements
L'utilisation de modles de mouvement (motion models) est galement une approche
utilise de manire locale ou holistique. Par exemple, dans [21], des contours dformables
(snakes) sont utiliss pour suivre les mouvements des lvres et d'autres caractristiques
faciales sur des squences d'images. Dans [22], on utilise des modles de mouvement 3D pour
la reconnaissance d'expression sur l'ensemble du visage.
De manire locale, les modles de mouvement ont galement t utiliss avec
l'utilisation de modles paramtriques sur des rgions d'intrt [23][24][57] pour modliser les
mouvements de la bouche, du nez, des paupires et des sourcils. Ces mthodes permettent
d'exprimer avec peu de paramtres les mouvements faciaux basiques, mais se rvlent peu
efficaces sur des actions plus complexes.
c) Extraction par suivi de points d'intrts
Certaines mthodes se concentrent sur le mouvement relatif de points d'intrts, de
motif ou de marqueurs. Les mthodes de suivi de points d'intrt estiment les mouvements
uniquement partir d'une slection de points sur le visage [18][25][26][58]. Ces points sont
gnralement placs dans des zones de fort contraste pour une meilleure dtection (figure 5).
L'analyse de mouvement n'est pas ralise ailleurs que sur ces points, et donc certaines
expressions ne peuvent tre reconnues par ce moyen. L'initialisation des points d'intrt peut
poser galement des problmes, et est ralise soit manuellement, soit de manire
automatique [27][70]. Une autre solution pour rsoudre ce problme est l'utilisation de
marqueurs sur le visage, ce qui permet de visualiser des mouvements dans des zones de faible
contraste (joues, front) [28][29][30].

fig. 5 : Slection de rgions d'intrt automatique.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 12/49
d) Extraction par l'utilisation de diffrences d'images
Une dernire mthode pour l'extraction dynamique d'expressions faciales est
l'utilisation de diffrences d'images [31][17][32][33]. Dans cet algorithme, on soustrait l'image
analyser une image antrieure de la mme personne dans les mmes conditions, suppose
d'expression neutre (figure 6). Cette mthode a pour inconvnient de ne pas permettre le
calcul de directions de mouvements, mais permet d'en estimer uniquement l'intensit. Cette
mthode est galement trs sensible aux rotations, translations et changements d'chelle du
visage, ce qui est rsolu dans [34] par l'utilisation d'histogrammes locaux sur des images
conscutives.
fig.6 : Utilisation d'Images diffrences entre des visages expressifs et neutres. [14].
4. Classification des expressions
La classification des caractristiques en expressions est la dernire tape du systme.
On distingue deux approches de classification, savoir spatiale ou spatio-temporelle. Dans les
approches spatio-temporelles, les modles de Markov cachs (HMMs, Hidden Markov Models),
la base conus pour la reconnaissance vocale, sont souvent utiliss en raison de leur efficacit
[20][35][54][55].
Des rseaux de neurones rcurrents sont galement utiliss [36][37] dans ce but. On les
retrouve dans des approches spatiales [38][17][39][56], soit directement sur des images de
visage, soit combins avec des techniques d'extraction de caractristiques, comme l'analyse en
composante principale [54], ou les filtres base d'ondelettes de Gabor [31][40][60]. Ces
dernires mthodes permettent une grande rduction dimensionnelle, ce qui simplifie la
classification. L'inconvnient majeur des rseaux de neurones est leur apprentissage, qui est
trs important lorsqu'on tente de reconnatre une expression parmi les milliers de
combinaisons que le systme FACS offre. Plus rcemment, plusieurs mthodes base de
rseaux baysiens [51][54], de machines vecteurs de support ( SVM, Support Vector Machine )
[52][53] offrent des rsultats apprciables et gnralement similaires, comme le montre
l'tude [52].
Les rsultats sont souvent combins par une mthode de boosting comme Adaboost,
diminutif d'Adaptative Boosting [65], un algorithme d'apprentissage pouvant tre utilis en
conjonction avec d'autres algorithmes pour amliorer leurs performances. AdaBoost est
adaptatif dans le sens que les classifieurs reconstruits sont modifis au regard des cas mal
classifis par les prcdents. AdaBoost est sensible au bruit et aux donnes aberrantes.
Cependant, dans la majorit des cas, il est moins susceptible au problme de surapprentissage
que la plupart des algorithmes d'apprentissage.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 13/49
La reconnaissance des expressions faciales est traditionnellement base sur des rgles
ou des reprsentations symboliques cres par les chercheurs au cours de leurs tudes, par
exemple [24]. Une aide d'experts humains est alors ncessaire pour les convertir en motions.
Cependant, les messages faciaux se dcomposent en de multiples expressions distinctes,
chacune avec des volutions et intensits distinctes. Certaines expressions varient trs
subtilement, ce qui rend la tche de classification manuelle difficile. C'est pourquoi les travaux
rcents sont majoritairement tourns vers des systmes de codages d'expressions faciales, tels
que MPEG-4 [41][42][56], FACS [17][32][33][54], ou encore FACS+, une extension du systme
FACS qui permet de dcrire la dynamique des expressions faciales [22] de manire exhaustive.
L'interprtation consiste gnralement en une assignation directe des expressions
faciales en une des 6 expressions basiques, par exemple [22][43]. Certains utilisent cependant
des systmes de rgles ou des dictionnaires d'expressions faciales pour retranscrire les actions
faciales en catgories d'motions [24][44]. Cette dernire mthode a l'avantage de dcrire
prcisment les expressions faciales sans recourir une interprtation, et a donc t retenue
dans l'approche propose.
5. Conclusion
Dans cet tat de l'art, nous avons vu diffrentes approches pour la reconnaissance
dynamique d'expressions faciales dans une vido. Il est ce jour difficile de comparer les
diffrentes mthodes proposes, en raison des diffrences de classification des expressions
faciales (plus ou moins de classes d'motions), ou de la disparit des protocoles de tests et
bases de donnes utiliss. On peut citer les bases de donnes [71] et [72], mais de manire
gnrale, il y a un manque de bases de donnes de test d'images ou de vidos d'expressions
faciales librement utilisables qui permettraient de tester les approches de manire plus
pousse.
ce jour, la plupart des travaux ralisent une classification des expressions dans une
des motions basiques, et donc ne permettent pas de reconnatre les expressions dues un
effet sans motion (cillement par exemple) ou un effet physiologique (billement). Certaines
mthodes se concentrent cependant sur des expressions plus spontanes [51][52]. Le systme
FACS prsent ici offre une solution ce problme, en sparant leur dcomposition en
mouvements et leur interprtation. Un autre problme peu tudi est le fait que les
expressions faciales peuvent souvent intervenir dans une conversation [15], car le langage, et
les mouvements de la bouche qu'il implique changent la physionomie du visage. Enfin, certains
travaux partent vers de toutes autres approches, comme les mthodes multimodales, prenant
en compte l'activit sonore ou encore d'autres donnes physiologiques, telle la frquence
cardiaque.
L'approche propose dans la suite du rapport utilise plusieurs des techniques de cet tat
de l'art. En particulier, elle s'inspire des travaux de [16] pour une mthode originale de
dtection temporelle, et exploite une mthode d'extraction de caractristiques utilisant
l'optical flow. Enfin, la classification a t ralise l'aide de dictionnaires de rgles et de
HMMs.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 14/49
III. Approche dveloppe
1. Approche globale
L'approche propose est partiellement base sur le travail de Fadi Dornaikaa et Bogdan
Raducanu dans Inferring facial expressions from videos : Tool and application [16],
cependant, les algorithmes divergent sur de nombreux points et sont difficilement
comparables. Elle se base sur une dtection d'units d'actions (Action Units, AUs) partir de
certaines zones du visage, comme les sourcils et la bouche, afin de reconstituer des
expressions faciales partir du systme FACS.
La dtection de zones d'intrt (fig.5) est assure par des mthodes dj dveloppes
telles que la mthode de Viola-Jones [61]. La dtection temporelle des expressions, inspire de
[16], est assure par la dtection d'images-cl (keyframes). La pose et l'clairage des visages
sont estimes par une mthode originale afin de normaliser les images extraites. Les
caractristiques sont ensuite extraites par une technique de flux optique (optical flow) avant
d'tre classifies par un dictionnaire de rgles, ou par des modles de Markov cachs (Hidden
Markov Models, HMMs) dans une des motions basiques. L'algorithme est constitu de la
manire suivante : (fig. 7)
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 15/49
Figure 7 : Approche utilise.
En trait continu : ma contribution
Initialisations
Acquisition de l'image
Dtection du visage
Trouv ?
Dtection des yeux/nez/bouche
Dtection temporelle et classification
Fin d'AU dtecte ?
Extraction des caractristiques et Identification AUs
Classification des AUs
Expression faciale
O
O
N
N
Calcul et correction de la pose de la tte
Cette approche prsente certains avantages. Du point de vue de la dtection spatiale, le
fait de dcomposer le visage en sous-parties permet une meilleure rsistance aux occlusions
ainsi qu'aux diffrences d'clairage. Cependant, elle limite la dtection des AUs aux zones
concernes. La dtection temporelle propose permet de rduire la complexit et la mmoire
requise pour les calculs par rapport une approche classique, mais peut chouer reconnatre
des motions au timing complexe ou lent. Les normalisations par la pose et l'clairage
permettent une prcision accrue dans les rsultats. Enfin, du ct de l'extraction des
caractristiques, l'approche dynamique permet de retrouver certaines expressions
difficilement identifiables sur une image seule, telle que la colre ou la tristesse, tout en
augmentant considrablement le temps de calcul, du fait de l'analyse de plusieurs images
chaque AU dtecte.
Dans ce qui suit, on dtaille pour chaque tape les modlisations effectues. Les
diffrentes mthodes proposes sont implmentes, testes et values dans la partie IV :
Implmentation et Tests.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 16/49
2. Dtection des zones d'intrt
Les zones choisies sont les plus reprsentatives des expressions faciales : les sourcils,
principaux indicateurs d'nervement, colre, surprise, et joie authentique, et la bouche,
indicatrice des expressions de dgot, joie authentique ou de politesse, tristesse et mpris [71].
Le front, le philtrum, et les joues ont galement t considrs, car l'apparition de lignes
sur ces zones est galement signe d'une expression faciale. Cependant, les mthodes de
dtection de ces zones et d'extraction des caractristiques taient trop diffrentes de celles de
la bouche. En effet, ces zones sont relativement uniformes, et la dtection de lignes, quoique
possible l'aide de la transforme de Hough, serait trop sensible aux changements
d'illumination, ou aux occultations (barbes, moustaches, sourcils). Enfin, l'apparition et
l'interprtation de ces lignes n'est pas universelle (diffrences ethniques, ou simplement rides)
et auraient t difficiles intgrer dans la classification. Ces zones n'ont donc pas t retenues.
Le visage, les yeux et la bouche sont dtects par la mthode
de Viola-Jones. Cette mthode permet la dtection d'objets pour
lesquels un apprentissage a t effectu. Elle a t conue
spcifiquement dans le but de la dtection de visage, mais peut
galement tre utilise pour d'autres types d'objets. En tant que
procd d'apprentissage supervis, la mthode de Viola-Jones
ncessite de quelques centaines plusieurs milliers d'exemples de
l'objet dtecter, pour entraner un classifieur. Le classifieur est
ensuite utilis dans une recherche exhaustive de l'objet pour
l'ensemble des positions et tailles possibles dans l'image traiter.
Cette mthode a pour avantage d'tre efficace, rapide, et de
profiter d'une implmentation sous la librairie graphique OpenCV
[73]. Les classifieurs des zones considres sont galement dj
raliss et disponibles [77].
La mthode de Viola-Jones utilise des
reprsentations synthtiques des valeurs des pixels : les
caractristiques pseudo-Haar. Ces caractristiques sont
calcules par la diffrence de sommes de pixels de deux
ou plusieurs zones rectangulaires adjacentes (fig. 9),
pour toutes les positions et toutes les chelles dans
une fentre de dtection. Ce nombre de caractristiques
peut alors tre trs lev. Les meilleures caractristiques sont alors slectionnes par une
mthode de boosting, ce qui permet d'obtenir un classifieur plus fort par une pondration
de classifieurs faibles . La mthode de Viola-Jones utilise ici l'algorithme Adaboost.
La recherche exhaustive d'un objet au sein d'une image pouvant s'avrer coteuse en
temps de calcul, la mthode organise la dtection en une cascade de classifieurs, appliqus
squentiellement. Chaque classifieur dtermine la prsence ou l'absence de l'objet dans
l'image. Les classifieurs plus simples et plus rapides sont placs en premier, ce qui permet
d'liminer trs rapidement un grand nombre de rsultats ngatifs (fig. 10).
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 17/49
Fig. 9 : Exemples de voisinages utiliss
Fig. 8: Zones d'intrt

De manire gnrale, la mthode de Viola-Jones offre de bons rsultats dans la
dtection de visages ou d'autres objets, avec peu de faux positifs pour un temps calcul assez
faible, ce qui permet ici le fonctionnement en temps rel.
3. Estimation de la pose
L'estimation de la pose de la tte partir d'une vido est en soi un sujet de recherche
encore ouvert. Ce calcul permet de normaliser certaines mesures, et permet de recalculer
certaines images en contrebalanant les rotations. Certaines mthodes plus complexes
donnent de meilleurs rsultats, mais leur tude aurait demand trop de temps pour les
rsultats escompts.
La solution propose a consist en une modlisation simplifie du visage en une sphre.
Les angles utiliss sont dfinis ci-dessous (fig.11).
Les trois angles sont considrs 0 quand la tte est de face, sans orientation visible
par rapport la camra. La position relative des yeux, de la bouche, et des tempes permettent
de retrouver les trois angles de manire approximative, mais la prcision est suffisante pour
tre utile.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 18/49
Fig.10 Cascade de classifieurs
fig.11 : Dfinition des angles de rotation
(image d'aprs [78])
Le tangage est dfini par l'angle des yeux avec l'horizontale.

Le roulis est repr par la variation de distance entre la bouche et les yeux.
Le lacet est retrouv par les longueurs des tempes gauche et droite des yeux.
Ces calculs d'angles ne sont pas affects par les expressions faciales, car les distances
utilises sont constantes sur le visage et ne varient que par rapport la position de la tte. On
peut galement valuer le lacet par la position relative du nez et des yeux, mais le nez est plus
difficile dtecter que les bords de la tte, une fois les yeux reprs. Les coefficients ,,,
sont dtermins partir de l'chelle du visage et des constantes anatomiques, telles la distance
entre les yeux, ou la distance entre le nez et les yeux, qui ne varient qu'en fonction de
l'individu. Ces mesures sont toutefois trs sensibles aux occultations.
Dans ces calculs, seule l'valuation du tangage reste correcte pour de grandes variations
de poses. Les sous-images extraites peuvent subir une contre-rotation sur le tangage pour
permettre une plus grande prcision dans les mesures. D'autres mesures de distance ou sous-
images extraites peuvent galement tre rinterprtes en prenant en compte le roulis et le
lacet du visage.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 19/49
Lacet=signe(TempeGaucheTempeDroite)(min(
TempeGauche
TempeDroite
,
TempeDroite
TempeGauche
)+6)
Roulis=oDistanceYeuxBouche +
Tangage=arctan( AbcisseYeux/ DistanceYeux)
Distance Yeux-Bouche
Tempe gauche
Tangage
Tempe droite
4. Dtection temporelle
a) Dtection d'images cls
La dtection temporelle est une tape prliminaire permettant d'identifier les priodes
o une expression faciale est prsente, sans chercher l'identifier, dans le but de gagner du
temps de calcul en n'excutant pas tout les calculs chaque image de la vido. Ici, elle est
base sur la recherche d'images cls (keyframes) au sein de la vido, correspondant au pic de
mouvement d'une expression faciale. Cette recherche est effectue pour les sous-rgions du
visage dtectes, afin de reprer de manire spare les Actions Units. On fait l'hypothse que
les changements d'expressions faciales passent par un pic d'intensit, correspondant une
diffrence maximale entre deux images conscutives sur la zone considre. Plusieurs
difficults se posent alors : certains mouvements trop lents ne seront pas dtects, et les
erreurs de dtections entrainent des variations dans les mesures. Par exemple une sous-image
peut trembler car le dtecteur choue trouver correctement la position d'une caractristique
faciale, ce qui entraine des variations entre deux images conscutives.
La figure 12 montre le calcul de diffrence entre deux sous-images conscutives. Cette
diffrence est calcule par :
A( A , B)=
.

(tt pixels)
(I ( A)I (B) )
,
o I(A) et I(B) reprsentent les intensits de pixels des images conscutives A et B.
Selon la qualit du dtecteur, cette diffrence est relativement constante sans
mouvement l'intrieur de la zone, ce qui permet la dtection des keyframes. En calculant la
moyenne des dernires valeurs, avec une formule permettant d'augmenter la pondration des
valeurs les plus rcentes, on peut estimer la qualit du dtecteur. Les images cls sont alors
dfinies par un rapport la moyenne suprieur un certain seuil.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 20/49
A(t)Keyframes ssi
(A( A(t) , A(t+1)))
Moyenne
Seuil
Fig. 12 : Exemple de calcul de diffrence entre images conscutives d'une zone du visage.
b) Dtection des limites des AUs
Les images-cl ainsi dfinies, il reste alors dterminer le dbut et la fin des
changements d'expressions faciales, correspondant une AU. La solution propose est un
seuillage par hystrsis. On dfinit ainsi des Frame Move (FM), correspondant un mouvement
dtect, mais trop faible pour tre considr comme une KeyFrame (KF). Enfin, on classe en
Frame Stop (FS) et Failed Detection (FD) les images dont la diffrence calcule est soit trop
faible pour correspondre un mouvement, soit trop leve, indiquant que le cadre de la
dtection a boug d'une manire trop forte.
Une AU est alors trouve si une Frame Move est trouve, et qu'au moins une KeyFrame
est trouve par la suite. L'Action Unit se termine lorsque le rapport la moyenne repasse en
dessous du seuil des Frame Move ( fig. 13).
Fig. 13 : Exemple de dtection temporelle d'AU. Les seuils sont ici arbitraires. Dans le second
cas, l'action unit n'est pas dtermine, car aucune KeyFrame n'a t trouve aprs le dpassement
du seuil des Frame Move.

16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 21/49
% Moyenne
0%
200%
400%
FS
KF
FM
Action Unit
t
5. Extractions des caractristiques
Les caractristiques extraites doivent permettre de reconnatre les AUs prsentes. La
dtection temporelle permet de renvoyer une srie de sous-images correspondant un
mouvement particulier. Les AUs la fois utiles et dtectables sont toutefois limites.
Par exemple, les AUs suivantes composent les expressions les plus visibles :
AU 1 : Inner Brow Raiser
Lev sourcils intrieurs
AU 2 : Outer Brow Raiser
Lev sourcils extrieurs
AU 4 : Brow Lowerer
Baisse des sourcils
AU 12 : Lip Corner Puller
tirement des coins des lvres
AU 15 : Lip Corner Depressor
Baisse des coins des lvres
Ainsi, les mouvements possibles pour les sourcils peuvent tre reconnus par la direction
(haut ou bas) et l'origine (intrieur ou extrieur) du mouvement. Les mouvements de la
bouche peuvent tre reconnus par l'augmentation de la distance des coins de la bouche, ou par
un mouvement vers le bas. Puisque la dtection est localise sur ces parties du visage,
diffrentes mthodes ont t envisages selon la rgion.
Pour les sourcils, une mthode d'estimation de mouvement possible est le flux optique
(optical flow), vue dans l'tat de l'art. Cette mthode retrouve le mouvement apparent des
objets, des bordures ou des surfaces au sein d'une image, d soit au mouvement du capteur,
soit au mouvement de l'objet. partir de deux images, on retrouve les mmes points pour
estimer une direction et une norme. Une des mthodes les plus utilises pour calculer un flux
optique est l'algorithme de Lucas-Kanade [62].
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 22/49
Cet algorithme assume un flux constant dans le voisinage des pixels considrs, et
permet de rsoudre les quations relatives au flux optique par la mthode des moindres carrs.
Cette hypothse de flux constant implique que les diffrences entre les images successives
sont suffisamment faibles, en gnral entre 0 et 1 pixel, pour que les quations du flux optique
puissent tre poses. Cependant, des mouvements plus importants peuvent galement tre
analyss, par exemple en interpolant partir des vecteurs de flux des images prcdentes.
L'utilisation de la mthode des moindres carrs implique que les erreurs au sein de l'image
aient une distribution gaussienne moyenne nulle, ce qui est vrifi dans le cas considr.
Le calcul du flux optique demande la slection de points particuliers. Ces points sont
idalement des coins ou des textures de l'image qui peuvent facilement tre suivis. Des
algorithmes ont dj t dvelopps pour rsoudre ce problme. On peut par exemple citer
l'algorithme de Canny [63], qui calcule le gradient d'une image et retrouve les contours par un
seuillage par hystrsis. Les coins peuvent alors tre dtects par une slection des contours
les mieux dtects. Pour une application de suivi, on tente gnralement de conserver les
mme points le plus longtemps possible, mais les accumulations d'erreurs au fil du temps
entranent la perte progressive des points suivis. Dans notre cas, la conservation des points
n'est pas utile car les mouvements sont simples et ne vont que dans une seule direction au
cours d'une AU. Ainsi, on peut rechercher de nouveaux points sur chaque paire d'images, ce qui
ne prends pas beaucoup de temps de calcul et vite des erreurs de mesure. La figure 14 montre
le calcul du flux optique d'une paire d'images d'une vido. Les points sont slectionns
automatiquement sur la premire image et correspondent aux zones de fort gradient.
fig. 14: Exemples de calcul de flux optique sur une vido.
En calculant la direction moyenne des vecteurs de flux optiques, et en calculant la
norme moyenne des vecteurs projets sur cette direction, on identifie le mouvement global sur
la zone slectionne. Sur une vido de visage, cela permet de reconnatre l'AU repre
prcdemment par la dtection temporelle. Par exemple, un mouvement global vers le haut
des pixels d'une sous-image d'un sourcil entre le dbut et la fin d'une AU sera interprt par
une AU1 ou 2. En divisant l'image du sourcil en deux et en refaisant le calcul sur chaque partie,
on peut retrouver alors s'il s'agit d'un mouvement de lev de sourcils externe (AU2) ou interne
(AU1). Les actions ainsi dtectes permettent d'tablir un timing des AUs, ce qui servira pour
une classification en expression.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 23/49
6. Classification en expression
Deux approches ont t utilises pour la classification des AUs en expressions, savoir
une approche par dictionnaire de rgles et une approche par les chanes de Markov (HMMs).
Les deux approches ne considrent que les 6 motions basiques (colre, joie, tristesse, dgot,
peur, et surprise) mais permettent d'ajouter facilement d'autres motions la liste, comme
l' nervement, le stress ou la joie simule, qui est diffrente de l'authentique.
a) Approche de type dictionnaire de rgles
Dans un premier temps, une classification par un dictionnaire de rgles simples,
labores partir du systme FACSAID [09] et de la base de donnes FEEDTUM [71], a t
ralise. Ces rgles se basent en partie sur la logique floue et permettent une conversion
rapide des donnes en rsultats. La bouche tant la partie la plus expressive [02], sa
pondration dans les rgles est de manire gnrale plus importante que les sourcils.
Les rgles suivantes ont t labores :
Colre : 0.7 x AU4 (Brow Lowerer)
+ 0.3 x AU15 (Lip Corner Depressor)

Joie : 0.8 x AU12 (Lip Corner Puller)
+ 0.1 x AU1 (Inner Brow Raiser)
+ 0.1 x AU2 (Outer Brow Raiser)
Tristesse : 0.6 x AU15 (Lip Corner Depressor)
+ 0.4 x AU4 (Brow Lowerer)
Dgot : 0.4 x AU12 (Lip Corner Puller)
+ 0.4 x AU15 (Lip Corner Depressor)
+ 0.2 x AU4 (Brow Lowerer)
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 24/49
Surprise : 0.5 x AU1 (Inner Brow Raiser)
+ 0.5 x AU2 (Outer Brow Raiser)
Peur : 0.8 x AU1 (Inner Brow Raiser)
+ 0.2 x AU15 (Lip Corner Depressor)
( Photos de la base de donnes FEEDTUM [71] )
L'approche par dictionnaire de rgles a pour avantage d'tre rapide, conome en
mmoire et temps de calcul, et simple tester et adapter. Cependant, elle est peu prcise :
par exemple, les coefficients des motions de dgot, de tristesse et de colre sont
relativement similaires, et donc ne permettent pas de discriminer prcisment ces motions.
L'ajout de nouvelles motions plus subtiles ce dictionnaire peut galement se rvler difficile,
car il faudrait adapter l'ensemble des coefficients pour permettre de distinguer correctement la
nouvelle motion de celles dj prsentes dans le dictionnaire. Enfin, le dictionnaire de rgles
suppose la simultanit des AUs pour reconnatre une expression. Or certaines expressions
faciales ont un timing plus complexe, et relativement diffrent entre personnes. Par exemple,
l'motion de la colre (0.7 x Brow Lowerer + 0.3 x Lip Corner Depressor) peut figurer aussi bien
la baisse des sourcils puis la baisse des coins de la bouche, en passant par une expression
neutre, que leurs apparitions simultanes sur le visage.
Afin d'exploiter au mieux l'aspect dynamique des expressions faciales, une seconde
approche de classification plus complexe a t labore, utilisant une classification spatio-
temporelle des chanes de Markov. Cette dernire approche n'a toutefois pas t implmente
et teste par manque de temps.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 25/49
b) Classification par les chaines de Markov
Un modle de Markov cach (HMM, Hidden Markov Model) [64] est un modle
statistique dans lequel un processus est observ avec des tats cachs. Un HMM peut tre
considr comme un rseau baysien dynamique simplifi. Ces modles sont frquemment
utiliss dans la reconnaissance vocale, d'criture ou de geste, mais galement dans les
algorithmes de vision par ordinateur. L'avantage principal des HMMs rside dans leur
possibilit de modlisation d'vnements ou de signaux non-stationnaires. Des mthodes de
programmation dynamique permettent gnralement d'aligner deux signaux pour prendre en
compte la non-stationnarit, mais ces approches requirent beaucoup de temps de calcul pour
trouver la meilleure concordance entre les squences. l'oppos, les HMMs utilisent les
probabilits de transition entre des tats cachs et apprennent les probabilits conditionnelles,
l'tat du modle tant connu.
Dans le cas de la reconnaissance d'motion, le signal est la mesure des mouvements du
visage, c'est--dire les AUs. Ces signaux sont non-stationnaires par nature, car une expression
peut tre reprsente avec diffrents timings, des intensits variables, mme sur une mme
personne. Un HMM est constitu de l'ensemble de paramtres (A, B, ), o A est la matrice des
probabilits de transition entre tats, B la distribution des probabilits d'observation, et la
distribution initiale des tats. Dans ce cas, nous avons :
Avec N le nombre d'tats du modle. Les observations (O
t
) peuvent tre discrtes ou
continues. Il existe alors deux problmes rsoudre en relation avec les HMMs :
comment calculer la squence d'tats correspondant le mieux une srie d'observations et un
modle (reconnaissance), et comment apprendre les paramtres du modle tant donn une
srie d'observations (apprentissage). Dans notre cas, puisqu'une expression faciale dans une
vido est compose de plusieurs actions faciales, on modlise chaque expression en utilisant
un HMM diffrent. On ralise alors plusieurs HMMs, pour la joie, la colre, la peur, le dgot, la
tristesse et la surprise, et d'autres expressions plus complexes ( fig 15).
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 26/49
B=b
j
( O
t
)=P(O
t
tqq
t
=S
j
) , 1jN
a
i , j
=P(q
t+1
=S
j
tqq
t
=S
i
) , 1i , jN
n
j
=P(q
1
=S
j
)
Fig. 15 : Classifieur pour les HMMs spcifiques aux motions
Mesure
des AUs
Vido
HMM (M1)
pour Joie
O
t HMM (M2)
pour Colre
HMM (M3)
pour Surprise
...
P(O| M1)
P(O| M2)
P(O| M3)
Max
motion
probable
Deux structures de HMMs peuvent convenir dans le cas de la reconnaissance
d'motions : la structure gauche--droite (left to right) dans laquelle les squences d'tats
commencent toujours par un mme tat initial et finissent toujours dans un mme tat final
(fig. 16) et la structure ergodique dans laquelle tout les tats peuvent tre au dpart ou
l'arrive (fig 17).
L'avantage de la structure gauche--droite est qu'il est plus intuitif de modliser une
squence d'vnements avec des tats initiaux et finaux fixes. Par exemple, une expression
faciale pourrait tre considre comme compose de plusieurs actions diverses dbutant et
finissant toujours par un tat neutre. Ainsi, le nombre de paramtres requis est rduit et donc
le modle est plus facile entrainer. Cependant, cela rduit galement le nombre de degrs de
libert que le modle peut utiliser pour s'accorder avec la squence d'observation, ce qui est
possible avec un modle ergodique. ce jour, il n'y a pas encore eu d'tude pour dterminer si
une expression faciale peut tre correctement modlise par une structure gauche--droite
[74].
Les modles HMMs sont dtermins en utilisant l'algorithme d'estimation de
paramtres de Baum-Welch [75] exploitant lui-mme l'algorithme forward-backward [76].
L'apprentissage doit tre ralis en utilisant des squences annotes de chacune des
expressions comme vrit de terrain. L'apprentissage des paramtres effectu, on ralise la
classification d'une squence d'observation en calculant sa probabilit au regard de chacun des
modles des motions considres. Enfin, cette squence est classe comme motion
correspondant au modle qui a engendr la plus forte probabilit, comme montr dans la
figure 15.
Par manque de temps, la modlisation de la classification par HMMs n'a pas bnfici
d'une validation exprimentale, et seule la classification par dictionnaire de rgles a t
effectivement implmente et teste.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 27/49
Fig. 16 : Structure gauche--droite
Fig. 17 : Structure ergodique
1
2
3
4
IV. Implmentation et tests
1. Dtail de l'implmentation
L'implmentation des algorithmes dcrits dans la partie Approche dveloppe a t
ralise en C++, l'aide de la librairie graphique OpenCV, version 2.1. En effet, une grande partie
des fonctions requises est dj implmente, ce qui a permis un avancement rapide dans le
codage. Le programme se base en outre sur l'architecture cre par Taner Danman et Marius
Bilaco, les encadrants de ce stage, dans le cadre de leur recherche sur la reconnaissance
statique d'motions. Cet algorithme exploitait de manire statique les longueurs entre les
sourcils et les yeux, ainsi qu'entre les coins de la bouche, pour reconnatre la joie et la surprise.
Des travaux mens au dbut du stage ont permis l'ajout de la reconnaissance statique
de la colre, ainsi que le calcul des angles du lacet et du roulis de la tte pour une correction
des mesures. Les fonctions dj implmentes et rutilises ici incluent la gestion de la
webcam, la dtection du visage ainsi que de certains points caractristiques (yeux, coins de la
bouche), et la correction de l'image par le calcul de l'angle du tangage de la tte.
Les fonctions ajoutes ce programme comptent notamment :
- Dtection des tempes et du cadre de la bouche,
- valuation des angles du lacet et du roulis pour la pose de la tte,
- Dtection temporelle des Action Units,
- Extraction des caractristiques et identification des AUs,
- Classification des AUs en expressions faciales.
Cet algorithme de reconnaissance statique servira de rfrence pour les tests et
comparaisons du programme dans la partie IV.4. La figure 27 rappelle les diffrentes tapes de
l'algorithme.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 28/49
Figure 27 : Schma des diffrentes tapes de l'algorithme
Vido
Dtection
spatiale
Dtection
temporelle
Extraction des
caractristiques
Classification
Expression
Algorithme
de Viola-Jones
Estimation, correction
de la pose de la tte
Dtection de
keyframes
Segmentation
des AUs
Algorithme
d'optical flow
Dictionnaire
de rgles
2. Fonctions de dtection
a) Dtection spatiale des caractristiques
Le code des fonctions de dtection utilises est
disponible en annexe B1 et B2. Les algorithmes de Viola-Jones
sont utiliss pour le visage, les yeux, et la bouche. Les rsultats
sont satisfaisants (fig. 18) : les yeux et la bouche sont
systmatiquement dtects une distance moyenne de l'cran,
pour des poses de la tte faiblement inclines. Les sourcils
peuvent tre dtects de la mme manire, cependant il s'est
rvl plus prcis de considrer uniquement la zone suprieure
des yeux.
Les paramtres des fonctions OpenCV utilises ont t dtermins manuellement, mais
une valuation plus systmatique sur une base de test pourrait donner de meilleurs rsultats.
Les bords de la tte on t retrouvs par un seuillage simple, en faisant l'hypothse que
l'arrire plan et la tte sont facilement diffrenciables. Une tentative de dtection de la zone
du front, zone relativement uniforme, a donn des rsultats peu exploitables. Enfin, les angles
de la tte ont pu tre retrouvs partir de ces caractristiques et l'image a pu tre recalcule
en fonction de l'angle de tangage. Le code de cette valuation est disponible en annexe B3.
Un problme rencontr est que la dtection n'est pas toujours stable. En particulier,
l'algorithme de dtection des yeux ne distingue pas toujours les yeux des paupires, donnant
un cadre de rsultats variant rgulirement verticalement de quelques pixels. Le calcul de la
dtection temporelle exigeant une dtection suffisamment stable, les variations de position
des rsultats ont t moyenns, permettant un rsultat plus prcis mais moins ractif aux
changements de pose ou de position de la tte.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 29/49
Fig. 18 : Dtections spatiales
b) Estimation de la pose
L'algorithme pour le calcul de la pose de la tte a t cod selon les formules de la partie
III.3. Les paramtrages et tests n'ont pas t raliss sur une base de test de visages
normalise, et donc les mesures des angles, bien que cohrentes, n'taient que relativement
prcises. L'angle du tangage est le mieux calcul, car les positions des yeux, facilement
retrouves, donnent directement sa mesure. l'oppos, le calcul du lacet prsentait le plus
d'incohrences, car la dtection des tempes, base sur un seuillage par histogramme, chouait
frquemment en cas d'occlusion sur le visage ou d'clairage asymtrique. La figure 19 montre
le calcul de la pose dans une situation favorable ( front dgag, clairage peu variable).
c) Dtection temporelle
Pour la dtection temporelle, dont le code est donn en annexe B4, la notion de
diffrence entre images successives telle qu'elle a t modlise a t implmente par
l'usage de la fonction cvNorm, qui ralise un calcul de la diffrence entre images. Les sous-
images successives ont t remise la mme taille pour la comparaison ( fonction cvResize ).
Un outil basique de visualisation a permis d'valuer la dtection temporelle et de dterminer
les seuils ncessaires la dtection des AUs. La figure 20 montre le calcul des diffrences
d'images de la bouche et leur classification.
Diff
Moyenne
Mesure
t
KF
FM
FS
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 30/49
Fig. 20 : Visualisation de la dtection temporelle.
Fig. 19 : Estimation de la pose de la tte
La ligne du bas indique la classification du programme. La moyenne calcule
correspondait celle des 50 dernires valeurs, sans pondration sur les plus rcentes. Les seuils
utiliss taient de 1.20 x la moyenne pour la dtection des frames Move et de 2 x la moyenne
pour les keyframes. On constate qu' deux reprises, la diffrence est largement suprieure la
moyenne, ce qui correspondait dans le test une ouverture puis fermeture de la bouche. La
dtection temporelle donne ainsi des rsultats satisfaisants.
La figure 21 montre la dtection temporelle pour un sourcil. Les gestes effectus ici
taient un lev puis un baiss de sourcils.
Les rsultats sont ici moins bons, ce qui est directement li la qualit du dtecteur. Ces
rsultats sont toutefois toujours exploitables dans l'application. La figure 22 montre enfin le
rsultat pour une partie du front.
Ici, les rsultats sont peu exploitables : la zone du front n'est pas correctement suivie
due son uniformit et la dtection choue donner un rsultat stable. La dtection
temporelle est donc efficace sur les zones facilement dtectables et pour des rsultats de
dtection stables.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 31/49
Fig. 22 : Dtection temporelle pour le front.
Fig. 21 : Dtection temporelle des sourcils
Lev
Baiss
3. Fonctions d'extraction et de classification
a) Extraction des caractristiques
L'extraction des caractristiques pour l'identification des AUs a t ralise l'aide de
fonctions OpenCV. En particulier, la slection des points de rfrence a t obtenue par la
fonction cvGoodFeaturesToTrack, qui exploite l'algorithme de Canny ainsi qu'un seuillage par
hystrsis pour reprer des points d'intrt sur les sous-images. Le flux optique sur ces points a
t calcul par la fonction cvCalcOpticalFlowPyrLK, qui utilise l'algorithme de Lucas-Kanade. Le
rsultat est montr sur la figure 23, montrant le calcul du flux optique pour trois points de deux
sous-images conscutives de sourcil.
fig. 23 : Exemple de calcul de flux optique sur un sourcil pour 3 points.
Ces vecteurs de flux optique permettent d'identifier l'AU repre prcdemment par la
dtection temporelle. Concrtement, on calcule la direction moyenne des vecteurs, ainsi que la
norme des vecteurs projets sur cette direction. Le vecteur moyen rsultant est enfin
normalis en taille : Faible, Modr, Fort, et en direction : Haut, Bas, Gauche, Droite. Ici, le
mouvement moyen sur la figure 16 est un lev du sourcil par l'extrieur, ce qui correspond
l'AU 2 : Outer Brow Raiser.
Plusieurs AUs ont pu tre identifies par ce moyen. Les sourcils et la bouche ont t
diviss en deux parties, gauche et droite, pour permettre de distinguer des AUs comme l'AU2 :
Outer Brow Raiser de l'AU1 : Inner Brow Raiser. Au final, les 5 AUs reconnues sont : AU1, Lev
sourcils intrieurs, AU2, Lev sourcils extrieurs, AU4, Baisse des sourcils, AU12, tirement des
coins des lvres, et AU 15, Baisse des coins des lvres. Les actions ainsi dtectes permettent
d'tablir un timing des AUs, ce qui permet une classification en expression.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 32/49
t
t+1
AU2
b) Classification en motions
Une classification par un dictionnaire de rgles a t implmente suivant les
paramtres dfinis dans la partie III.6. Les AUs qui composent une expression faciale devaient
tre comprises dans une fentre temporelle de 3 10 secondes. Ainsi, l'expression de la joie
est dtecte si une AU12 (Lip Corner Puller) sur la bouche est dtecte, et qu'une AU1 (Inner
Brow Raiser) ou une AU2 (Outer Brow Raiser) est prsente, mme de manire faible, sur au
moins un des sourcils dans un dlai de plus ou moins 5 secondes.
Dans le cas de la joie, l'AU12 (Lip Corner Puller) ayant une trs forte pondration sur
cette motion - la joie est visible surtout par le sourire -, mme la dtection d'un mouvement
faible ou lent sur les sourcils permet de conclure l'motion de la joie. Dans le cas d'motions
plus contrastes, comme la tristesse : AU15 (Lip Corner Depressor) et AU4 (Brow Lowerer) ou la
surprise : AU1 (Inner Brow Raiser) et AU2 (Outer Brow Raiser) dans lesquelles les AUs ont une
pondration gale, les AUs dtectes doivent avoir une intensit similaire.
Les tests de l'approche par dictionnaire de rgles ont confirm les rsultats prvus dans
la partie III.6 a). Bien que rapide, conome en mmoire et temps de calcul, elle s'est avre
peu prcise : les motions dont les coefficients sont similaires ne sont pas correctement
discrimines. D'un point de vue temporel, la classification choue encore pour des expressions
trop lentes, trop rapides, ou aux AUs trop asynchrones. Cependant, l'algorithme permet de
reconnatre de manire fiable quelques motions sur une mme personne, moyennant un
paramtrage manuel pralable du programme.
L'implmentation d'une classification par HMMs comme dcrit dans la partie III.6 b)
pourrait rsoudre ces problmes par une meilleure exploitation de la composante temporelle,
cependant, par manque de temps, cette option n'a pas t implmente et teste.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 33/49
5. Tests et comparaisons de l'algorithme
a) Base de donnes FEEDTUM
La base de donnes FEEDTUM [71] a t utilise afin de tester l'algorithme de
reconnaissance d'motions. Cette base de donnes contient les vidos d'une vingtaine de
sujets exprimant les 6 motions basiques dfinies par Ekman et Friesen, ainsi qu'une
expression neutre. Un des principes de base respect lors de sa cration est que les motions
spontanes diffrent des motions joues. C'est pourquoi ses crateurs ont tent de laisser les
sujets exprimer leurs motions aussi naturellement que possible. En consquence, les sujets
taient soumis des vidos ou images susceptibles d'engendrer des motions sans instructions
pralables, au lieu de leur demander de jouer un rle, comme le montre la figure 24. De la
mme manire, aucune instruction concernant les mouvements et orientations de la tte
n'tait pose.
L'environnement consistait simplement en une camra place sur un cran 19'. Un
dclenchement synchronis de la capture et de la vido a permis l'enregistrement prcis du
timing des motions. Les rsultats ont galement t segments et organiss en squences,
comme montr dans la figure 25.
Fig. 25 : Squence Joie du sujet 18 de la base de donnes
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 34/49
Fig. 24 : Sujet film et vido provoquant la "surprise"
b) Rsultats de l'algorithme et comparaisons
L'algorithme a t test sur une slection de 60 des 400 vidos de FEEDTUM. La
tolrance temporelle pour juger de la dtection effective des motions tait de 2 secondes. Les
tests ont galement t raliss sur l'algorithme de reconnaissance statique cr par Taner
Danman et Marius Bilaco, les encadrants de ce stage, dans le cadre de leur recherche sur la
reconnaissance statique d'motions, et amlior au cours de ce stage comme dcrit dans la
partie IV.1. Les vidos de FEEDTUM n'apportant que le nom de l'motion comme information
annexe, l'valuation de la synchronisation de la dtection par annotation des vidos a du tre
ralise au pralable de manire manuelle.
Approche
dynamique
Approche
statique
motions
Dtection
Temporelle
(1)
Identification
des AUs
(2)
Identification des
expressions
(3)
Identification des
expressions
(3)
Joie 75 % 67 % 55% 77 %
Colre 52 % 50% 47 % 73 %
Tristesse 24 % 14 % 9 % NC
(4)
Dgot 26 % 13 % 10 % NC
(4)
Surprise 78 % 70 % 63 % 85 %
Peur 46 % 25 % 18 % NC
(4)
(1) Pourcentage du total des vidos pour lesquelles les AUs ont t correctement dtectes.
(2) Pourcentage du total des vidos dont les AUs ont t correctement reconnues.
(3) Pourcentage du total des vidos dont l'expression a t correctement identifie.
(4) Cet algorithme ne prenait pas en compte ces expressions.
Afin d'valuer l'intrt de la reconnaissance dynamique par rapport au statique, on
dtaille la proportion de tests qui ont russit exclusivement dans l'approche dynamique ou
dans l'approche statique, comme montr dans la figure 26.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 35/49
Fig 26 : Comparaison des rsultats des approches statique et dynamique.
27 % 5 % 58 %
Surprise
10 %
Stat
Dyn
28 % 6 % 49 %
Joie
17 %
Stat
Dyn
41 % 15 % 32 %
Colre
12 %
Stat
Dyn
c) Discussion
On constate notamment des rsultats mdiocres dans le cas des expressions de
tristesse, dgot, et peur, et relativement faibles par rapport d'autres techniques de l'tat de
l'art dans les autres cas. L'algorithme de reconnaissance statique donne de meilleurs rsultats
sur la plus grande partie des vidos de la base de test. Cependant, on remarque de bons
rsultats sur l'identification des AUs ainsi que pour la classification en expressions. De plus, on
remarque que certaines expressions ne sont reconnues que par l'algorithme de reconnaissance
dynamique. Les causes les plus communes d'chec de l'algorithme, ainsi qu'une comparaison
des approches statiques et dynamique, sont dtailles dans la suite.
Dtection temporelle :
> Les visages sont parfois trop peu expressifs et les
changements ne sont pas dtects.
> Les mouvements sont parfois trop lents et l'algorithme ne
dtermine pas correctement les images-cls de la squence.
> Certaines AUs sont parfois dtectes en double et
perturbent la classification.
Bien que ces problmes lis la dtection temporelle puissent tre rsolus par un
meilleur paramtrage et une meilleure classification, on constate de manire gnrale que
l'algorithme de reconnaissance statique russit mieux dans les cas o les expressions ont un
timing lent, tandis que l'approche dynamique russit mieux dans le cas d'un timing rapide ou
atypique.
Dtection spatiale, extraction et identification des AUs :
> Les variations de pose de la tte, notamment de tangage
(AU55, Head Tilt Left et AU56, Head Tilt Right) ou de position de la
tte, sont parfois trop importantes et font chouer la dtection
spatiale des zones d'intrt.
> L'ouverture de la bouche (AU26, Jaw Drop) fait
gnralement chouer la reconnaissance des AUs sur la bouche, en
raison du mauvais placement des points de suivi, notamment dans
le cas de la joie, o de larges sourires sont mal reconnus.
> Les mouvements des sourcils sont parfois mal dtects,
par exemple lors de cas de sujets blonds, ou de femmes aux
sourcils pils.
> La dtection des yeux choue parfois dans le cas de
plissements ou fermetures lors de la squence, ce qui fait chouer
les identifications par la suite.
Ces problmes sont lis la dtection spatiale et la nature spontane des motions.
Un meilleur suivi des zones d'intrt, ainsi qu'une meilleure paramtrisation des fonctions de
dtection permettraient de rsoudre ces problmes. Cependant, on constate que l'algorithme
est relativement rsistant aux occlusions, notamment dans le cas o un il est couvert.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 36/49
"Colre" peu expressive
Ouverture de la bouche,
Yeux ferms, sourcils pils
Inclinaison de la tte et
occlusion de la bouche.
Classification :
> Les expressions sont parfois trop longues, et le dbut et la
fin des AUs ne sont pas correctement relis par la classification.
> Les sujets ont parfois des expressions spontanes non
prvues par la classification, comme la combinaison de surprise et
joie, ou la colre au lieu de la peur ou le dgot, motions par
ailleurs mal reconnues par l'algorithme.
Ces problmes sont principalement dus la nature variable et spontane des motions.
Les motions sont toujours diffrentes en timings et intensits d'une personne l'autre, ce qui
rend la gnralisation de rgles de classification hasardeuse. Des comportements rares,
alatoires et imprvisibles sont toujours problmatiques dans le cadre de la reconnaissance
d'motions.
De manire gnrale, on remarque que la reconnaissance dynamique rencontre des
problmes spcifiques que n'a pas la reconnaissance statique. La dtection temporelle,
l'interprtation du timing des motions, l'extraction et la reconnaissance des mouvements, la
classification en expressions sont des dfis relever pour profiter d'une reconnaissance
dynamique. Cependant, la figure 26 montre que dans certaines motions, l'approche
dynamique russit identifier correctement des cas pour lesquels l'algorithme statique choue
(6% des cas pour la joie, 15% pour la colre, 5% pour la surprise). En particulier, cette
reconnaissance dynamique montre son intrt dans le cas d'expressions au timing asynchrone,
par exemple dans le cas d'un mouvement spar dans le temps des sourcils et de la bouche, ou
dans le cas de mouvements rapides, peu interprtables dans le cadre d'une reconnaissance
statique.
Cette tude montre donc que les reconnaissances statiques et dynamiques peuvent tre
combines pour donner de meilleurs rsultats. En effet, certaines motions plus complexes,
comme la nervosit, font la fois appel des expressions lentes et rgulires, telles que le
pincement des lvres, qu' des expressions rapides et abruptes, comme des froncements de
sourcils. Ce type d'motions bnficierait largement d'une approche combine pour tre
reconnu.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 37/49
Sourire de dpit
dans une "colre"
V. Conclusion et perspectives
a) Conclusion
Le sujet du stage tait de concevoir un algorithme exploitant les informations
dynamiques apportes par une vido pour reconnatre les expressions faciales d'un utilisateur.
Cet objectif est atteint. L'approche dveloppe durant ce stage utilise la composante
dynamique de la vido pour extraire et identifier des actions faciales sur le visage et ainsi
reconnatre quelques motions basiques.
Les expressions sont repres et segmentes dans les vidos par un algorithme de
dtection d'images-cls au sein de la vido. Les principales zones du visages (yeux, bouche,
sourcils) sont ensuite extraites par l'utilisation d'un algorithme de Viola-Jones et normalises
par les angles de la pose de la tte, angles calculs par des calculs gomtriques sur les
distances entre points caractristiques du visage.
L'application d'un algorithme de flux optique permet alors d'extraire et d'identifier les
units d'actions faciales utilises. L'implmentation permet ainsi la reconnaissance de 5 units
d'actions faciales distinctes (AUs), savoir : AU1, Lev sourcils intrieurs, AU2, Lev sourcils
extrieurs, AU4, Baisse des sourcils, AU12, tirement des coins des lvres, et AU 15, Baisse des
coins des lvres. Enfin, le programme ralise une classification des actions par un dictionnaire
de rgles en 6 motions basiques : la joie, la peur, le dgot, la surprise, la colre et la tristesse.
Ces rgles sont base sur le sytme FACS.
L'exprimentation sur une base de donnes de vidos d'expressions montre que bien
que moins efficace que l'approche statique dans la plupart des cas, la reconnaissance
d'motions bnficie de l'utilisation de la composante dynamique pour une meilleure dtection
de certaines expressions au timing asynchrone ou rapide.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 38/49
b) Amliorations possibles et perspectives
Pour amliorer cette reconnaissance d'motions, plusieurs solutions ont t proposes.
court terme, la stabilisation des procdures de dtection spatiale, ainsi qu'une tude plus
pousse du timing des motions, par apprentissage ou manuellement, permettrait galement
d'amliorer la reconnaissance des expressions, en mettant mieux en rapport des AUs non
synchronises, lentes ou rptitives. L'implmentation de la classification par modles de
Markov cachs permettrait galement d'amliorer la reconnaissance d'motions.
long terme, on pourrait par exemple coupler les rsultats d'une approche de
reconnaissance statique avec ceux d'une reconnaissance dynamique, en combinant les deux
types de donnes avec une mthode de boosting, ce qui permettrait de mieux reprer les cas
problmatiques, et de bnficier des deux types d'approches. De la mme manire, il pourrait
tre intressant d'ajouter des AUs la dtection, par exemple le suivi des clignements des
yeux, les mouvements des paules, l'apparition de lignes sur le front ou les joues, qui peuvent
tre rvlateurs d'motions plus complexes. Enfin, on pourrait ajouter la reconnaissance au
sein de la vido une analyse du fond sonore, ou encore l'analyse de paramtres physiologiques
comme la frquence cardiaque, comme vu dans certaines tudes de l'tat de l'art.
Parmi les applications directes du programme, il a t suggr un couplage avec un
systme de suivi du regard comme le Tobii X120 Eye Tracker , dont un exemplaire est
actuellement utilis par l'quipe FOX-MIIRE pour d'autres projets. Ainsi, on pourrait analyser les
expressions faciales de l'utilisateur en fonction de ce qu'il regarde sur son cran. D'autres
voquent la possibilit de la cration d'un programme d'apprentissage distance intgrant la
reconnaissance d'motions, ce qui permettrait d'valuer l'intrt de la dtection pour des
motions complexes telles que la frustration, l'intrt ou l'ennui. Enfin, le programme pourrait
tre test sur un robot jouet dot d'une camra, tel le chien-robot AIBO de Sony, pour tester
les applications de la reconnaissance d'motions dans un cadre ludique.
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 39/49
Bibliographie
[01] C. Darwin, The Expression of the Emotions in Man and Animals, J. Murray (1872).
[02] P. Ekman, W.V. Friesen, Constants across cultures in the face and emotion, Personality Social Psychol (1971).
[03] P. Dulguerov, F. Marchal, D. Wang, C. Gysin, P. Gidley, B. Gantz, J. Rubinstein, S. Seiff, L. Poon, K. Lun, Y. Ng,
Review of objective topographic facial nerve evaluation methods, Am. J. Otol. 20 (5) (1999).
[04] R. Koenen, Mpeg-4 Project Overview, International Organisation for Standardisation, ISO/IEC JTC1/SC29/WG11
(2000).
[05] P. Ekman, W.V. Friesen, Facial Action Coding System : A Technique for the Measurement of Facial Movement,
Consulting Psychologists Press, Palo Alto (1978).
[06] W. Friesen, P. Ekman, Emotional facial action coding system, unpublished manual (1984).
[07] C. Izard, The maximally descriminative facial movement coding system (MAX), Available from Instructional
ressource Center, University of Delaware, Newark, Delaware (1979).
[08] C. Izard, L. Dougherty, E. Hembree, A system for indentifying affect expressions by holistic judgments,
unpublished manuscript (1983).
[09] W. Friesen, P. Ekman, Dictionary, interpretation of FACS scoring, unpublished manuscript (1987).
[10] I. Essa, A. Pentland, Coding, analysis, interpretation andrecognition offacial expressions, IEEE Trans. Pattern
Anal.Mach. Intell. 19 (7) (1997).
[11] H. Rowley, S. Baluja, T. Kanade, Neural network-based face detection, IEEE Trans. Pattern Anal. Mach. Intell. 20
(1) (1998).
[12] W. Fellenz, J. Taylor, N. Tsapatsoulis, S. Kollias, Comparing template-based, feature-based and supervised
classification offacial expressions from static images, Communications and Computers (CSCC99),Nugata, Japan
(1999).
[13] P. Belhumeur, J. Hespanha, D. Kriegman, Eigenfaces vs.Fisherfaces: recognition using class specific linear
projection, IEEE Trans. Pattern Anal. Mach. Intell. 19 (7) (1997).
[14] B. Fasela, Juergen Luettin, Automatic facial expression analysis: a survey, Pattern Recognition 36 (2003).
[15] P. Ekman, About brows: emotional and conversational signals, in : J. Ascho7, M. Con Carnach, K. Foppa, W.
Lepenies, D.Plog (Eds.), Human Ethology, Cambridge University Press,Cambridge (1979).
[16] Fadi Dornaikaa, Bogdan Raducanu, Inferring facial expressions from videos: Tool and application, Signal
Processing: Image Communication 22 (2007).
[17] M. Bartlett, Face image analysis by unsupervised learning and redundancy reduction, Ph.D. Thesis, University
ofCalif ornia,San Diego (1998).
[18] J. Lien, Automatic recognition of facial expression using hidden Markov models and estimation of expression
intensity, Ph.D. Thesis, The Robotics Institute, CMU (1998).
[19] K. Mase, A. Pentland, Recognition of facial expression from optical flow, IEICE Trans. E 74 (10) (1991).
[20] T. Otsuka, J. Ohya, Spotting segments displaying facial expression from image sequences using HMM, IEEE
Proceedings of the Second International Conference on Automatic Face and Gesture Recognition (FG98),
Nara,Japan (1998).
[21] D. Terzopoulos, K. Waters, Analysis of facial images using physical and anatomical models, Proceeding of the
Third International Conference on Computer Vision (1990).
[22] I. Essa, A. Pentland, Coding, analysis, interpretation andrecognition off acial expressions, IEEE Trans. Pattern
Anal.Mach. Intell. 19 (7) (1997).
[23] Y. Yacoob, L.S. Davis, Recognizing human facial expression from long image sequences using optical flow,
IEEE Trans.Pattern Anal. Mach. Intell. 18 (6) (1996).
[24] M. Black, Y. Yacoob, Recognizing facial expressions in image sequences using local parameterized models of
image motion, Internat. J. Comput. Vision 25 (1) (1997).
[25] Y. Tian, T. Kanade, J.Cohn, Recognizing action units for facial expression analysis, IEEE Trans. Pattern Anal.
Mach.Intell. 23 (2) (2001).
[26] M. Wang, Y. Iwai, M. Yachida, Expression recognition from time-sequential facial images by use of expression
change model, IEEE Proceedings of the Second International Conference on Automatic Face and Gesture
Recognition (FG98), Nara, Japan (1998).
[27] T. Otsuka, J. Ohya, Extracting facial motion parameters by tracking feature points, Proceedings of First
International Conference on Advanced Multimedia Content Processing,Osaka, Japan (1998).
[28] B. Bascle, A. Blake, Separability of pose and expression in facial tracking and animation, Proceedings of the
International Conference on Computer Vision, Bombay, India (1998).
[29] M. Suwa, N. Sugie, K. Fujimora, A preliminary note on pattern recognition of human emotional expression,
Proceedings of the Fourth International Joint Conference on Pattern Recognition, Kyoto, Japan (1978).
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 40/49
[30] S. Kaiser, T. Wehrle, Automated coding of facial behavior in humancomputer interactions with FACS, J.
Nonverbal Behavior 16 (2) (1992).
[31] W. Fellenz, J. Taylor, N. Tsapatsoulis, S. Kollias, Comparing template-based, feature-based and supervised
classification of facial expressions from static images, Proceedings of Circuits,Systems, Communications and
Computers (CSCC99) (1999).
[32] G. Donato, S. Bartlett C. Hager, P. Ekman, J. Sejnowski, Classifying facial actions, IEEE Trans. Pattern Anal.
Mach.Intell. 21 (10) (1999).
[33] B. Fasel, J. Luettin, Recognition of asymmetric facial action unit activities and intensities, Proceedings of the
International Conference on Pattern Recognition (ICPR 2000), Barcelona,Spain, 2000 (2000).
[34] B. Schiele, J. Crowley, Probabilistic object recognition using multidimensional receptive field histograms,
Proceedings ofthe International Conference on Pattern Recognition (ICPR1996), Vienna, Austria (1996).
[35] J. Cohn, A. Zlochower, J. Lien, Y. Wu, T. Kanade, Automated face coding: a computer-vision based method of
facial expression analysis, Seventh European Conference on FacialExpression Measurement and Meaning,
Salzburg, Austria (1997).
[36] M. Rosenblum, Y. Yacoob, L. Davis, Human expression recognition from motion using a radial basis function
network architecture, IEEE Trans. Neural Networks 7 (5) (1996).
[37] H. Kobayashi, F. Hara, Dynamic recognition of basic facial expressions by discrete-time recurrent neural
network, Proceedings of the International Joint Conference on Neural Networks (1993).
[38] C. Lisetti, D. Rumelhart, Facial expression recognition using a neural network, Proceedings of the 11th
International Flairs Conference, AAAI Press, New York (1998).
[39] Z. Zhang, M. Lyons, M. Schuster, S. Akamatsu, Comparison between geometry-based and Gabor-wavelets-
based facial expression recognition using multi-layer perceptron, IEEE Proceedings of the Second International
Conference on Automatic Face and Gesture Recognition (FG98), Nara,Japan (1998).
[40] M. Dailey, G. Cottrell, PCA Gabor for expression recognition, Institution UCSD, Number CS-629 (1999).
[41] P. Eisert, B. Girod, Facial expression analysis for model-based coding ofvideo sequences, Picture Coding
Symposium,Berlin, Germany (1997).
[42] K. Karpouzis, G. Votsis, G. Moschovitis, S. Kollias, Emotion recognition using feature extraction and 3-D
models, Proceedings of IMACS International Multiconference on Circuits and Systems Communications and
Computers (CSCC99), Athens, Greece (1999).
[43] M. Lyons, J. Budynek, S. Akamatsu, IEEE Trans. Pattern Anal. Mach.Intell. 21 (12), Automatic
classi0cationofsingle facial images (1999).
[44] M. Pantic, L. Rothkrantz, Expert system for automatic analysis of facial expression, Image Vision Comput. J. 18
(11) (2000).
[45] E. Leon, G. Clarke, V. Callaghan, F. Doctor, Affect-aware behaviour modelling and control inside an intelligent
environment, Pervasive and Mobile Computing (2010).
[46] K. Kurihara, D. Sugiyama, S. Matsumoto, N. Nishiuchi, K. Masuda, Facial emotion and gesture reproduction
method for substitute robot of remote person, Computers & Industrial Engineering 56 (2009).
[47] A.Sarrafzadeh, S. Alexander, F. Dadgostar, C. Fan, A. Bigdeli, How do you know that I dont understand ? A
look at the future of intelligent tutoring systems, Computers in Human Behavior 24(2008).
[48] J. Martinez-Miranda, A. Aldea, Emotions in human and artificial intelligence, Computers in Human Behavior 21
(2005).
[49] J. Bassili, Emotion recognition: The role of facial movement and the relative importance of upper and lower
areas of the face, J. Personality Social Psychol.37 (1979).
[50] R. W. Picard, J. Klein, Computer that recognise and respond to user emotion theoretical and practical ,
Interacting with Computers 14 (2002).
[51] Y. Zhang, Q. Ji, Active and Dynamic Information Fusion for Facial Expression Understanding from Image
Sequences, IEEE Transactions on pattern analysis and machine intelligence, Vol. 27 (2005).
[52] N. Sebe, M.S. Lew, Y. Sun, I. Cohen, T. Gevers, T.S. Huang, Authentic facial expression analysis, Image and
Vision Computing 25 (2007).
[53] G. Zhao, M. Pietikinen, Boosted multi-resolution spatiotemporal descriptors for facial expression recognition,
Pattern Recognition Letters 30 (2009).
[54] H. Gu, Y. Zhang, Q. Ji, Task oriented facial behavior recognition with selective sensing, Computer Vision and
Image Understanding 100 (2005).
[55] I. Cohen, A. Garg, T.S. Huang, Emotion Recognition from Facial Expressions using Multilevel HMM, (2000).
[56] S. V. Ioannou, A. T. Raouzaiou, V. A. Tzouvaras,T. P. Mailis, K. C. Karpouzis, S. D. Kollias, Emotion recognition
through facial expression analysis based on a neurofuzzy network, Neural Networks 18 (2005).
[57] C.Huang, Y. Huang, Facial Expression Recognition Using Model-Based Feature Extraction and Action
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 41/49
Parameters Classification, Journal of visual communication and image representation Vol. 8 (1997).
[58] A. Besinger, T. Sztynda, S. Lal, C. Duthoit, J. Agbinya, B. Jap, D. Eager, G. Dissanayake, Optical flow based
analyses to detect emotion from human facial image data, Expert Systems with Applications (2010).
[59] CH Hjortsj Mnniskans ansikte och mimiska sprke (1969).
[60] S. Bashyal, G. K. Venayagamoorthy, Recognition of facial expressions using Gabor wavelets and learning
vector quantization, Engineering Applications of Artificial Intelligence 21 (2008).
[61] P. Viola, M. Jones, Robust Real-time Object Detection, IJCV, (2001).
[62] B. D. Lucas and T. Kanade, An iterative image registration technique with an application to stereo vision.
Proceedings of Imaging Understanding Workshop (1981) .
[63] J. Canny, A Computational Approach To Edge Detection, IEEE Trans. Pattern Analysis and Machine Intelligence
(1986)
[64] D. Ria, Lovell BC, Comparing and evaluating HMM ensemble training algorithms using train and test and
condition number criteria. Journal of Pattern Analysis and Applications (2000).
[65] Y. Freund et R. E.Schapir, A decision-theoretic generalization of on-line learning and an application to
boosting , Journal of Computer and System Sciences, no. 55. (1997).
[66] P. Ekman, Methods for measuring facial actions, in: K.Scherer, Handbook of Methods in Nonverbal Behaviour
Research, Cambridge University Press, Cambridge (1982).
[67] D. Matsumoto, Ethnic dfferences in affect intensity, emotion judgments, display rules, and self-reported
emotional expression, Motivation Emotion 17 (1993).
[68] D. Matsumoto, Cultural similarities and di7erences in display rules, Motivation Emotion 14 (3) (1990).
[69] M. Pantic, L. Rothkrantz, Expert system for automatic analysis of facial expression, Image Vision Comput. J. 18
(11) (2000).
[70] P. Dulguerov, F. Marchal, D. Wang, C. Gysin, P. Gidley, B.Gantz, J. Rubinstein, S. Sei7, L. Poon, K. Lun, Y. Ng,
Review of objective topographic facial nerve evaluation methods, Am.J. Otol. 20 (5) (1999).
[71] F. Wallhoff Facial Expressions and Emotion Database http://www.mmk.ei.tum.de/~waf/fgnet/feedtum.html,
Technische Universitt Mnchen (2006).
[72] Cohn, Kanade AU Coded Facial Expression Database, see Lucey, P., Cohn, J. F., Kanade, T., Saragih,
J., Ambadar, Z., & Matthews. The Extended Cohn-Kande Dataset (CK+) : A complete facial expression dataset for
action unit and emotion-specified expression. (2010)
[73] OpenCV, http://opencv.willowgarage.com/wiki/
[74] I. Cohen, A. Garg, T. S. Huang Emotion Recognition from Facial Expressions using Multilevel HMM (2000)
[75] L. E. Baum, T. Petrie, G. Soules, N. Weiss A maximization technique occurring in the statistical analysis of
probabilistic functions of Markov chains, (1970)
[76] L. R. Rabiner, A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition (1989)
[77] M. Castrillon-Santana, O. Deniz-Suarez, L. Anton-Canals and J. Lorenzo-Navarro, Face and facial features
evaluation, Performance Evaluation of Public Domain Haar Detectors for Face and Facial Feature Detection.
[78] Image d'aprs http://www.icg.tu-graz.ac.at/opportunities/head_pose_estimation
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 42/49
Annexes
A. Liste des Units d'Action
Actions principales
N Nom FACS
0 Neutral Face
1 Inner Brow Raiser 24 Lip Pressor
2 Outer Brow Raiser 25 Lips Part
4 Brow Lowerer 26 Jaw Drop
5 Upper Lid Raiser 27 Mouth Stretch
6 Cheek Raiser 28 Lip Suck
7 Lid Tightener 29 Jaw Thrust
8 Lips Toward Each Other 30 Jaw Sideways
9 Nose Wrinkler 31 Jaw Clencher
10 Upper Lip Raiser 32 [Lip] Bite
11 Nasolabial Deepener 33 [Cheek] Blow
12 Lip Corner Puller 34 [Cheek] Puff
13 Sharp Lip Puller 35 [Cheek] Suck
14 Dimpler 36 [Tongue] Bulge
15 Lip Corner Depressor 37 Lip Wipe
16 Lower Lip Depressor 38 Nostril Dilator
17 Chin Raiser 39 Nostril Compressor
18 Lip Pucker 41 Glabella Lowerer
19 Tongue Show 42 Inner Eyebrow Lowerer
20 Lip Stretcher 43 Eyes Closed
21 Neck Tightener 44 Eyebrow Gatherer
22 Lip Funneler 45 Blink
23 Lip Tightener 46 Wink
Codes des mouvements de la tte
N Nom FACS
51 Head Turn Left M56 Head Tilt Right
52 Head Turn Right 57 Head Forward
53 Head Up M57 Head Thrust Forward
54 Head Down 58 Head Back
55 Head Tilt Left M59 Head Shake Up and Down
M55 Head Tilt Left M60 Head Shake Side to Side
56 Head Tilt Right M83 Head Upward and to the Side
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 43/49
Codes des mouvements des yeux
N Nom FACS
61 Eyes Turn Left
M61 Eyes Left
62 Eyes Turn Right
M62 Eyes Right
63 Eyes Up
64 Eyes Down
65 Walleye
66 Cross-eye
M68 Upward Rolling of Eyes
69 Eyes Positioned to Look at Other Person
M69 Head and/or Eyes Look at Other Person
Codes de visibilit
N Nom FACS
70 Brows and forehead not visible
71 Eyes not visible
72 Lower face not visible
73 Entire face not visible
74 Unscorable
Codes des actions grossires
N Nom FACS
40 Sniff
50 Speech
80 Swallow
81 Chewing
82 Shoulder shrug
84 Head shake back and forth
85 Head nod up and down
91 Flash
92 Partial flash
97 Shiver/Tremble
98 Fast up-down look
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 44/49
B. Code des fonctions
( Les codes sont en C++, utilisant principalement la librairie OpenCV version 2.1 )
B. 1) Dtection du visage
static CvMemStorage* storage;
static CvHaarClassifierCascade *cascadeFace;
const char* cascade_face_name ="C:\\OpenCV2.2\\data\\haarcascades\\haarcascade_frontalface_alt.xml";
storage = cvCreateMemStorage(0);
cascadeFace = (CvHaarClassifierCascade*)cvLoad( cascade_face_name, 0, 0, 0 );
bool faceDetection ( IplImage* img,CvRect* face )
{
IplImage* temp = cvCreateImage( cvSize(img->width,img->height), 8, 3 );
cvClearMemStorage( storage );
if( cascadeFace ) // Cascade successfully loaded
{
CvSeq* faces = cvHaarDetectObjects( img, cascadeFace, storage,1.1, 2,
CV_HAAR_FIND_BIGGEST_OBJECT,
cvSize((int)(img->width/12) , (int)(img->width/10) ) );
for( int i = 0; i < (faces ? faces->total : 0); i++ )
{
CvRect* r = (CvRect*)cvGetSeqElem( faces, i );
face->x = r->x;
face->y = r->y;
face->width =r->width;
face->height=r->height;
}
}
else printf("\n...Cascade Face not loaded, no face detection available...\n");
cvReleaseImage( &temp );
return true;
}
B. 2) Dtection de la bouche
static CvMemStorage* storage;
static CvHaarClassifierCascade *cascadeMouth;
const char* cascade_mouth_name="C:\\OpenCV2.2\\data\\haarcascades\\Mouth.xml";
storage = cvCreateMemStorage(0);
cascadeMouth= (CvHaarClassifierCascade*)cvLoad( cascade_mouth_name, 0, 0, 0 );
bool mouthDetection( IplImage* img,CvRect* face,CvRect* mouth)
{
IplImage* temp = cvCreateImage( cvSize(img->width,img->height), 8, 3 );
cvClearMemStorage( storage );
cvSetImageROI(img,cvRect(face->x,face->y+face->height/2,face->width,face->height/2));
if( cascadeMouth ) // Cascade successfully loaded
{
CvSeq* mouths = cvHaarDetectObjects( img, cascadeMouth, storage,2.9, 2,
CV_HAAR_DO_CANNY_PRUNING, cvSize(25, 15));
for( int i = 0; i < (mouths ? mouths->total : 0); i++ )
{
CvRect* r = (CvRect*)cvGetSeqElem( mouths, i );
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 45/49
mouth->x = r->x+face->x;
mouth->y = r->y+face->y+face->height/2;
mouth->width =r->width;
mouth->height=r->height;
}
}
else printf("\n...Cascade Mouth not loaded, no mouth detection available...\n");
cvResetImageROI(img);
cvReleaseImage( &temp );
return true;
}
B. 3) Calcul de la pose de la tte
// Angle : (PITCH)
float distEyesNose = (double)sqrt((double)((Nose.x-foreheadCenter.x)
* (Nose.x-foreheadCenter.x)+(Nose.y-foreheadCenter.y)*(Nose.y-foreheadCenter.y)))/eyeDist;
pitch=(72*distEyesNose-44)*3.14/180;
// Angle : (ROLL)
double midx=(eyeL.x+eyeR.x)/2;
double midy=(eyeL.y+eyeR.y)/2;
double mL1=(eyeL.y-eyeR.y)/(eyeL.x-eyeR.x);
double mL2=(mL1==0)?0:-1/mL1;
double n=midy-mL2*midx;
double angle=atan2((double) (mL1==0)? (int)midx:(int)((facer.y-n)/mL2) -
(mL1==0)? (int)midx:(int)((facer.y+facer.height-n)/mL2),
(double)facer.y-facer.y+facer.height);
if (angle>=0) angle-=180;
else angle+=180;
roll=angle*3.14/180;
// Angle : (YAW)
float yawL=(eyeL.x-tempL.x);
float yawR=(tempR.x-eyeR.x);
if (yawL == 0 || yawR == 0 ) yaw=0;
else if (yawL > yawR) yaw=(-45+(yawR/yawL)*45)*3.14/180;
else if (yawR > yawL) yaw=( 45-(yawL/yawR)*45)*3.14/180;
B. 4) Dtection temporelle et graphiques
int diffFrame(IplImage* img1 ,IplImage* img2, int area)
{
double diff;
float mean=0;
int meanWindowSize= 50;
if(img1==NULL || img2==NULL) diff=-1;
else // Mise l'chelle et calcul de la diffrence
{
IplImage* imgTest=cvCreateImage(cvSize(img2->width,img2->height),
img2->depth,img2->nChannels);
cvResize(img1,imgTest, CV_INTER_AREA);
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 46/49
diff=cvNorm( img2, imgTest );
cvReleaseImage(&imgTest);
diffTab[area][compteur[area]] = diff;
diffSum[area] += diff;
if(compteur[area]>=meanWindowSize)
diffSum[area] -= diffTab[area][compteur[area]-meanWindowSize];
compteur[area]++;
mean=diffSum[area]/
((compteur[area]<meanWindowSize)? compteur[area] : meanWindowSize);
}
CvFont myFont2;cvInitFont(&myFont2,CV_FONT_HERSHEY_PLAIN,1.0f,1.0f,0,1,8);
// Remise zro du graphique si au bout de la fentre
if(oldDiff[area]==0 || diff==-1 ) oldDiff[area]=100*(1+area);
if(graphTime==0){
for(int x=0; x<graphDiff->width; x++){
for(int y=0; y<graphDiff->height; y++){
cvSet2D(graphDiff, y,x,cvScalar(255,255,255));
}
}
cvPutText( graphDiff, "Mouth : ", cvPoint(15,40) , &myFont2, CV_RGB(0,0,0));
cvPutText( graphDiff, "EyeL : ", cvPoint(15,140) , &myFont2, CV_RGB(0,0,0));
cvPutText( graphDiff, "EyeR : ", cvPoint(15,240) , &myFont2, CV_RGB(0,0,0));
cvPutText( graphDiff, "EyeBL : ", cvPoint(15,340) , &myFont2, CV_RGB(0,0,0));
cvPutText( graphDiff, "EyeBR : ", cvPoint(15,440) , &myFont2, CV_RGB(0,0,0));
cvPutText( graphDiff, "FHead : ", cvPoint(15,540) , &myFont2, CV_RGB(0,0,0));
}
CvScalar color,color2;int y;
switch(area)
{
case 0/*Mouth*/: color=cvScalar(0,0,255) ; color2=cvScalar(0,0,150) ; y=100-(int)diff/10; break;
case 1/*EyeL */: color=cvScalar(0,255,0) ; color2=cvScalar(0,150,0) ; y=200-(int)diff/10; break;
case 2/*EyeR */: color=cvScalar(0,255,0) ; color2=cvScalar(0,150,0) ; y=300-(int)diff/10; break;
case 3/*EyeBL*/: color=cvScalar(0,200,200);color2=cvScalar(0,120,120); y=400-(int)diff/10; break;
case 4/*EyeBR*/: color=cvScalar(0,200,200);color2=cvScalar(0,120,120); y=500-(int)diff/10; break;
case 5/*FHead*/: color=cvScalar(200,0,200);color2=cvScalar(120,0,120); y=600-(int)diff/10; break;
default : break;
}
if (diff!=-1) // Dessin du graph
{
cvCircle(graphDiff,cvPoint(2*graphTime,y),2,color,1,8,0);
cvCircle(graphDiff,cvPoint(2*graphTime,100*(1+area)-(int)mean/10),1,color2,1,8,0);
cvLine( graphDiff, cvPoint(2*graphTime-2,oldDiff[area]), cvPoint(2*graphTime,y), color,1,8 );
oldDiff[area]=y;
}
// Dcision
int decision=3;
if (diff>= mean*0 && diff < mean*1.2) /* Frame Stop */decision=0;
if (diff>= mean*1.2 && diff < mean*2 ) /* Frame Move */decision=1;
if (diff>= mean*2 && diff < mean*10 ) /* Key Frame */decision=2;
if (diff<=0 || mean==0 || diff>mean*10 ) /* Detect Fail*/decision=3;
cvShowImage("GraphDiff",graphDiff);
return decision;
}
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 47/49
B. 5) Extraction des caratristiques
int opticalFlow(int mode,IplImage *frame1,IplImage *frame2)
{
CvCapture *Cap;
CvSize frame_size;
if ( mode != 2) /* Webcam 0 / Video 1*/
{
Cap = (mode == 0)? cvCaptureFromCAM(0) : cvCaptureFromAVI("C:\\optical_flow_input.avi");
if (Cap == NULL) { fprintf(stderr, "Error: Can't open video or read webcam flow.\n"); return -1;}
frame_size = cvSize((int) cvGetCaptureProperty( Cap, CV_CAP_PROP_FRAME_WIDTH ),
cvGetCaptureProperty( Cap, CV_CAP_PROP_FRAME_HEIGHT ));
frame2 = cvQueryFrame( Cap );
frame1 = cvCloneImage( frame2 );
}
else /* Comparaison 2*/
{
if (frame1 == NULL || frame2 == NULL)
{
//fprintf(stderr, "Error: One frame or more is empty.\n");
return -2;
}
// Resizing
frame_size = cvSize(frame1->width,frame1->height);
IplImage* frameTest=cvCreateImage(frame_size,frame1->depth,frame1->nChannels);
cvResize(frame2,frameTest, CV_INTER_AREA);
cvCopy(frameTest,frame2);
cvReleaseImage(&frameTest);
}
do
{
if ( mode == 0 || mode ==1)
{
if(!cvGrabFrame(Cap)) return -1;
cvCopy( frame2, frame1 );
frame2 = cvRetrieveFrame( Cap );
}
IplImage *frame1_1C = NULL, *frame2_1C = NULL, *eig_image = NULL, *temp_image = NULL,
*pyramid1 = NULL, *pyramid2 = NULL;
frame1_1C = cvCreateImage( frame_size, IPL_DEPTH_8U, 1 );
frame2_1C = cvCreateImage( frame_size, IPL_DEPTH_8U, 1 );
cvConvertImage(frame1, frame1_1C);
cvConvertImage(frame2, frame2_1C);
eig_image = cvCreateImage(frame_size, IPL_DEPTH_32F, 1 );
temp_image= cvCreateImage(frame_size, IPL_DEPTH_32F, 1 );
const int G = 20; // Nombre de features trouver sur l'image
CvPoint2D32f frame1_features[G];
int number_of_features = G;
cvGoodFeaturesToTrack(frame1_1C, eig_image, temp_image, frame1_features,
&number_of_features, .01, .01, NULL);
CvPoint2D32f frame2_features[G];
char optical_flow_found_feature[G];
float optical_flow_feature_error[G];
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 48/49
CvSize optical_flow_window = cvSize(3,3);
CvTermCriteria optical_flow_termination_criteria = cvTermCriteria( CV_TERMCRIT_ITER |
CV_TERMCRIT_EPS, 20, .3 );
pyramid1 = cvCreateImage(frame_size, IPL_DEPTH_8U, 1 );
pyramid2 = cvCreateImage(frame_size, IPL_DEPTH_8U, 1 );
cvCalcOpticalFlowPyrLK(frame1_1C, frame2_1C, pyramid1, pyramid2, frame1_features,
frame2_features, number_of_features, optical_flow_window, 5, optical_flow_found_feature,
optical_flow_feature_error, optical_flow_termination_criteria, 0 );
float tailleSum=0,cosinusSum=0,sinusSum=0,sum=0;
// Affichage du champs de vecteurs
for(int i = 0; i < number_of_features; i++)
{
if ( optical_flow_found_feature[i] == 0 ) continue;
CvPoint p = cvPoint((int) frame1_features[i].x,(int) frame1_features[i].y);
CvPoint q = cvPoint((int) frame2_features[i].x,(int) frame2_features[i].y);
float angle = atan2( (float) p.y - q.y, (float) p.x - q.x );
float taille = sqrt( (float)((p.y - q.y)*(p.y - q.y)) + (float)((p.x - q.x)*(p.x - q.x)) );
if ( taille > 30 || taille < 2 || angle ==0 ) continue;
tailleSum +=taille;
cosinusSum+=cos(angle);
sinusSum +=sin(angle);
sum++;
//Dessin des flches
q = cvPoint((int) (p.x - 3 * taille * cos(angle)),(int) (p.y - 3 * taille * sin(angle)));
cvLine( frame1, p, q, CV_RGB(255,255,255), 1, CV_AA, 0 );
cvLine( frame1, cvPoint((int)(q.x+9*cos(angle+3.14/4)),(int)(q.y+9*sin(angle+3.14/4))),q,
CV_RGB(255,255,255), 1, CV_AA, 0 );
cvLine( frame1, cvPoint((int)(q.x+9*cos(angle-3.14/4)),(int)(q.y+9*sin(angle-3.14/4))),q,
CV_RGB(255,255,255), 1, CV_AA, 0 );
}
// Affichage du vecteur moyenne
if(sum !=0)
{
tailleMean = tailleSum/sum;
angleMean = atan2(sinusSum/sum,cosinusSum/sum);
}
cvShowImage("Optical Flow", frame1);
int key_pressed = cvWaitKey(10);
cvReleaseImage(&frame1_1C);
cvReleaseImage(&frame2_1C);
cvReleaseImage(&eig_image);
cvReleaseImage(&temp_image);
cvReleaseImage(&pyramid1);
cvReleaseImage(&pyramid2);
}
while(mode == 0 || mode == 1);
return 0;
}
16/05/11 Rapport de stage : Analyse dynamique d'expressions faciales dans une vido 49/49

Você também pode gostar