La tâche de classificateur d'images MediaPipe vous permet d'effectuer une classification d'images. Vous pouvez utiliser cette tâche pour identifier ce que représente une image parmi un ensemble de catégories définies au moment de l'entraînement. Cette tâche s'applique à des données d'image avec un modèle de machine learning (ML) sous forme de données statiques ou de flux continu. Elle génère une liste de catégories potentielles classées par score de probabilité décroissant.
Commencer
Commencez à utiliser cette tâche en suivant l'un de ces guides d'implémentation pour votre plate-forme cible. Ces guides spécifiques à la plate-forme vous guident tout au long d'une implémentation de base de cette tâche, à l'aide d'un modèle recommandé, et fournissent des exemples de code avec les options de configuration recommandées:
- Android – Exemple de code – Guide
- Python – Exemple de code – Guide
- Web – Exemple de code – Guide
- iOS – Exemple de code – Guide
Détails de la tâche
Cette section décrit les capacités, les entrées, les sorties et les options de configuration de cette tâche.
Caractéristiques
- Traitement de l'image d'entrée : le traitement comprend la rotation, le redimensionnement, la normalisation et la conversion de l'espace colorimétrique.
- Région d'intérêt : effectuez une classification sur une région de l'image plutôt que sur l'ensemble de l'image.
- Paramètres régionaux de la carte des libellés : définissez la langue à utiliser pour les noms à afficher.
- Seuil de score : filtre les résultats en fonction des scores de prédiction.
- Classification top-k : limitez le nombre de résultats de classification.
- Liste d'autorisation et liste de blocage de libellés : spécifiez les catégories classées.
Entrées des tâches | Sorties de tâches |
---|---|
Vous pouvez saisir l'un des types de données suivants:
|
Le classificateur d'images génère une liste de catégories contenant:
|
Options de configuration
Cette tâche comporte les options de configuration suivantes:
Nom de l'option | Description | Plage de valeurs | Valeur par défaut |
---|---|---|---|
running_mode |
Définit le mode d'exécution de la tâche. Il existe trois modes: IMAGE: mode pour les entrées d'une seule image. VIDEO: mode pour les images décodées d'une vidéo. LIVE_STREAM: mode de diffusion en direct de données d'entrée, issues par exemple d'une caméra. Dans ce mode, resultListener doit être appelé pour configurer un écouteur afin de recevoir les résultats de manière asynchrone. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names_locale |
Définit la langue des libellés à utiliser pour les noms à afficher fournis dans les métadonnées du modèle de la tâche, le cas échéant. La valeur par défaut est en pour l'anglais. Vous pouvez ajouter des thèmes localisés aux métadonnées d'un modèle personnalisé à l'aide de l'API TensorFlow Lite Metadata Writer. |
Code des paramètres régionaux | en |
max_results |
Définit le nombre maximal (facultatif) de résultats de classification les mieux notés à renvoyer. Si la valeur est inférieure à 0, tous les résultats disponibles sont renvoyés. | Tout nombre positif | -1 |
score_threshold |
Définit le seuil de score de prédiction qui remplace celui fourni dans les métadonnées du modèle (le cas échéant). Les résultats inférieurs à cette valeur sont refusés. | N'importe quelle valeur flottante | Non définie |
category_allowlist |
Définit la liste facultative des noms de catégories autorisés. S'ils ne sont pas vides, les résultats de classification dont le nom de catégorie ne figure pas dans cet ensemble sont filtrés. Les noms de catégorie en double ou inconnus sont ignorés.
Cette option s'exclut mutuellement avec category_denylist . L'utilisation des deux résultats génère une erreur. |
N'importe quelle chaîne | Non définie |
category_denylist |
Définit la liste facultative des noms de catégorie qui ne sont pas autorisés. S'ils ne sont pas vides, les résultats de classification dont le nom de catégorie figure dans cet ensemble seront filtrés. Les noms de catégorie en double ou inconnus sont ignorés. Cette option s'exclut mutuellement avec category_allowlist . L'utilisation des deux entraîne une erreur. |
N'importe quelle chaîne | Non définie |
result_callback |
Définit l'écouteur de résultats pour recevoir les résultats de la classification de manière asynchrone lorsque le classificateur d'images est en mode de diffusion en direct. Ne peut être utilisé que lorsque le mode En cours d'exécution est défini sur LIVE_STREAM |
N/A | Non définie |
Modèles
Le classificateur d'images nécessite le téléchargement et le stockage d'un modèle de classification d'images dans le répertoire de votre projet. Commencez avec le modèle par défaut recommandé pour votre plate-forme cible lorsque vous commencez à développer avec cette tâche. Les autres modèles disponibles font généralement des compromis entre les exigences en termes de performances, de précision, de résolution et de ressources, et incluent, dans certains cas, des fonctionnalités supplémentaires.
Modèle EffectiveNet-Lite0 (recommandé)
Le modèle EffectiveNet-Lite0 utilise une architecture EffectiveNet et a été entraîné à l'aide d'ImageNet pour reconnaître 1 000 classes,telles que les arbres, les animaux, la nourriture, les véhicules, les personnes, etc. Consultez la liste complète des étiquettes acceptées. EffectiveNet-Lite0 est disponible sous la forme de modèles int8 et float 32. Ce modèle est recommandé, car il offre un bon compromis entre latence et justesse. Il est à la fois précis et léger pour de nombreux cas d'utilisation.
Nom du modèle | Forme de saisie | Type de quantification | Versions |
---|---|---|---|
EffectiveNet-Lite0 (int8) | 224 x 224 | int8 | Les plus récents |
EffectiveNet-Lite0 (float 32) | 224 x 224 | Aucune (float32) | Les plus récents |
Modèle EffectiveNet-Lite2
Le modèle EffectiveNet-Lite2 utilise une architecture EffectiveNet et a été entraîné à l'aide d'ImageNet pour reconnaître 1 000 classes,telles que les arbres, les animaux, la nourriture, les véhicules, les personnes, etc. Consultez la liste complète des étiquettes acceptées. EffectiveNet-Lite2 est disponible sous la forme de modèles int8 et float 32. Ce modèle est généralement plus précis que EffectiveNet-Lite0, mais il est également plus lent et plus gourmand en mémoire. Ce modèle convient aux cas d'utilisation dans lesquels la précision est une priorité plus élevée que la vitesse ou la taille.
Nom du modèle | Forme de saisie | Type de quantification | Versions |
---|---|---|---|
EffectiveNet-Lite2 (int8) | 224 x 224 | int8 | Les plus récents |
EffectiveNet-Lite2 (float 32) | 224 x 224 | Aucune (float32) | Les plus récents |
Benchmarks de tâches
Voici les benchmarks de tâches pour l'ensemble du pipeline, sur la base des modèles pré-entraînés ci-dessus. Le résultat correspond à la latence moyenne sur le Pixel 6 en utilisant le processeur / GPU.
Nom du modèle | Latence du processeur | Latence du GPU |
---|---|---|
EffectiveNet-Lite0 (float 32) | 23,52 ms | 18,90 ms |
EffectiveNet-Lite0 (int8) | 10,08 ms | - |
EffectiveNet-Lite2 (float 32) | 44,17 ms | 22,20 ms |
EffectiveNet-Lite2 (int8) | 19,43 ms | - |
Modèles personnalisés
Vous pouvez utiliser un modèle de ML personnalisé pour cette tâche si vous souhaitez améliorer ou modifier les fonctionnalités des modèles fournis. Vous pouvez utiliser Model Maker pour modifier des modèles existants ou créer un modèle à l'aide d'outils tels que TensorFlow. Les modèles personnalisés utilisés avec MediaPipe doivent être au format TensorFlow Lite et inclure des métadonnées spécifiques décrivant les paramètres de fonctionnement du modèle. Nous vous conseillons d'utiliser Model Maker pour modifier les modèles fournis pour cette tâche avant de créer les vôtres.
Si vous souhaitez créer un classificateur d'images personnalisé à l'aide de votre propre ensemble de données, commencez par le tutoriel Personnaliser le classificateur d'images.