[PYTHON] Comment créer une étiquette (masque) pour la segmentation avec labelme (masque de segmentation sémantique)

image.png

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

image.png

Connaissances préalables

J'écris un article en supposant que j'ai les connaissances suivantes

labelme est une application pour créer des étiquettes

C'est une application comme celle-ci

Détails sur l'utilisation de labelme

Télécharger label me

Pour les fenêtres

Pour Mac

Étiquette avec étiquette moi

Lorsque vous ouvrez labelme, la fenêtre suivante s'ouvre. (L'image est une capture d'écran de l'écran de recherche Google. C'est difficile à comprendre ...) image.png

Tout en développant, tracez une ligne au point. Il est très facile de zoomer et dézoomer. image.png

Je pense que c'est environ 1min avec ce sentiment approprié. Assez facile à utiliser. .. image.png

Enregistrez le JSON de SAVE sur la gauche. Vous pouvez créer des données comme ça!

{
  "version": "4.5.6",
  "flags": {},
  "shapes": [
    {
      "label": "dog",
      "points": [
        [
          104.36893203883496,
          66.99029126213593
        ],
        [
          93.44660194174757,
          71.35922330097087
        ],
Omis ici
        [
          112.13592233009709,
          74.27184466019418
        ],
        [
          107.28155339805825,
          73.30097087378641
        ]
      ],
      "group_id": null,
      "shape_type": "polygon",
      "flags": {}
    }
  ],
  "imagePath": "Capture d'écran 2020-09-14 141400.png ",
  "imageData": "réduction",
  "imageHeight": 405,
  "imageWidth": 535
}

Mise en garde! Étant donné que ce point JSON est un point de polygone, il ne peut pas être utilisé comme masque tel quel. .. Nous devons donc convertir ce point en masque.

Convertir le fichier labelme de JSON en MASK

Au début, je pensais l'implémenter moi-même (c'est un problème), mais il y avait une fonction pour cela (c'est vrai). labelme a un module appelé shape.py dans le dossier utils, et vous pouvez convertir de JSON en MASK en utilisant la fonction shape_to_mask.

Cependant, comme il doit être implémenté subtilement, je publierai l'exemple de code.

import json
with open(path, "r",encoding="utf-8") as f:
    dj = json.load(f)
# dj['shapes'][0]Est pour une étiquette cette fois.
mask = shape_to_mask((dj['imageHeight'],dj['imageWidth']), dj['shapes'][0]['points'], shape_type=None,line_width=1, point_size=1)
mask_img = mask.astype(np.int)#booléen à 0,Convertir en 1

#J'utilise anaconda
import matplotlib.pyplot as plt
%matplotlib inline

plt.imshow(mask_img)

image.png

J'ai pu bien l'étiqueter. À ce niveau, il faut environ 2 à 3 minutes entre l'ouverture de l'image et son enregistrement, n'est-ce pas?

finalement

Veuillez me faire savoir si vous avez des outils d'étiquetage recommandés autres que m'étiqueter. Je me demande si certaines personnes l'ont mis en œuvre de leur propre chef.

Recommended Posts

Comment créer une étiquette (masque) pour la segmentation avec labelme (masque de segmentation sémantique)
Procédure de création d'application multi-plateforme avec kivy
Comment créer un sous-menu avec le plug-in [Blender]
[Go] Comment créer une erreur personnalisée pour Sentry
Comment créer un référentiel local pour le système d'exploitation Linux
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Comment créer un package Conda
Comment créer un pont virtuel
Comment créer un Dockerfile (basique)
Comment créer un fichier de configuration
Comment écrire une docstring pour créer un document tuple nommé avec sphinx
Comment créer une API de machine learning sans serveur avec AWS Lambda
Comment créer un dossier git clone
Comment ajouter un package avec PyCharm
Comment créer un référentiel à partir d'un média
3. Traitement du langage naturel avec Python 1-2. Comment créer un corpus: Aozora Bunko
[Python] Comment créer une liste de types de dictionnaire, ajouter / modifier / supprimer des éléments et extraire avec une instruction for
Comment créer des exemples de données CSV avec hypothèse
Comment lire un fichier CSV avec Python 2/3
Comment envoyer un message à LINE avec curl
Comment dessiner un graphique à 2 axes avec pyplot
Comment créer un objet fonction à partir d'une chaîne
Créer un LINE BOT avec Minette pour Python
Comment développer une application de panier avec Django
Comment créer un fichier JSON en Python
Comment créer un dictionnaire avec une structure hiérarchique.
Créez un tableau de bord pour les appareils réseau avec Django!
Étapes pour créer un bot Twitter avec Python
Comment écrire une instruction ShellScript Bash for
[Note] Comment créer un environnement de développement Ruby
Comment créer une boîte de saisie Kivy 1 ligne
Comment créer une API Rest dans Django
[Note] Comment créer un environnement de développement Mac
Comment créer des nombres aléatoires avec le module aléatoire de NumPy
Ce que j'ai appris en mettant en œuvre comment créer une boîte par défaut pour SSD
J'ai essayé de créer un bouton pour Slack avec Raspeye + Tact Switch
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Lire la source Python-Markdown: Comment créer un analyseur
Créer un ensemble de données d'images à utiliser pour la formation
Comment convertir / restaurer une chaîne avec [] en python
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Essayez de créer un Checkbutton dynamiquement avec Tkinter en Python
Comment obtenir un utilisateur connecté avec les forms.py de Django
Comment convertir un objet de classe en dictionnaire avec SQLAlchemy
Comment créer rapidement un environnement d'apprentissage automatique à l'aide de Jupyter Notebook avec UbuntuServer 16.04 LTS
J'ai essayé de créer un environnement d'apprentissage amélioré pour Othello avec Open AI gym
Créer une couche pour AWS Lambda Python dans Docker
Je souhaite créer manuellement une légende avec matplotlib
Comment créer un environnement de développement pour TensorFlow (1.0.0) (Mac)
Comment créer un simple script serveur / client TCP
Une idée fausse improbable sur la façon de spécifier un gestionnaire pour un zip téléchargé avec Lambda
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
Comment configurer WSL2 sur Windows 10 et créer un environnement d'étude pour les commandes Linux
Comment créer un BOT Cisco Webex Teams à l'aide de Flask