Assistez au symposium Women in ML le 7 décembre Inscrivez-vous maintenant

Classement des images

La tâche d'identifier ce qu'une image représente s'appelle la classification des images . Un modèle de classification d'images est formé pour reconnaître diverses classes d'images. Par exemple, vous pouvez entraîner un modèle à reconnaître des photos représentant trois types d'animaux différents : des lapins, des hamsters et des chiens. TensorFlow Lite fournit des modèles pré-entraînés optimisés que vous pouvez déployer dans vos applications mobiles. En savoir plus sur la classification des images à l'aide de TensorFlow ici .

L'image suivante montre la sortie du modèle de classification d'images sur Android.

Capture d'écran d'un exemple Android

Commencer

Si vous débutez avec TensorFlow Lite et que vous travaillez avec Android ou iOS, nous vous recommandons d'explorer les exemples d'applications suivants qui peuvent vous aider à démarrer.

Vous pouvez tirer parti de l'API prête à l'emploi de la bibliothèque de tâches TensorFlow Lite pour intégrer des modèles de classification d'images en quelques lignes de code seulement. Vous pouvez également créer votre propre pipeline d'inférence personnalisé à l'aide de la bibliothèque de support TensorFlow Lite .

L'exemple Android ci-dessous illustre l'implémentation des deux méthodes en tant que lib_task_api et lib_support , respectivement.

Voir l'exemple Android

Voir l'exemple iOS

Si vous utilisez une plate-forme autre qu'Android/iOS, ou si vous connaissez déjà les API TensorFlow Lite , téléchargez le modèle de démarrage et les fichiers de support (le cas échéant).

Télécharger le modèle de démarrage

Description du modèle

Comment ça fonctionne

Lors de la formation, un modèle de classification d'images est alimenté en images et leurs étiquettes associées. Chaque étiquette est le nom d'un concept distinct, ou d'une classe, que le modèle apprendra à reconnaître.

Avec suffisamment de données de formation (souvent des centaines ou des milliers d'images par étiquette), un modèle de classification d'images peut apprendre à prédire si de nouvelles images appartiennent à l'une des classes sur lesquelles il a été formé. Ce processus de prédiction s'appelle l' inférence . Notez que vous pouvez également utiliser l'apprentissage par transfert pour identifier de nouvelles classes d'images en utilisant un modèle préexistant. L'apprentissage par transfert ne nécessite pas un ensemble de données de formation très volumineux.

Lorsque vous fournissez ensuite une nouvelle image comme entrée au modèle, il affichera les probabilités de l'image représentant chacun des types d'animaux sur lesquels elle a été entraînée. Un exemple de sortie pourrait être le suivant :

Espèce animale Probabilité
Lapin 0,07
Hamster 0,02
Chien 0,91

Chaque nombre dans la sortie correspond à une étiquette dans les données d'apprentissage. En associant la sortie aux trois étiquettes sur lesquelles le modèle a été formé, vous pouvez voir que le modèle a prédit une forte probabilité que l'image représente un chien.

Vous remarquerez peut-être que la somme de toutes les probabilités (pour le lapin, le hamster et le chien) est égale à 1. Il s'agit d'un type de sortie courant pour les modèles à plusieurs classes (voir Softmax pour plus d'informations).

Des résultats ambigus

Étant donné que les probabilités de sortie totaliseront toujours 1, si une image n'est pas reconnue avec certitude comme appartenant à l'une des classes sur lesquelles le modèle a été formé, vous pouvez voir la probabilité distribuée à travers les étiquettes sans qu'aucune valeur ne soit significativement plus grande.

Par exemple, les éléments suivants peuvent indiquer un résultat ambigu :

Étiquette Probabilité
lapin 0,31
hamster 0,35
chien 0,34
Si votre modèle renvoie fréquemment des résultats ambigus, vous aurez peut-être besoin d'un modèle différent, plus précis.

Choisir une architecture de modèle

TensorFlow Lite vous fournit une variété de modèles de classification d'images qui sont tous formés sur l'ensemble de données d'origine. Des architectures modèles telles que MobileNet, Inception et NASNet sont disponibles sur TensorFlow Hub . Pour choisir le meilleur modèle pour votre cas d'utilisation, vous devez tenir compte des architectures individuelles ainsi que de certains des compromis entre les différents modèles. Certains de ces compromis de modèle sont basés sur des métriques telles que les performances, la précision et la taille du modèle. Par exemple, vous pourriez avoir besoin d'un modèle plus rapide pour créer un lecteur de code-barres, tandis que vous pourriez préférer un modèle plus lent et plus précis pour une application d'imagerie médicale. Notez que les modèles de classification d'images fournis acceptent différentes tailles d'entrée. Pour certains modèles, cela est indiqué dans le nom du fichier. Par exemple, le modèle Mobilenet_V1_1.0_224 accepte une entrée de 224x224 pixels. Tous les modèles nécessitent trois canaux de couleur par pixel (rouge, vert et bleu). Les modèles quantifiés nécessitent 1 octet par canal et les modèles flottants nécessitent 4 octets par canal. Les exemples de code Android et iOS montrent comment traiter les images de caméra en taille réelle dans le format requis pour chaque modèle.

Utilisations et limites

Les modèles de classification d'images TensorFlow Lite sont utiles pour la classification en une seule étiquette ; c'est-à-dire prédire quelle étiquette unique l'image est la plus susceptible de représenter. Ils sont entraînés à reconnaître 1000 classes d'images. Pour une liste complète des classes, consultez le fichier labels dans le modèle zip . Si vous souhaitez entraîner un modèle à reconnaître de nouvelles classes, consultez Personnaliser le modèle . Pour les cas d'utilisation suivants, vous devez utiliser un autre type de modèle :
  • Prédire le type et la position d'un ou plusieurs objets dans une image (voir Détection d'objet )
  • Prédire la composition d'une image, par exemple le sujet par rapport à l'arrière-plan (voir Segmentation )
Une fois que vous avez exécuté le modèle de démarrage sur votre appareil cible, vous pouvez expérimenter différents modèles pour trouver l'équilibre optimal entre performances, précision et taille du modèle.

Personnaliser le modèle

Les modèles pré-formés fournis sont formés pour reconnaître 1000 classes d'images. Pour une liste complète des classes, consultez le fichier labels dans le modèle zip . Vous pouvez également utiliser l'apprentissage par transfert pour réentraîner un modèle afin qu'il reconnaisse les classes qui ne figurent pas dans l'ensemble d'origine. Par exemple, vous pouvez réentraîner le modèle pour faire la distinction entre différentes espèces d'arbres, même s'il n'y a pas d'arbres dans les données d'entraînement d'origine. Pour ce faire, vous aurez besoin d'un ensemble d'images d'entraînement pour chacune des nouvelles étiquettes que vous souhaitez entraîner. Découvrez comment effectuer un apprentissage par transfert avec TFLite Model Maker ou dans l'atelier de programmation Reconnaître les fleurs avec TensorFlow .

Références de performances

Les performances du modèle sont mesurées en termes de temps nécessaire à un modèle pour exécuter l'inférence sur un élément matériel donné. Plus le temps est petit, plus le modèle est rapide. Les performances dont vous avez besoin dépendent de votre application. Les performances peuvent être importantes pour des applications telles que la vidéo en temps réel, où il peut être important d'analyser chaque image avant que l'image suivante ne soit dessinée (par exemple, l'inférence doit être plus rapide que 33 ms pour effectuer une inférence en temps réel sur un flux vidéo à 30 ips) . Le TensorFlow Lite a quantifié la plage de performances des modèles MobileNet de 3,7 ms à 80,3 ms. Les numéros de référence de performance sont générés avec l' outil d'analyse comparative .
Nom du modèle Taille du modèle Dispositif NNAPI CPU
Mobilenet_V1_1.0_224_quant 4.3 Mo Pixel 3 (Android 10) 6ms 13ms*
Pixel 4 (Android 10) 3,3 ms 5ms*
iPhone XS (iOS 12.4.1) 11ms**

* 4 fils utilisés.

** 2 fils utilisés sur iPhone pour le meilleur résultat de performance.

Précision du modèle

La précision est mesurée en termes de fréquence à laquelle le modèle classe correctement une image. Par exemple, on peut s'attendre à ce qu'un modèle avec une précision déclarée de 60 % classe correctement une image en moyenne 60 % du temps.

Les mesures de précision les plus pertinentes sont le Top-1 et le Top-5. Top-1 fait référence à la fréquence à laquelle l'étiquette correcte apparaît comme l'étiquette avec la probabilité la plus élevée dans la sortie du modèle. Top-5 fait référence à la fréquence à laquelle l'étiquette correcte apparaît dans les 5 probabilités les plus élevées dans la sortie du modèle.

Le TensorFlow Lite a quantifié la plage de précision Top-5 des modèles MobileNet de 64,4 à 89,9 %.

Taille du modèle

La taille d'un modèle sur disque varie en fonction de ses performances et de sa précision. La taille peut être importante pour le développement mobile (où elle peut avoir un impact sur la taille des téléchargements d'applications) ou lorsque vous travaillez avec du matériel (où le stockage disponible peut être limité).

Les tailles des modèles MobileNet quantifiés TensorFlow Lite vont de 0,5 à 3,4 Mo.

Lectures complémentaires et ressources

Utilisez les ressources suivantes pour en savoir plus sur les concepts liés à la classification des images :