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.
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:
- Android – Exemple de code – Guide
- Python – Exemple de code – Guide
- Web – 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 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:
|
L'outil Image Embedder génère une liste d'embeddings composée des éléments suivants:
|
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 |