Projet Oxford : la reconnaissance faciale à portée de main et plus encore

Le précédent billet La galerie Azure Machine Learning, de quoi s’agit-il ? visait à illustrer la nouvelle galerie Azure Machine Learning constituait un excellent moyen pour les scientifiques de données et les développeurs de démarrer avec Azure ML et d’apprendre des autres.

Nous vous proposons à présent de consacrer ce billet à la présentation de certaines APIs disponibles dans cette galerie et plus particulièrement aux fameuses Face APIs, une des composantes du Projet Oxford, qui utilise la reconnaissance faciale.

clip_image002

Le projet Oxford, de quoi s’agit-il ?

Le Projet Oxford constitue dans la pratique un portefeuille d’APIs REST et autres SDKs offrant aux développeurs la possibilité d’intégrer facilement à leurs solutions des services intelligents qui permettent d’accroitre plus encore la compréhension des données.

Sont à ce titre aujourd’hui proposées les APIs suivantes :

Vous trouverez ici une présentation complète des services, SDKs, démonstrations, documentations, articles de blogs et forum issus de ce projet. Comme le titre de ce billet le suggère, nous allons nous intéresser plus particulièrement à une présentation des premières APIs, en l’occurrence les Face APIs.

Vous avez dit détection et reconnaissance faciale ?

Les Face APIs constituent au niveau de la plateforme Microsoft Azure une collection d’APIs REST qui mettent à disposition les algorithmes de Machine Learning les plus avancés en termes de détection et reconnaissance faciale. (Vous pouvez tester le résultat des toutes ces APIs ici.)

Détection de visages avec extraction d’attributs

L’API Face Detection prête à l’emploi permet de détecter et localiser très précisément sur une image jusque 64 visages différents.

Vous pouvez ainsi l’utiliser directement à partir d’un fichier image ou bien en spécifiant l’URL de l’image sur la toile. Cette dernière vous indique alors par des rectangles la position des visages dans l’image.

clip_image004

Comme le titre le suggère, l’API peut également indiquer certaines caractéristiques des personnes ainsi détectées comme leur sexe et leur âge.

Cette API constitue en quelque sorte la base des Face APIs et s’avère essentielle pour la suite des opérations dans la mesure où elle permet d’associer un identifiant à chaque visage ainsi détecté, identifiant qui sera utilisé par les autres APIs proposées que nous allons aborder tout de suite après.

JPEG, PNG, GIF, et autre BMP constituent à date les formats d’image supportés. Les fichiers correspondants ne doivent pas excéder 4 Mo.

Si vous souhaitez d’ores et déjà en savoir plus sur les conditions de détection de visages, nous vous invitons à aller voir la documentation relative à cette API disponible ici.

Une caractéristique intéressante de cette documentation est d’avoir directement pour ainsi dire le pied à l’étrier en pouvant tester en interactif l’API depuis sa documentation pour le verbe http POST !

clip_image006

Passons à présent à la suite, à savoir la reconnaissance faciale en tant que telle avec ces multiples APIs. La mention précédente faite sur la documentation interactive s’applique bien évidemment aux autres APIs ;-)

Reconnaissance faciale

De façon générale, la reconnaissance faciale consiste à identifier et vérifier sur une image qu’une personne corresponde bien à une sélection de visages détectés. Elle s’avère très utilisée dans les domaines de la sécurité des systèmes, de la reconnaissance de célébrités ou encore di marquage de photos.

Les Face APIs offre dans ce sens 4 fonctionnalités clé :

  1. La vérification faciale,
  2. La recherche de visages similaires,
  3. Le regroupement de visages au sein d’une image,
  4. Et enfin l’identification de personnes.

Abordons tout cela en séquence.

Vérification faciale

Cette fonctionnalité est proposée au travers de l’API Face Verification. Cette dernière analyse deux visages et vérifie s’ils appartiennent ou non à la même personne en donnant un niveau de confiance.

clip_image008

Recherche de visages similaires

Cette fonctionnalité est proposée au travers de l’API Find Similar Faces qui permet d’identifier parmi plusieurs photos candidates tous les visages similaires à un visage donné en entrée comme référence.

clip_image010

Pour se faire, et en d’autres termes, vous spécifiez donc en entrée une image de visage et un échantillon de visages inconnus. Le service retourne alors le sous-ensemble de visages sensés correspondre à la même personne que le visage donné en entrée.

Groupement de visages au sein d’une image

Cette fonctionnalité est proposée au travers de l’API Face Grouping. Celle-ci permet d’organiser en plusieurs groupes des visages en fonction de leurs similarités visuelles

clip_image012

Elle prend un ensemble de visages inconnus puis le divise en plusieurs groupes. Chaque groupe contiendra ensuite des visages pouvant être considérés comme appartenant à la même personne.

Identification de personnes

Cette dernière fonctionnalité est proposée au travers de l’API Face Identification. Cette dernière permet d’identifier une personne à partir d’un visage sur une image.

clip_image014

Pour déterminer à qui appartient ce visage, il faut préalablement construire un groupe de personnes (pouvant aller jusque 1000), chacune associée à un ou plusieurs visages.

Voici un exemple avec le groupe de personnes « MyFriends ».

clip_image016

Une fois le groupe de personnes créé, il sert à l’entrainement du modèle. Celui-ci peut ensuite être testé avec le visage que nous souhaitons identifier. Si le visage semble appartenir à l’une des personnes au sein du groupe, alors l’API retourne le nom et les informations relatives à cette personne.

Si vous souhaitez avoir plus d’informations concernant la création et l’entrainement d’un groupe de personnes, nous vous invitons à consulter les pointeurs suivants de la documentation interactive :

clip_image018

Pour démarrer

Ce rapide tour du propriétaire des possibilités a aiguisé votre curiosité et vous souhaitez vous lancer pour faire votre propre expérience et laisser libre court ensuite à votre imagination. Qu’à cela ne tienne, voici deux tutoriels en pas à pas pour vous accompagner dans la découverture pratique des APIs et leur prise en main :

Une vidéo de formation est également disponible sur Channel 9 : "Project Oxford": Adding Smart to Your Applications

Sur cette base, voici enfin un exemple d’application qui peut être très facilement réalisé en quelques heures seulement avec le site TwinsOrNot.net qui répond à celles et ceux dont on sollicite souvent la ressemblance avec un membre de leur famille, un proche ou encore une célébrité, qui sait...

clip_image020

Ce site permet en effet à chacun de comparer son visage avec celui d’un autre et d’en évaluer le degré de ressemblance. Pour en savoir plus, rendez-vous ici.

Autre réalisation présentée lors de la plénière du deuxième jour de la dernière conférence développeur BUILD 2015, le site viral How-Old.net qui permet de prédire l’âge qu’une personne parait à partir d’une photo.

clip_image022

Vous voulez tester avec votre propre photo comme. Rien de plus simple, rendez-vous sur le site. Comme indiqué, ce dernier ne conserve pas les photos :-)

Pour cela, ce site met en œuvre bien évidemment les Face APIs, mais aussi Azure Stream Analytics et Power BI. Vous pouvez retrouver toute l’histoire de ce site ici.

Voilà, nous en avons à présent terminé de cette introduction. A vous de jouer !!

clip_image024clip_image026