Travaux pratiques sur le machine learning : Classification d'images

Découvrez comment Google a développé le modèle de classification d'images qui optimise la recherche dans Google Photos. Suivez un cours d'initiation aux réseaux de neurones convolutifs, puis créez votre propre classificateur d'images pour distinguer les photos de chats des photos de chiens.

Prérequis

Présentation

En mai 2013, Google a lancé la recherche de photos personnelles, qui permet aux utilisateurs de récupérer des photos dans leurs bibliothèques en fonction des objets présents dans ces images.

Capture d'écran de Google Photos montrant la recherche de chats siamois Figure 1 : la recherche sur Google Photos de chats siamois tient ses promesses !

La fonctionnalité, intégrée dans Google Photos en 2015, a été largement perçue comme changeant la donne et une preuve que les logiciels de vision par ordinateur pouvaient classer des images selon des normes humaines, en ajoutant de la valeur de plusieurs façons :

  • Les utilisateurs n'avaient plus besoin d'attribuer des libellés tels que "plage" à leur photos pour les classer selon leur contenu. Cette tâche manuelle devenait vite fastidieuse lorsqu'ils devaient gérer des ensembles de centaines ou de milliers d'images.
  • Les utilisateurs pouvaient aussi explorer leur collection de photos différemment, et localiser leurs photos en utilisant, comme termes de recherche, des noms d'objets qu'ils n'auraient jamais utilisés dans leurs libellés. Par exemple, ils pouvaient rechercher "palmier" pour afficher toutes leurs photos de vacances avec des palmiers en arrière-plan.
  • Le logiciel pouvait potentiellement "voir" des distinctions taxonomiques que les utilisateurs finaux eux-mêmes pouvaient ne pas voir (par exemple, distinguer les chats siamois et abyssins), augmentant ainsi efficacement la connaissance du domaine des utilisateurs.

Fonctionnement de la classification d'images

La classification d'images est un problème d'apprentissage supervisé : vous devez définir un ensemble de classes cibles (objets à identifier dans des images), puis entraîner un modèle à les reconnaître à l'aide d'exemples de photos étiquetées. Les premiers modèles de vision par ordinateur utilisaient les données de pixels brutes comme données d'entrée pour le modèle. Cependant, comme le montre la figure 2, les données de pixels brutes seules n'offrent pas une représentation suffisamment stable pour englober les myriades de variations d'un objet tel qu'il est capturé dans une image. La position de l'objet, l'arrière-plan derrière l'objet, l'éclairage ambiant, l'angle de l'appareil photo et la mise au point peuvent produire des fluctuations dans les données de pixels brutes. Ces différences sont suffisamment importantes pour ne pas pouvoir être corrigées en prenant les moyennes pondérées des valeurs RVB des pixels.

Collage de photos présentant des chats dans diverses positions, avec différents arrière-plans et conditions d'éclairage, et les données de pixels moyennées résultantes des images Figure 2 : À gauche : les chats peuvent être photographiés dans une grande variété de poses, avec différents contextes et conditions d'éclairage. À droite : calculer la moyenne des données de pixels pour prendre en compte cette variété ne produit aucune information utile.

Pour modéliser les objets de manière plus flexible, les modèles classiques de vision par ordinateur ont ajouté de nouvelles caractéristiques dérivées des données de pixels, telles que les histogrammes de couleurs, les textures et les formes. L'inconvénient de cette approche était que l'extraction de caractéristiques devenait un véritable calvaire en raison du nombre considérable d'entrées à modifier. Pour un classificateur de chats, quelles couleurs étaient les plus pertinentes ? À quel point les définitions des formes devaient-elles être flexibles ? Comme les caractéristiques devaient être ajustées de manière extrêmement précise, la construction de modèles robustes était assez difficile, et la précision en souffrait.