Classement des images

La tâche consistant à identifier ce qu'une image représente est appelée classification d'images . Un modèle de classification d'images est entraîné 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 d'images à l'aide de TensorFlow ici .

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

Capture d'écran de l'exemple Android

Commencer

Si vous êtes nouveau sur TensorFlow Lite et que vous travaillez avec Android ou iOS, il est recommandé 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 montre l'implémentation des deux méthodes respectivement lib_task_api et lib_support .

Voir l'exemple Android

Voir un 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

Pendant 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 ou d'une classe distincte 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 est appelé 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 très grand ensemble de données de formation.

Lorsque vous fournissez ensuite une nouvelle image en entrée au modèle, celui-ci 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 résultat pourrait être le suivant :

Type d'animal Probabilité
Lapin 0,07
Hamster 0,02
Chien 0,91

Chaque numéro dans la sortie correspond à une étiquette dans les données d'entraînement. En associant le résultat 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 comportant plusieurs classes (voir Softmax pour plus d'informations).

Des résultats ambigus

Étant donné que la somme des probabilités de sortie sera toujours égale à 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 entre les étiquettes sans qu'aucune valeur ne soit significativement plus grande.

Par exemple, ce qui suit peut 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 modèle

TensorFlow Lite vous propose 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 modèle le mieux adapté à votre cas d'utilisation, vous devez prendre en compte les architectures individuelles ainsi que certains compromis entre les différents modèles. Certains de ces compromis de modèle sont basés sur des mesures 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 codes-barres, tandis que vous préférerez peut-être 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 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 . 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'objets )
  • Prédire la composition d'une image, par exemple sujet par rapport à l'arrière-plan (voir Segmentation )
Une fois que le modèle de démarrage est exécuté 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é-entraînés fournis sont formés pour reconnaître 1 000 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 recycler 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 qu'il fasse la distinction entre différentes espèces d'arbres, même s'il n'y a aucun arbre dans les données d'entraînement d'origine. Pour ce faire, vous aurez besoin d'un ensemble d'images de formation pour chacune des nouvelles étiquettes que vous souhaitez former. Découvrez comment effectuer un apprentissage par transfert avec TFLite Model Maker ou dans l'atelier de programmation Reconnaître les fleurs avec TensorFlow .

Repères 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 court, 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). . Les performances des modèles MobileNet quantifiés TensorFlow Lite vont 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 Appareil NNAPI CPU
Mobilenet_V1_1.0_224_quant 4,3 Mo Pixel 3 (Android 10) 6 ms 13 ms*
Pixel 4 (Android 10) 3,3 ms 5 ms*
iPhone XS (iOS 12.4.1) 11 ms**

* 4 fils utilisés.

** 2 threads utilisés sur iPhone pour le meilleur résultat de performances.

Précision du modèle

La précision est mesurée en fonction de la 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 dans 60 % du temps en moyenne.

Les mesures de précision les plus pertinentes sont Top-1 et Top-5. Top-1 fait référence à la fréquence à laquelle l'étiquette correcte apparaît comme étant l'étiquette ayant 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 :