Par défaut, les API de ML Kit utilisent des modèles de machine learning entraînés par Google. Ces modèles sont conçus pour couvrir un large éventail d'applications. Cependant, certains cas d'utilisation nécessitent des modèles plus ciblés. C'est pourquoi certaines API de ML Kit vous permettent désormais de remplacer les modèles par défaut par des modèles LiteRT personnalisés.
Les API Image Labeling et Object Detection & Tracking sont compatibles avec les modèles de classification d'images personnalisés. Elles sont compatibles avec une sélection de modèles pré-entraînés de haute qualité sur TensorFlow Hub ou avec votre propre modèle personnalisé entraîné avec TensorFlow ou AutoML.
Si vous avez besoin d'une solution personnalisée pour d'autres domaines ou cas d'utilisation, consultez la page Machine learning sur l'appareil pour obtenir des conseils sur toutes les solutions et tous les outils de Google pour le machine learning sur l'appareil.
Avantages de l'utilisation de ML Kit avec des modèles personnalisés
Voici les avantages de l'utilisation d'un modèle de classification d'images personnalisé avec ML Kit :
- API de haut niveau faciles à utiliser : vous n'avez pas besoin de gérer les entrées/sorties de modèle de bas niveau, de gérer le prétraitement/post-traitement des images ni de créer un pipeline de traitement.
- Vous n'avez pas besoin de vous soucier du mappage des libellés : ML Kit extrait les libellés des métadonnées du modèle LiteRT et effectue le mappage pour vous.
- Compatibilité avec les modèles personnalisés provenant d'un large éventail de sources, des modèles pré-entraînés publiés sur TensorFlow Hub aux nouveaux modèles entraînés avec TensorFlow ou AutoML.
- Optimisation pour l'intégration aux API Camera d'Android.
Et, plus précisément pour la détection et le suivi d'objets :
- Amélioration de la précision de la classification en localisant d'abord les objets et en n'exécutant le classificateur que sur la zone d'image associée.
- Expérience interactive en temps réel en fournissant à vos utilisateurs des commentaires immédiats sur les objets lorsqu'ils sont détectés et classés.
Utiliser un modèle de classification d'images pré-entraîné
Vous pouvez utiliser des modèles LiteRT pré-entraînés, à condition qu'ils répondent à un ensemble de critères. Sur TensorFlow Hub, nous proposons un ensemble de modèles validés (de Google ou d'autres créateurs de modèles) qui répondent à ces critères.
Utiliser un modèle publié sur TensorFlow Hub
TensorFlow Hub propose un large éventail de modèles de classification d'images pré-entraînés (de différents créateurs de modèles) qui peuvent être utilisés avec les API Image Labeling et Object Detection and Tracking. Procédez comme suit.
- Sélectionnez un modèle dans la collection de modèles compatibles avec ML Kit.
- Téléchargez le fichier de modèle .tflite à partir de la page d'informations sur le modèle. Si disponible, choisissez un format de modèle avec des métadonnées.
- Suivez nos guides pour l'API Image Labeling ou l'API Object Detection and Tracking afin de savoir comment regrouper le fichier de modèle avec votre projet et l'utiliser dans votre application Android ou iOS.
Entraîner votre propre modèle de classification d'images
Si aucun modèle de classification d'images pré-entraîné ne répond à vos besoins, vous pouvez entraîner votre propre modèle LiteRT de différentes manières. Certaines d'entre elles sont décrites et abordées plus en détail dans la section suivante.
| Options pour entraîner votre propre modèle de classification d'images | |
|---|---|
| AutoML |
|
| Convertir un modèle TensorFlow en LiteRT |
|
AutoML
Les modèles de classification d'images entraînés à l'aide de AutoML sont compatibles avec les modèles personnalisés des API Image Labeling et Object Detection and Tracking API. Ces API sont également compatibles avec le téléchargement de modèles hébergés avec Cloud Storage.
Pour savoir comment utiliser un modèle entraîné avec AutoML dans vos applications Android et iOS, suivez les guides sur les modèles personnalisés pour chaque API, en fonction de votre cas d'utilisation.
Modèles créés à l'aide du convertisseur LiteRT
Si vous disposez d'un modèle de classification d'images TensorFlow existant, vous pouvez le convertir à l'aide du convertisseur LiteRT. Assurez-vous que le modèle créé répond aux exigences de compatibilité suivantes.
Pour savoir comment utiliser un modèle LiteRT dans vos applications Android et iOS, suivez nos guides pour l'API Image Labeling ou l'API Object Detection and Tracking, en fonction de votre cas d'utilisation.
Compatibilité des modèles LiteRT
Vous pouvez utiliser n'importe quel modèle de classification d'images LiteRT pré-entraîné, à condition qu'il réponde aux exigences suivantes :
Tensors
- Le modèle ne doit comporter qu'un seul Tensor d'entrée avec les contraintes suivantes :
- Les données sont au format de pixel RVB.
- Les données sont de type UINT8 ou FLOAT32. Si le type de Tensor d'entrée est FLOAT32, il doit spécifier les NormalizationOptions en ajoutant des métadonnées.
- Le Tensor comporte quatre dimensions : BxHxWxC, où :
- B correspond à la taille du lot. Elle doit être égale à 1 (l'inférence sur des lots plus volumineux n'est pas acceptée).
- W et H correspondent à la largeur et à la hauteur d'entrée.
- C correspond au nombre de canaux attendus. Il doit être égal à 3.
- Le modèle doit comporter au moins un Tensor de sortie avec N classes et deux ou quatre dimensions :
- (1xN)
- (1x1x1xN)
- Seuls les modèles à tête unique sont entièrement compatibles. Les modèles à plusieurs têtes peuvent générer des résultats inattendus.
Métadonnées
Vous pouvez ajouter des métadonnées au fichier LiteRT, comme expliqué dans la section Ajouter des métadonnées aux modèles LiteRT.
Pour utiliser un modèle avec un Tensor d'entrée FLOAT32, vous devez spécifier les NormalizationOptions dans les métadonnées.
Nous vous recommandons également d'associer ces métadonnées au Tensor de sortie TensorMetadata :
- Un mappage de libellés spécifiant le nom de chaque classe de sortie, en tant que AssociatedFile de type TENSOR_AXIS_LABELS (sinon, seuls les index numériques de la classe de sortie peuvent être renvoyés)
- Un seuil de score par défaut en dessous duquel les résultats sont considérés comme trop peu fiables pour être renvoyés, en tant que ProcessUnit avec ScoreThresholdingOptions