La tâche de détecteur d'objets MediaPipe vous permet de détecter la présence et l'emplacement de plusieurs classes d'objets dans des images ou des vidéos. Par exemple, un détecteur d'objets peut localiser des chiens dans une image. Cette tâche traite des données d'image avec un modèle de machine learning (ML), qui accepte des données statiques ou un flux vidéo continu en tant qu'entrée et génère une liste de résultats de détection. Chaque résultat de détection représente un objet qui apparaît dans l'image ou la vidéo.
Commencer
Commencez à utiliser cette tâche en suivant l'un des guides d'implémentation suivants pour la plate-forme sur laquelle vous travaillez:
- Android – Exemple de code – Guide
- Python – Exemple de code – Guide
- Web – Exemple de code – Guide
- iOS – Exemple de code – Guide
Ces guides spécifiques à la plate-forme vous guident tout au long de l'implémentation de base de cette tâche, avec un modèle et un exemple de code recommandés, ainsi que des options de configuration recommandées.
Détails de la tâche
Cette section décrit les capacités, les entrées et les sorties 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.
- Paramètres régionaux de la carte des libellés : permet de définir la langue à utiliser pour les noms à afficher.
- Seuil de score : filtre les résultats en fonction des scores de prédiction.
- Top-k Detection (Détection des top-k) : filtre les résultats de la détection de numéros.
- Liste d'autorisation et liste de blocage de libellés : spécifiez les catégories détectées.
Entrées des tâches | Sorties de tâches |
---|---|
L'API Object Detector accepte les entrées de l'un des types de données suivants :
|
L'API Object Detector génère les résultats suivants pour les objets détectés :
|
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 |
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 détection les mieux notés à renvoyer. | Tout nombre positif | -1 (tous les résultats sont renvoyés) |
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 détection dont le nom de catégorie ne figure pas 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_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 détection 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 |
Modèles
L'API Object Detector nécessite le téléchargement et le stockage d'un modèle de détection d'objets dans le répertoire de votre projet. Si vous ne disposez pas encore d'un modèle, commencez par le modèle recommandé par défaut. Les autres modèles présentés dans cette section font des compromis entre latence et précision.
Modèle EffectiveDet-Lite0 (recommandé)
Le modèle EffectiveDet-Lite0 utilise un réseau backbone EffectiveNet-Lite0 avec une taille d'entrée de 320 x 320 et un réseau de caractéristiques BiFPN. Le modèle a été entraîné avec l'ensemble de données COCO, un ensemble de données de détection d'objets à grande échelle contenant 1,5 million d'instances d'objets et 80 étiquettes d'objets. Consultez la liste complète des étiquettes acceptées. EffectiveDet-Lite0 est disponible en tant que valeur int8, float16 ou float32. 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 |
---|---|---|---|
EffectiveDet-Lite0 (int8) | 320 x 320 | int8 | Les plus récents |
EffectiveDet-Lite0 (float 16) | 320 x 320 | nombre décimal 16 | Les plus récents |
EffectiveDet-Lite0 (float 32) | 320 x 320 | Aucune (float32) | Les plus récents |
Modèle EffectiveDet-Lite2
Le modèle EffectiveDet-Lite2 utilise un réseau backbone EffectiveNet-Lite2 avec une taille d'entrée de 448 x 448 et un réseau de caractéristiques BiFPN. Le modèle a été entraîné avec l'ensemble de données COCO, un ensemble de données de détection d'objets à grande échelle contenant 1,5 million d'instances d'objets et 80 étiquettes d'objets. Consultez la liste complète des étiquettes acceptées. EffectiveDet-Lite2 est disponible sous forme de modèle int8, float16 ou float32. Ce modèle est généralement plus précis que EffectiveDet-Lite0, mais il est également plus lent et plus gourmand en mémoire. Ce modèle convient aux cas d'utilisation où la précision prime sur la vitesse et la taille.
Nom du modèle | Forme de saisie | Type de quantification | Versions |
---|---|---|---|
EffectiveDet-Lite2 (int8) | 448 x 448 | int8 | Les plus récents |
EffectiveDet-Lite2 (float 16) | 448 x 448 | nombre décimal 16 | Les plus récents |
EffectiveDet-Lite2 (float 32) | 448 x 448 | Aucune (float32) | Les plus récents |
Modèle MobileNetV2 SSD
Le modèle MobileNetV2 SSD utilise un réseau backbone MobileNetV2 avec une taille d'entrée de 256 x 256 et un réseau de fonctionnalités SSD. Le modèle a été entraîné avec l'ensemble de données COCO, un ensemble de données de détection d'objets à grande échelle contenant 1,5 million d'instances d'objets et 80 étiquettes d'objets. Consultez la liste complète des étiquettes acceptées. SSD MobileNetV2 est disponible sous la forme d'un modèle int8 et float 32. Ce modèle est plus rapide et plus léger que EffectiveDet-Lite0, mais il est généralement moins précis. Ce modèle convient aux cas d'utilisation nécessitant un modèle rapide et léger qui sacrifie la précision.
Nom du modèle | Forme de saisie | Type de quantification | Versions |
---|---|---|---|
SSDMobileNet-V2 (int8) | 256 x 256 | int8 | Les plus récents |
SSDMobileNet-V2 (float 32) | 256 x 256 | Aucune (float32) | Les plus récents |
Exigences et métadonnées du modèle
Cette section décrit les exigences relatives aux modèles personnalisés si vous décidez de créer un modèle à utiliser pour cette tâche. Les modèles personnalisés doivent être au format TensorFlow Lite et inclure des métadonnées décrivant les paramètres de fonctionnement du modèle.
Exigences de conception
Entrée | Forme | Description |
---|---|---|
Image d'entrée | Tensor Float32 de forme[1, height, width, 3] | Image d'entrée normalisée. |
Résultat | Forme | Description |
---|---|---|
detection_boxes |
Tensor Float32 de forme [1, num_boxes, 4] | Emplacement de la case de chaque objet détecté. |
detection_classes |
Tensor Float32 de forme [1, num_boxes] | Index des noms de classe pour chaque objet détecté. |
detection_scores |
Tensor float32 de forme [1, num_boxes] | Scores de prédiction pour chaque objet détecté. |
num_boxes |
Tensor Float32 de taille 1 | Nombre de cadres détectés. |
Exigences concernant les métadonnées
Paramètres | Description | Description |
---|---|---|
input_norm_mean |
Valeur moyenne utilisée dans la normalisation du Tensor d'entrée. | Image d'entrée normalisée. |
input_norm_std |
Norme de champ utilisée dans la normalisation du Tensor d'entrée. | Emplacement de la case de chaque objet détecté. |
label_file_paths |
Chemins d'accès aux fichiers d'étiquettes du Tensor de catégorie. Si le modèle ne comporte aucun fichier d'étiquette, transmettez une liste vide. | Index des noms de classe pour chaque objet détecté. |
score_calibration_md |
Informations sur l'opération d'étalonnage du score dans le Tensor de classification. Ce paramètre n'est pas obligatoire si le modèle n'utilise pas le calibrage du score. |
Scores de prédiction pour chaque objet détecté. |
num_boxes |
Tensor Float32 de taille 1 | Nombre de cadres détectés. |
Benchmarks de tâches
Voici les benchmarks de tâches pour les modèles pré-entraînés ci-dessus. Le résultat correspond à la latence moyenne sur le Pixel 6 en utilisant le processeur / le GPU.
Nom du modèle | Latence du processeur | Latence du GPU |
---|---|---|
Modèle float32 EffectiveDet-Lite0 | 61,30 ms | 27,83 ms |
Modèle float16 EffectiveDet-Lite0 | 53,97 ms | 27,97 ms |
Modèle int8 d'EffectiveDet-Lite0 | 29,31 ms | - |
Modèle float32 EffectiveDet-Lite2 | 197,98 ms | 41,15 ms |
Modèle float16 EffectiveDet-Lite2 | 198,77 ms | 47,31 ms |
Modèle Int8 EffectiveDet-Lite2 | 70,91 ms | - |
Modèle SSD MobileNetV2 float32 | 36,30 ms | 24,01 ms |
Modèle SSD MobileNetV2 float16 | 37,35 ms | 28,16 ms |