Guide des tâches de classification d'images

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.

Essayer

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:

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:
  • 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:
  • Index de catégorie: index de la catégorie dans les sorties du modèle.
  • Score: le score de confiance de cette catégorie, généralement une probabilité entre [0,1]
  • Nom de la catégorie (facultatif): nom de la catégorie, tel que spécifié dans les métadonnées du modèle TFLite, le cas échéant
  • Nom à afficher de la catégorie (facultatif): nom à afficher pour 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 régionales des noms à afficher, le cas échéant

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.

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.