Guide de segmentation d'image

Exemples côte à côte d'une photo en gros plan d'un homme à côté du masque d'image qui dessine sa silhouette

La tâche de segmentation d'image MediaPipe vous permet de diviser les images en régions en fonction de catégories prédéfinies. Vous pouvez utiliser cette fonctionnalité pour identifier des objets ou des textures spécifiques, puis appliquer des effets visuels tels que le floutage de l'arrière-plan. Cette tâche inclut plusieurs modèles spécialement entraînés pour segmenter les personnes et leurs caractéristiques dans les données d'image, y compris:

  • Personne et arrière-plan
  • Cheveux de la personne uniquement
  • Cheveux, visage, peau, vêtements et accessoires d'une personne

Cette tâche fonctionne sur des données d'image avec un modèle de machine learning (ML) avec des images uniques ou un flux vidéo continu. Il génère une liste de régions segmentées, représentant des objets ou des zones d'une image, en fonction du modèle que vous choisissez.

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, y compris un modèle recommandé et un exemple 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.
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
Le segmenteur d'images génère des données d'image segmentées, qui peuvent inclure l'un ou les deux des éléments suivants, en fonction des options de configuration que vous définissez :
  • CATEGORY_MASK: liste contenant un masque segmenté au format uint8. Chaque valeur de pixel indique s'il fait partie d'une catégorie de segment spécifique compatible avec le modèle.
  • CONFIDENCE_MASK: liste de canaux contenant un masque segmenté avec des valeurs de pixel au format float32. Chaque valeur de pixel indique le niveau de confiance qu'il fait partie d'une catégorie spécifique prise en charge par le modèle.

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
output_category_mask Si la valeur est définie sur True, la sortie inclut un masque de segmentation sous la forme d'une image uint8, où chaque valeur de pixel indique la valeur de la catégorie gagnante. {True, False} False
output_confidence_masks Si la valeur est définie sur True, la sortie inclut un masque de segmentation sous la forme d'une image de valeur flottante, où chaque valeur flottante représente la carte de score de confiance de la catégorie. {True, False} True
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 libellés localisés aux métadonnées d'un modèle personnalisé à l'aide de l'API TensorFlow Lite Metadata Writer. Code de paramètres régionaux en
result_callback Définit l'écouteur de résultats pour qu'il reçoive les résultats de segmentation de manière asynchrone lorsque le segmenteur d'images est en mode LIVE_STREAM. Ne peut être utilisé que lorsque le mode d'exécution est défini sur LIVE_STREAM. N/A N/A

Modèles

Le segmenteur d'images peut être utilisé avec plusieurs modèles de ML. La plupart des modèles de segmentation suivants sont créés et entraînés pour effectuer une segmentation avec des images de personnes. Toutefois, le modèle DeepLab-v3 est conçu comme un segmenteur d'images à usage général. Sélectionnez le modèle qui convient le mieux à votre application.

Modèle de segmentation des selfies

Ce modèle peut segmenter le portrait d'une personne et peut être utilisé pour remplacer ou modifier l'arrière-plan d'une image. Le modèle produit deux catégories : l'arrière-plan à l'indice 0 et la personne à l'indice 1. Ce modèle comporte des versions avec différentes formes d'entrée, y compris une version carrée et une version paysage, qui peuvent être plus efficaces pour les applications où l'entrée est toujours de cette forme, comme les appels vidéo.

Nom du modèle Forme d'entrée Type de quantification Fiche de modèle Versions
SelfieSegmenter (carré) 256 x 256 float 16 info Nouveautés
SelfieSegmenter (paysage) 144 x 256 float 16 info Nouveautés

Modèle de segmentation des cheveux

Ce modèle prend une image d'une personne, localise les cheveux sur sa tête et génère une carte de segmentation d'image pour ses cheveux. Vous pouvez utiliser ce modèle pour recolorer les cheveux ou appliquer d'autres effets capillaires. Le modèle génère les catégories de segmentation suivantes:

0 - background
1 - hair
Nom du modèle Forme d'entrée Type de quantification Fiche de modèle Versions
HairSegmenter 512 x 512 Aucun (float32) info Nouveautés

Modèle de segmentation des selfies à classes multiples

Ce modèle prend une image d'une personne, identifie différentes zones telles que les cheveux, la peau et les vêtements, puis génère une carte de segmentation d'image pour ces éléments. Vous pouvez utiliser ce modèle pour appliquer différents effets aux personnes sur des images ou des vidéos. Le modèle génère les catégories de segmentation suivantes:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
Nom du modèle Forme d'entrée Type de quantification Fiche de modèle Versions
SelfieMulticlass (256 x 256) 256 x 256 Aucun (float32) info Nouveautés

Modèle DeepLab-v3

Ce modèle identifie des segments pour un certain nombre de catégories, y compris l'arrière-plan, la personne, le chat, le chien et la plante en pot. Le modèle utilise la pooling atrouse des pyramides spatiales pour capturer des informations à plus longue portée. Pour en savoir plus, consultez DeepLab-v3.

Nom du modèle Forme d'entrée Type de quantification Versions
DeepLab-V3 257 x 257 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
SelfieSegmenter (carré) 33,46 ms 35,15 ms
SelfieSegmenter (paysage) 34,19 ms 33,55 ms
HairSegmenter 57,90 ms 52,14 ms
SelfieMulticlass (256 x 256) 217,76 ms 71,24 ms
DeepLab-V3 123,93 ms 103,30 ms