Bah Roger, t'étais pas sur la photo ?

17 mars 2009

Ce soir, j'ai décidé de vous présenter mon projet de recherche. Un master of science in advanced computer science (sympa le nom du diplôme, hein ?) implique d'une part six 'modules', ou six 'cours', et de l'autre un travail de recherche sur un sujet bien précis, choisi parmi une liste proposée par différents superviseurs.

Après une sélection classée de six projets, on nous en alloue un en fonction de l'ordre de préférence et du nombre de candidats au sujet proposé. J'ai hérité du projet intitulé 'Automatic image inpainting using fields of experts'.
Pas de panique, ça ne mord pas. Concrètement, ça consiste en la restauration d'images (image inpainting) telle qu'une photo déchirée ou même la suppression d'un élément qui ne convient pas, et sa reconstruction 'intuitive'. De telles choses existent bien déjà via ce qu'on appelle des algorithmes traditionnels, ou classiques1 et en voici d'ailleurs quelques exemples:















C'est joli comme tout, mais il s'avère que ça n'est pas toujours parfait (voir le perroquet par exemple, l'autre image étant de trop mauvaise qualité).

L'autre partie de l'intitulé du projet réfère à des outils dits de 'machine learning', disons pour fixer les idées d' ""intelligence artificielle"". C'est la partie 'Fields of experts' ; pour ceux qui connaissent c'est du Markov en (beaucoup) plus moche. Le but de mon projet est donc en gros d'utiliser des méthodes dites d'apprentissage pour arriver à des résultats que l'on pense pouvoir être meilleurs. Comment ?

Pour entrer un peu dans les détails, disons que le traitement d'une image passe principalement par l'application de 'filtres'. Un filtre s'applique à un pixel précis. On peut le voir comme un carré plus ou moins large correspondant au nombre de voisins à qui s'applique la règle qui lui permet de créer une nouvelle image. Typiquement, on pourrait imaginer un filtre 3x3, qui dirait à chaque pixel (pigment) de l'image,
"ta nouvelle valeur sera ta précédente plus la moyenne des quatre qui t'environnent au dessus, en dessous et sur les côtés".
Et ce filtre, on l'applique à chaque pixel pour obtenir une nouvelle image. Les résultats sont complètement différents selon les types de filtres qu'on utilise. On le voit bien, tout le problème est de trouver le(s) bon(s) filtre(s) !

Quand je parle d'apprentissage pour la machine, concrètement cela passe par la création automatique de ces-dits filtres à partir de milliers d'images. On crée ainsi quelques dizaines de filtres, qui s'appliqueront avec en plus des paramètres spécifiques à chaque image, et le tour est joué.
...Oui bon, j'aimerai que ce soit aussi simple :).

Me voilà donc parti dans cette petite aventure qui me change un peu des projets 'classiques' de recherche en informatique. L'intérêt est ici que je travaille avec des outils de machine learning qui correspondent complètement à mon cursus mathématico-informatique, le tout dans un domaine que je ne connais pas du tout à savoir le traitement de l'image. Pour une fois que des lignes de codes produisent un résultat concret, visible et sympa à voir... ça fait plaisir !


1. Qui utilisent des méthodes mathématiques classiques d'analyse (gradient), de détection des 'formes'.

0 commentaires: