Guide des tâches de détection d'objets

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.

Essayer

Commencer

Commencez à utiliser cette tâche en suivant l'un des guides d'implémentation suivants pour la plate-forme sur laquelle vous travaillez:

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 :
  • Images fixes
  • Images vidéo décodées
  • Flux vidéo en direct
L'API Object Detector génère les résultats suivants pour les objets détectés :
  • Catégorie d'objet
  • Score de probabilité
  • Coordonnées du cadre de délimitation

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.

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