Google I/O est terminé ! Suivez les sessions TensorFlow Afficher les sessions

Segmentation

La segmentation d'image est le processus de partitionnement d'une image numérique en plusieurs segments (ensembles de pixels, également appelés objets image). Le but de la segmentation est de simplifier et / ou de changer la représentation d'une image en quelque chose de plus significatif et plus facile à analyser.

L'image suivante montre la sortie du modèle de segmentation d'image sur Android. Le modèle créera un masque sur les objets cibles avec une grande précision.

Commencer

Si vous ne connaissez pas TensorFlow Lite et que vous travaillez avec Android ou iOS, il est recommandé d'explorer les exemples d'applications suivants qui peuvent vous aider à démarrer.

Vous pouvez tirer parti de l'API prête à l' emploi de la bibliothèque de tâches TensorFlow Lite pour intégrer des modèles de segmentation d'image en seulement quelques lignes de code. Vous pouvez également intégrer le modèle à l'aide de l' API Java TensorFlow Lite Interpreter .

L'exemple Android ci-dessous montre l'implémentation des deux méthodes comme lib_task_api et lib_interpreter , respectivement.

Voir l'exemple Android

Voir l'exemple iOS

Si vous utilisez une plate-forme autre qu'Android ou iOS, ou si vous êtes déjà familiarisé avec les API TensorFlow Lite , vous pouvez télécharger notre modèle de segmentation d'image de démarrage.

Télécharger le modèle de démarrage

Description du modèle

DeepLab est un modèle d'apprentissage en profondeur de pointe pour la segmentation d'image sémantique, où le but est d'attribuer des étiquettes sémantiques (par exemple, personne, chien, chat) à chaque pixel de l'image d'entrée.

Comment ça fonctionne

La segmentation d'image sémantique prédit si chaque pixel d'une image est associé à une certaine classe. Cela contraste avec la détection d'objet , qui détecte les objets dans des régions rectangulaires, et la classification d'image , qui classe l'image globale.

L'implémentation actuelle comprend les fonctionnalités suivantes:

  1. DeepLabv1: Nous utilisons une convolution atro pour contrôler explicitement la résolution à laquelle les réponses des caractéristiques sont calculées dans les réseaux de neurones à convolution profonde.
  2. DeepLabv2: Nous utilisons un regroupement de pyramides spatiales (ASPP) pour segmenter de manière robuste des objets à plusieurs échelles avec des filtres à plusieurs fréquences d'échantillonnage et des champs de vision efficaces.
  3. DeepLabv3: Nous augmentons le module ASPP avec une fonction au niveau de l'image [5, 6] pour capturer des informations à plus longue portée. Nous incluons également des paramètres de normalisation par lots [7] pour faciliter la formation. En particulier, nous appliquons une convolution atroce pour extraire les caractéristiques de sortie à différentes foulées de sortie pendant l'entraînement et l'évaluation, ce qui permet efficacement la formation de BN à la foulée de sortie = 16 et atteint une performance élevée à la foulée de sortie = 8 pendant l'évaluation.
  4. DeepLabv3 +: Nous étendons DeepLabv3 pour inclure un module décodeur simple mais efficace pour affiner les résultats de segmentation, en particulier le long des limites des objets. En outre, dans cette structure codeur-décodeur, on peut contrôler arbitrairement la résolution des caractéristiques de codeur extraites par une convolution atroce pour un compromis entre précision et durée d'exécution.

Benchmarks de performance

Les chiffres de référence de performance sont générés avec l'outil décrit ici .

Nom du modèle Taille du modèle Appareil GPU CPU
Deeplab v3 2,7 Mo Pixel 3 (Android 10) 16 ms 37 ms *
Pixel 4 (Android 10) 20 ms 23 ms *
iPhone XS (iOS 12.4.1) 16 ms 25 ms **

* 4 fils utilisés.

** 2 threads utilisés sur iPhone pour le meilleur résultat de performance.

Lectures et ressources supplémentaires