La tâche "Classificateur d'images MediaPipe" vous permet de classer des images. Vous pouvez utiliser cette tâche pour identifier ce qu'une image représente parmi un ensemble de catégories définies au moment de l'entraînement. Cette tâche fonctionne sur des données d'image avec un modèle de machine learning (ML) en tant que données statiques ou flux continu, et génère une liste de catégories potentielles classées par score de probabilité décroissant.
Premiers pas
Pour commencer à utiliser cette tâche, suivez l'un de ces guides d'implémentation pour votre plate-forme cible. Ces guides spécifiques à la plate-forme vous expliquent comment implémenter cette tâche de manière basique à 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 fonctionnalités, les entrées, les sorties et les options de configuration de cette tâche.
Fonctionnalités
- Traitement des images d'entrée : le traitement comprend la rotation, le redimensionnement, la normalisation et la conversion d'espaces colorimétriques.
- Zone d'intérêt : effectuez la classification sur une zone de l'image plutôt que sur l'image entière.
- Localisation de la carte des libellés : définissez la langue utilisée pour les noms à afficher.
- Seuil de score : filtrez les résultats en fonction des scores de prédiction.
- Classification des k premiers : limite le nombre de résultats de classification.
- Liste d'autorisation et de refus des libellés : spécifiez les catégories classées.
Entrées de tâche | Sorties de tâche |
---|---|
L'entrée peut être 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 propose 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 des images décodées d'une vidéo. LIVE_STREAM: mode de diffusion en direct des données d'entrée, par exemple à partir 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 libellés localisés aux métadonnées d'un modèle personnalisé à l'aide de l'API TensorFlow Lite Metadata Writer. |
Code de paramètres régionaux | en |
max_results |
Définit le nombre maximal facultatif de résultats de classification les plus élevés à renvoyer. Si la valeur est inférieure à 0, tous les résultats disponibles sont renvoyés. | N'importe quel 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 rejetés. | N'importe quelle superposition | Non défini |
category_allowlist |
Définit la liste facultative des noms de catégories autorisés. Si cet ensemble n'est pas vide, les résultats de classification dont le nom de catégorie ne figure pas dans cet ensemble seront filtrés. Les noms de catégories en double ou inconnus sont ignorés.
Cette option s'exclut mutuellement avec category_denylist . L'utilisation des deux entraîne une erreur. |
Toutes les chaînes | Non défini |
category_denylist |
Définit la liste facultative des noms de catégories non autorisés. Si cet ensemble n'est pas vide, les résultats de classification dont le nom de catégorie figure dans cet ensemble seront filtrés. Les noms de catégories 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éfini |
result_callback |
Définit l'écouteur de résultats pour qu'il reçoive les résultats de classification de manière asynchrone lorsque le classificateur d'images est en mode streaming en direct. Ne peut être utilisé que lorsque le mode d'exécution est défini sur LIVE_STREAM . |
N/A | Non défini |
Modèles
Le classificateur d'images nécessite que vous téléchargiez et stockiez un modèle de classification d'images dans le répertoire de votre projet. Lorsque vous commencez à développer avec cette tâche, commencez par le modèle par défaut recommandé pour votre plate-forme cible. Les autres modèles disponibles font généralement des compromis entre les performances, la précision, la résolution et les exigences en termes de ressources, et incluent parfois des fonctionnalités supplémentaires.
Modèle EfficientNet-Lite0 (recommandé)
Le modèle EfficientNet-Lite0 utilise une architecture EfficientNet et a été entraîné à l'aide d'ImageNet pour reconnaître 1 000 classes,telles que les arbres, les animaux, les aliments, les véhicules, les personnes, etc. Consultez la liste complète des libellés compatibles. EfficientNet-Lite0 est disponible en tant que modèle int8 et float 32. Ce modèle est recommandé, car il établit un équilibre entre la latence et la précision. Il est à la fois précis et suffisamment léger pour de nombreux cas d'utilisation.
Nom du modèle | Forme d'entrée | Type de quantification | Versions |
---|---|---|---|
EfficientNet-Lite0 (int8) | 224 x 224 | int8 | Nouveautés |
EfficientNet-Lite0 (float 32) | 224 x 224 | Aucun (float32) | Nouveautés |
Modèle EfficientNet-Lite2
Le modèle EfficientNet-Lite2 utilise une architecture EfficientNet et a été entraîné à l'aide d'ImageNet pour reconnaître 1 000 classes,telles que les arbres, les animaux, les aliments, les véhicules, les personnes, etc. Consultez la liste complète des libellés compatibles. EfficientNet-Lite2 est disponible en tant que modèle int8 et float 32. Ce modèle est généralement plus précis qu'EfficientNet-Lite0, mais il est également plus lent et plus gourmand en mémoire. Ce modèle est adapté aux cas d'utilisation où la précision est prioritaire par rapport à la vitesse ou à la taille.
Nom du modèle | Forme d'entrée | Type de quantification | Versions |
---|---|---|---|
EfficientNet-Lite2 (int8) | 224 x 224 | int8 | Nouveautés |
EfficientNet-Lite2 (float 32) | 224 x 224 | Aucun (float32) | Nouveautés |
Benchmarks des tâches
Voici les benchmarks de tâche pour l'ensemble du pipeline basés sur les modèles pré-entraînés ci-dessus. Le résultat de la latence correspond à la latence moyenne sur le Pixel 6 à l'aide du processeur / GPU.
Nom du modèle | Latence du processeur | Latence du GPU |
---|---|---|
EfficientNet-Lite0 (float 32) | 23,52 ms | 18,90 ms |
EfficientNet-Lite0 (int8) | 10,08 ms | - |
EfficientNet-Lite2 (float 32) | 44,17 ms | 22,20 ms |
EfficientNet-Lite2 (int8) | 19,43 ms | - |
Modèles personnalisés
Vous pouvez utiliser un modèle de ML personnalisé avec cette tâche si vous souhaitez améliorer ou modifier les fonctionnalités des modèles fournis. Vous pouvez utiliser Model Maker pour modifier les modèles existants ou en créer un à l'aide d'outils tels que TensorFlow. Les modèles personnalisés utilisés avec MediaPipe doivent être au format TensorFlow Lite et doivent inclure des metadata 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 classifieur d'images personnalisé à l'aide de votre propre ensemble de données, commencez par le tutoriel sur la personnalisation du classifieur d'images.