Guide des tâches de classification d'images

Un animal correctement identifié comme un flamant rose avec un niveau de confiance de 95 %

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.

Essayez !

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:

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:
  • Images fixes
  • Images vidéo décodées
  • Flux vidéo en direct
Le classificateur d'images génère une liste de catégories contenant:
  • Indice de catégorie: indice de la catégorie dans les sorties du modèle
  • Score: score de confiance de cette catégorie, généralement une probabilité comprise entre 0 et 1
  • Nom de la catégorie (facultatif): nom de la catégorie tel qu'il est spécifié dans les métadonnées du modèle TFLite, le cas échéant
  • Nom à afficher de la catégorie (facultatif): nom à afficher de la catégorie, tel que spécifié dans les métadonnées du modèle TFLite, dans la langue spécifiée via les options de paramètres régionaux des noms à afficher, le cas échéant

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.

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.