[PYTHON] So erstellen Sie eine Bezeichnung (Maske) für die Segmentierung mit labelme (semantische Segmentierungsmaske)

image.png

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

image.png

Vorausgesetztes Wissen

Ich schreibe einen Artikel unter der Annahme, dass ich die folgenden Kenntnisse habe

labelme ist eine App zum Erstellen von Etiketten

Es ist eine App wie diese

Details zur Verwendung von labelme

Laden Sie das Label me herunter

Für Windows

Für Mac

Etikett mit Etikett mich

Wenn Sie labelme öffnen, wird das folgende Fenster geöffnet. (Das Bild ist ein Screenshot des Google-Suchbildschirms. Es ist schwer zu verstehen ...) image.png

Zeichnen Sie beim Erweitern eine Linie an der Stelle. Das Vergrößern und Verkleinern ist sehr einfach. image.png

Ich denke, es ist ungefähr 1 Minute mit diesem richtigen Gefühl. Ziemlich einfach zu bedienen. .. image.png

Speichern Sie den JSON von SAVE auf der linken Seite. Sie können solche Daten erstellen!

{
  "version": "4.5.6",
  "flags": {},
  "shapes": [
    {
      "label": "dog",
      "points": [
        [
          104.36893203883496,
          66.99029126213593
        ],
        [
          93.44660194174757,
          71.35922330097087
        ],
Hier weggelassen
        [
          112.13592233009709,
          74.27184466019418
        ],
        [
          107.28155339805825,
          73.30097087378641
        ]
      ],
      "group_id": null,
      "shape_type": "polygon",
      "flags": {}
    }
  ],
  "imagePath": "Screenshot 2020-09-14 141400.png ",
  "imageData": "Kürzung",
  "imageHeight": 405,
  "imageWidth": 535
}

Hinweis! Da dieser JSON-Punkt ein Polygonpunkt ist, kann er nicht wie er ist als Maske verwendet werden. .. Wir müssen diesen Punkt also in eine Maske konvertieren.

Konvertieren Sie die Labelme-Datei von JSON in MASK

Zuerst dachte ich daran, es selbst zu implementieren (es ist ein Ärger), aber es gab eine Funktion dafür (das ist richtig). labelme hat ein Modul namens shape.py im Ordner utils, und Sie können mithilfe der Funktion shape_to_mask von JSON nach MASK konvertieren.

Da es jedoch subtil implementiert werden muss, werde ich den Beispielcode veröffentlichen.

import json
with open(path, "r",encoding="utf-8") as f:
    dj = json.load(f)
# dj['shapes'][0]Ist diesmal für ein Label.
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)#Boolescher Wert auf 0,In 1 konvertieren

#Ich benutze Anakonda
import matplotlib.pyplot as plt
%matplotlib inline

plt.imshow(mask_img)

image.png

Ich konnte es gut beschriften. Auf dieser Ebene dauert es ungefähr 2-3 Minuten vom Öffnen des Bildes bis zum Speichern, nicht wahr?

Schließlich

Bitte lassen Sie mich wissen, wenn Sie andere empfohlene Etikettierwerkzeuge als mich haben. Ich frage mich, ob einige Leute es selbst implementiert haben.

Recommended Posts

So erstellen Sie eine Bezeichnung (Maske) für die Segmentierung mit labelme (semantische Segmentierungsmaske)
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
[Go] So erstellen Sie einen benutzerdefinierten Fehler für Sentry
So erstellen Sie ein lokales Repository für Linux
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
So erstellen Sie ein Conda-Paket
So erstellen Sie eine virtuelle Brücke
Wie erstelle ich eine Docker-Datei?
So erstellen Sie eine Konfigurationsdatei
So schreiben Sie eine Dokumentzeichenfolge, um ein benanntes Tupeldokument mit Sphinx zu erstellen
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen
So erstellen Sie einen Git-Klonordner
So fügen Sie ein Paket mit PyCharm hinzu
So erstellen Sie ein Repository aus Medien
3. Verarbeitung natürlicher Sprache mit Python 1-2. So erstellen Sie einen Korpus: Aozora Bunko
[Python] Erstellen einer Wörterbuchtypliste, Hinzufügen / Ändern / Löschen von Elementen und Extrahieren mit einer for-Anweisung
Erstellen von CSV-Beispieldaten mit Hypothese
Lesen einer CSV-Datei mit Python 2/3
So senden Sie eine Nachricht mit Curl an LINE
So zeichnen Sie ein 2-Achsen-Diagramm mit Pyplot
So erstellen Sie ein Funktionsobjekt aus einer Zeichenfolge
Erstellen Sie mit Minette für Python einen LINE BOT
So entwickeln Sie eine Cart-App mit Django
So erstellen Sie eine JSON-Datei in Python
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
Schritte zum Erstellen eines Twitter-Bots mit Python
So schreiben Sie einen ShellScript Bash für Anweisung
[Hinweis] So erstellen Sie eine Ruby-Entwicklungsumgebung
So erstellen Sie ein 1-zeiliges Kivy-Eingabefeld
So erstellen Sie eine Rest-API in Django
[Hinweis] So erstellen Sie eine Mac-Entwicklungsumgebung
Wie man Zufallszahlen mit dem Zufallsmodul von NumPy macht
Was ich durch die Implementierung des Erstellens einer Standardbox für SSD gelernt habe
Ich habe versucht, mit Raspeye + Tact Switch eine Schaltfläche für Slack zu erstellen
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Lesen Sie die Python-Markdown-Quelle: So erstellen Sie einen Parser
Erstellen Sie einen Datensatz mit Bildern, die für das Training verwendet werden sollen
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Versuchen Sie, mit Tkinter in Python dynamisch einen Checkbutton zu erstellen
So erhalten Sie einen angemeldeten Benutzer mit Djangos forms.py
So konvertieren Sie ein Klassenobjekt mit SQLAlchemy in ein Wörterbuch
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS
Ich habe versucht, mit Open AI Gym eine verbesserte Lernumgebung für Othello zu schaffen
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Ich möchte manuell eine Legende mit matplotlib erstellen
So erstellen Sie eine Entwicklungsumgebung für TensorFlow (1.0.0) (Mac)
So erstellen Sie ein einfaches TCP-Server / Client-Skript
Ein unwahrscheinliches Missverständnis darüber, wie ein Handler für eine mit Lambda hochgeladene Zip angegeben wird
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
So richten Sie WSL2 unter Windows 10 ein und erstellen eine Lernumgebung für Linux-Befehle
So erstellen Sie mit Flask einen BOT für Cisco Webex-Teams