La tâche de segmentation d'image interactive MediaPipe prend un emplacement dans une image, estime les limites d'un objet à cet emplacement et renvoie la segmentation de l'objet sous forme de données d'image. Ces instructions vous expliquent comment utiliser le segmenteur d'images interactif avec le langage Python. Pour en savoir plus sur les fonctionnalités, les modèles et les options de configuration de cette tâche, consultez la section Présentation.
Exemple de code
L'exemple de code du segmenteur d'images interactif fournit une implémentation complète de cette tâche en Python pour référence. Ce code vous aide à tester cette tâche et à commencer à créer votre propre application de segmentation d'images interactive. Vous pouvez afficher, exécuter et modifier l'exemple de code du segmenteur d'images interactif à l'aide de votre navigateur Web.
Configuration
Cette section décrit les étapes clés à suivre pour configurer votre environnement de développement et vos projets de code spécifiquement pour utiliser le segmenteur d'images interactif. Pour en savoir plus sur la configuration de votre environnement de développement afin d'utiliser les tâches MediaPipe, y compris les exigences concernant les versions de la plate-forme, consultez le guide de configuration pour Python. Vous pouvez consulter le code source de cet exemple sur GitHub.
Colis
La tâche de segmentation d'image interactive MediaPipe nécessite le package mediapipe
. Vous pouvez installer les dépendances requises à l'aide de la commande suivante:
$ python -m pip install mediapipe
Importations
Importez les classes suivantes pour accéder aux fonctions de tâche du segmenteur d'images interactif:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
Modèle
La tâche de segmentation d'images interactive MediaPipe nécessite un modèle entraîné compatible avec cette tâche. Pour en savoir plus sur les modèles entraînés disponibles pour le segmenteur d'images interactif, consultez la section Modèles de la présentation de la tâche.
Sélectionnez et téléchargez le modèle, puis stockez-le dans le répertoire de votre projet:
model_path = '/absolute/path/to/model.tflite'
Spécifiez le chemin d'accès au modèle dans le paramètre model_asset_path
, comme indiqué ci-dessous:
base_options = BaseOptions(model_asset_path=model_path)
Créer la tâche
La tâche de segmentation d'image interactive MediaPipe utilise la fonction create_from_options
pour configurer la tâche. La fonction create_from_options
accepte les valeurs que les options de configuration doivent gérer. Pour en savoir plus sur les options de configuration, consultez la section Options de configuration.
Le code suivant montre comment créer et configurer cette tâche.
BaseOptions = mp.tasks.BaseOptions InteractiveSegmenter = mp.tasks.vision.InteractiveSegmenter InteractiveSegmenterOptions = mp.tasks.vision.InteractiveSegmenterOptions VisionRunningMode = mp.tasks.vision.RunningMode # Create a image segmenter instance with the image mode: options = InteractiveSegmenterOptions( base_options=BaseOptions(model_asset_path='/path/to/model.task'), running_mode=VisionRunningMode.IMAGE, output_type=InteractiveSegmenterOptions.OutputType.CATEGORY_MASK) with InteractiveSegmenter.create_from_options(options) as segmenter: # segmenter is initialized and ready to use
Options de configuration
Cette tâche propose les options de configuration suivantes pour les applications Python:
Nom de l'option | Description | Plage de valeurs | Valeur par défaut |
---|---|---|---|
output_category_mask |
Si la valeur est True , la sortie inclut un masque de segmentation sous la forme d'une image uint8, où chaque valeur de pixel indique si le pixel fait partie de l'objet situé dans la zone d'intérêt. |
{True, False } |
False |
output_confidence_masks |
Si la valeur est True , la sortie inclut un masque de segmentation sous la forme d'une image de valeur flottante, où chaque valeur flottante représente la confiance que le pixel fait partie de l'objet situé dans la zone d'intérêt. |
{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 |
Préparer les données
Préparez votre entrée en tant que fichier image ou tableau numpy, puis convertissez-la en objet mediapipe.Image
.
# Load the input image from an image file. mp_image = mp.Image.create_from_file('/path/to/image') # Load the input image from a numpy array. mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_image)
Pour obtenir un exemple de code montrant la préparation des données pour le segmenteur d'images interactif, consultez l'exemple de code.
Exécuter la tâche
Le segmenteur d'images interactif utilise la fonction segment
pour déclencher des inférences. Pour la segmentation d'images, cela inclut le prétraitement des données d'entrée, l'exécution du modèle de segmentation et le posttraitement des sorties brutes du modèle dans les masques segmentés.
L'exemple de code suivant montre comment exécuter le traitement avec le modèle de tâche.
RegionOfInterest = vision.InteractiveSegmenterRegionOfInterest # Perform image segmentation on the provided single image. # The image segmenter must be created with the image mode. roi = RegionOfInterest(format=RegionOfInterest.Format.KEYPOINT, keypoint=NormalizedKeypoint(x, y)) segmented_masks = segmenter.segment(mp_image, roi)
Pour obtenir un exemple plus complet d'exécution d'inférences du segmenteur d'images interactif, consultez l'exemple de code.
Gérer et afficher les résultats
Les résultats de sortie du segmenteur d'images interactif sont une liste de données Image
et peuvent inclure un masque de catégorie, des masques de confiance ou les deux, en fonction de ce que vous avez défini lors de la configuration de la tâche. Si vous définissez output_category_mask
sur True
, la sortie est une liste contenant un masque segmenté unique sous la forme d'une image uint8. La valeur du pixel indique s'il fait partie de l'objet dans la zone d'intérêt. indice de catégorie reconnu de l'image d'entrée. Si vous définissez output_confidence_masks
sur True
, la sortie est une liste de canaux contenant des valeurs de pixel dans la plage [0,1]
représentant le score de confiance du pixel appartenant à l'objet dans la zone d'intérêt.
Les sections suivantes expliquent plus en détail les données de sortie de cette tâche:
Masque de catégorie
Les images suivantes montrent une visualisation de la sortie de la tâche pour un masque de valeur de catégorie avec une zone d'intérêt indiquée. Chaque pixel est une valeur uint8
indiquant si le pixel fait partie de l'objet situé dans la zone d'intérêt. Le cercle noir et blanc de la deuxième image indique la zone d'intérêt sélectionnée.
Image d'origine et sortie du masque de catégorie. Image source de l'ensemble de données Pascal VOC 2012.
Masque de confiance
La sortie d'un masque de confiance contient des valeurs flottantes comprises entre [0, 1]
pour chaque canal d'entrée d'image. Des valeurs plus élevées indiquent une plus grande confiance que le pixel de l'image fait partie de l'objet situé dans la zone d'intérêt.