Sommaire
- Récupération des photos & Transformation des données
- Notre base de données contient 200 photos de portraits de visages expressifs
- Problèmes rencontrés [sauter au contenu de 1.2]
- Choix des points [sauter au contenu de 1.3]
- Pourquoi la bouche ?
- Programme Pycoord
- Pycoord, pourquoi ce programme ?
- Pourquoi le langage Python
- Les langages exclus [sauter au contenu de 2.2.1]
- Le langage Python [sauter au contenu de 2.2.2]
- Fonctionnalité [sauter au contenu de 2.3]
- Fonctionnement
- Installation [sauter au contenu de 2.4.1]
- Utilisation [sauter au contenu de 2.4.2]
- Fonctionnement interne [sauter au contenu de 2.4.3]
- Algorithme
- Rappel de l'objectif
- Comment avoir les degrés d'appartenance clés ? [sauter au contenu de 3.2]
- Quelles modifications leurs apporter ?
- En 200 photos, notre programme doit trouver le prototype et l'écart-type optimaux [sauter au contenu de 3.3.1]
- À la recherche du meilleur prototype [sauter au contenu de 3.3.2]
- À la recherche de la meilleure variance [sauter au contenu de 3.3.3]
- Résultats et Interprétation
- Premières sorties [sauter au contenu de 3.4.1]
- Analyse de l'influence de l'écart-type initial [sauter au contenu de 3.4.2]
- Que faire avec ces résultats si variables ? [sauter au contenu de 3.4.3]
- Critiques [sauter au contenu de 3.4.4]
Récupération des photos & Transformation des données
Notre base de données contient 200 photos de portraits de visages expressifs
Nous avons fait le choix de l'hétérogénéité. En effet, nous n'avons pas fait que piocher dans les bases de données existantes [voir référence 01]. Comme elles ne satisfaisaient pas nos attentes (qualité, crédibilité) et besoins (diversité), nous avons préféré compléter la base en prenant nous même des photos.
Problèmes rencontrés
Nous avons essayé de respecter une logique dans les quotas : identiques pour chaque émotions, et représentatifs de la population pour le sexe, les types, etc.
[déplier le contenu de 1.2]Choix des points
[déplier le contenu de 1.3]Pourquoi la bouche ?
Elle joue un role important dans les expressions faciales. Si on s'était focalisé sur une autre partie du visage (comme les yeux), nous aurions eu beaucoup plus de points caractéristiques. Rien qu'avec ces 2 ratios nous pouvons deviner des expressions.
Programme Pycoord :
Pycoord, pourquoi ce programme ?
- faire de la programmation orienté objet (POO) ;
- nous faire apprendre un nouveau langage (ici Python) ;
- être multiplate-formes (exécution et développement compris) ;
- avoir une interface graphique nous permettant de récupérer les coordonnées de 4 points clés de la bouche sur une image ;
- générer une matrice de données exploitables par Scilab.
Pourquoi le langage Python
Les langages exclus
Dans le cadre de notre licence, nous avons été mis en contact avec différents « langages » : Delphi, C++, Scheme et PHP, Maple, Scilab ; vous trouverez en dépliant cette section (lien ci-dessus) les raisons qui nous ont fait exclure ces différents langages, ainsi que les raisons qui ont fait que nous avons choisi de développer notre projet en Python.
[déplier le contenu de 2.2.1]le langage Python [voir référence 10]
Les enseignements de notre licence évoluant d'année en année, le langage Delphi à la base des enseignements d'informatique est finalement en train de laisser place au langage Python. Après quelques recherches et discussions avec nos enseignants et des amis, il s'est avéré que Python était tout à fait adapté à notre projet. Nous détaillons ci-dessus les intérêts de python, dans le cadre de notre projet :
[déplier le contenu de 2.2.2]Fonctionnalité
Cette section décrit les fonctionnalités et informations disponibles dans l'interface graphique. L'interface se découpe en deux parties majeures : le panneau d'actions (zoom, navigation dans la liste d'images, etc.) et d'informations (nom, dimensions, etc.) sur la partie gauche et panneau de l'image contenant le canvas et la barre de statut.
[déplier le contenu de 2.3]Fonctionnement
Installation
Certain modules python (logiciel) ne sont téléchargeables qu'au format tar.gz, on conseille l'installation du logiciel d'archivage 7zip. Nous détaillerons ici l'installation des applications nécessaires au fonctionnement de Pycoord sous Microsoft Windows et Ubuntu Linux.
[déplier le contenu de 2.4.1]Utilisation
L'utilisation est des plus simples, nous décrirons ici la procédure à suivre :
[déplier le contenu de 2.4.2]Fonctionnement interne
Nous allons décrire ici le schéma de fonctionnement de notre programme Pycoord, nous ne rentrerons pas dans les détails liés au langage python de façon à ce que des non-informaticiens puissent comprendre. Notre but est de générer une matrice au format scilab contenant quatre couples de coordonnées correspondant à des points caractéristiques de la bouche.
Algorithme
avertissement : Si vous ne comprenez pas certaines des notions développées par la suite, référez vous au thème « logique floue ».
Rappel de l'objectif
Nous optons pour le moment pour une démarche floue. Nous ne désirons pas nommer immédiatement l'unique émotion cachée derrière une expression faciale mais nous souhaiterions pouvoir établir des affirmations comme « il[elle] est un peu joyeux mais aussi un peu triste ». Une interprétation supplémentaire pourrait cependant nous amener à créer des émotions hybrides, ici la mélancolie. En suivant les principes de la logique floue, il est nécessaire d'obtenir le degré d'appartenance de nos photos à chacune de nos quatre émotions.
Comment avoir les degrés d'appartenance clés ?
[déplier le contenu de 3.2]Quelles modifications leurs apporter ?
En 200 photos, notre programme doit trouver les prototypes et les écart-types optimaux
[déplier le contenu de 3.3.1]À la recherche du meilleur prototype
[déplier le contenu de 3.3.2]À la recherche de la meilleure variance
[déplier le contenu de 3.3.3]Résultats et Interprétation
Premières sorties
[déplier le contenu de 3.4.1]Analyse de l'influence de l'écart-type initial
[déplier le contenu de 3.4.2]Que faire avec ces résultats si variables ?
Y a-t-il un intérêt à tester où notre programme place une photo quelconque sur les courbes d'appartenance? Les résultats sont si dépendants des conditions initiales que les emplacements proposés changent du tout au tout et ne correspondent pas la pluspart du temps à ce que nous avions espéré.
Que faire sinon améliorer notre programme? Nous estimons que nos prototypes initiaux sont assez bien choisis. Ce que nous pouvons améliorer ce sont les écart-types initiaux. Nous avons une idée du résultat désiré, nous pouvons dès lors tester la performance de chaque écart-type premier. Cela demanderait de récompenser les individus (un individu étant représenté par ses 8 écart-types initiaux), selon qu'ils respectent certaines régles, comme par exemple: les surfaces se recoupent mais pas trop. On pourrait ainsi classer les individus selon leur score de récompense.