Guide des tâches d'intégration d'images

Deux exemples d'images de cônes glacés incluant les représentations vectorielles continues numériques des images sous forme de tableaux

La tâche MediaPipe Image Embedder vous permet de créer une représentation numérique d'une image, ce qui est utile pour effectuer diverses tâches d'image basées sur le ML. Cette fonctionnalité est fréquemment utilisée pour comparer la similarité de deux images à l'aide de techniques de comparaison mathématique telles que la similarité cosinus. 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 produit une représentation numérique des données d'image sous la forme d'une liste de vecteurs de caractéristiques haute dimension, également appelés vecteurs d'embedding, sous forme à virgule flottante ou quantique.

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 de manière basique 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 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 des images.
  • Zone d'intérêt : effectue l'embedding sur une zone de l'image plutôt que sur l'image entière.
  • Calcul de la similarité d'embedding : fonction utilitaire intégrée permettant de calculer la similarité cosinus entre deux vecteurs de caractéristiques
  • Quantification : compatible avec la quantification scalaire des vecteurs de caractéristiques.
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
L'outil Image Embedder génère une liste d'embeddings composée des éléments suivants:
  • Embedding: vecteur de caractéristiques lui-même, sous forme à virgule flottante ou quantifié de manière scalaire.
  • Indice de tête: indice de la tête qui a généré cet embedding.
  • Nom de la tête (facultatif): nom de la tête qui a produit cet entraînement.

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
l2_normalize Indique si le vecteur de caractéristiques renvoyé doit être normalisé avec la norme L2. N'utilisez cette option que si le modèle ne contient pas déjà une opération TFLite L2_NORMALIZATION native. Dans la plupart des cas, c'est déjà le cas, et la normalisation L2 est donc obtenue via l'inférence TFLite sans avoir besoin de cette option. Boolean False
quantize Indique si l'embedding renvoyé doit être quantifié en octets via une quantification scalaire. Les représentations vectorielles continues sont implicitement supposées avoir une norme unitaire. Par conséquent, toute dimension a une valeur comprise dans la plage [-1,0, 1,0]. Utilisez l'option l2_normalize si ce n'est pas le cas. Boolean False
result_callback Définit l'écouteur de résultats pour qu'il reçoive les résultats d'intégration de manière asynchrone lorsque l'outil d'intégration d'images est en mode diffusion 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

L'outil Image Embedder nécessite que vous téléchargiez et stockiez un modèle d'embedding d'image 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 MobileNetV3

Cette famille de modèles utilise une architecture MobileNet V3 et a été entraînée à l'aide de données ImageNet. Ce modèle utilise un multiplicateur de 0,75 pour la profondeur (nombre de caractéristiques) dans les couches convolutives afin d'ajuster le compromis précision-latence. De plus, MobileNet V3 se décline en deux tailles différentes, petite et grande, pour adapter le réseau aux cas d'utilisation des ressources faibles ou élevées.

Nom du modèle Forme d'entrée Type de quantification Versions
MobileNet-V3 (petit) 224 x 224 Aucun (float32) Nouveautés
MobileNet-V3 (large) 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
MobileNet-V3 (petit) 3,94 ms 7,83 ms
MobileNet-V3 (large) 9,75 ms 9,08 ms