** Instanzsegmentierung ** (Objekterkennung + Segmentierung)
Die Erklärung zu Maske R-CNN entfällt. Bitte beachten Sie Folgendes. [Einführung in die Objekterkennung mit der neuesten Region CNN (R-CNN) ~ Was ist Objekterkennung? R-CNN, Schnelles R-CNN, Schnelleres R-CNN, Maske R-CNN ~](https://qiita.com / arutema47 / items / 8ff629a1516f7fd485f9)
Die Mask R-CNN-Implementierung verwendet das folgende Repository. https://github.com/facebookresearch/maskrcnn-benchmark
https://github.com/wkentaro/labelme Es ist im Grunde das gleiche wie "README.md" oben Ich werde unten zusammenfassen
Sie können es auch mit "$ pip install label me" eingeben. Da Sie jedoch später ein Skript für die Datenkonvertierung verwenden, führen Sie "git clone" aus
.sh
$ git clone https://github.com/wkentaro/labelme.git
$ cd labelme
$ pip install -e .
Erstellen Sie "class.txt" mit den Klassennamen, die mit Zeilenumbrüchen aufgeführt sind. Fügen Sie in der ersten Zeile __ignore__
hinzu, da beim Konvertieren der Daten möglicherweise ein Fehler auftritt.
Beispiel:
classes.txt
__ignore__
person
bicycle
car
...
Beschriften Sie mich mit dem folgenden Befehl
.sh
$ labelme <Datenordnerpfad> --labels <classes.txt Pfad> --nodata
Die folgende Seite wird hilfreich sein. Es ist sehr einfach zu kommentieren. Label für semantische Segmentierungsanmerkungen
Konvertiert die erstellten Anmerkungsdaten und das Originalbild für Mask R-CNN.
.sh
$ cd labelme/examplts/instance_segmentation
$ ./labelme2coco.py <Datenordnerpfad> <Zu erstellender Verzeichnisname> --labels <classes.txt>
dadurch
<Name des zu erstellenden Verzeichnisses> / JPEGImages
・ ・ ・ Verzeichnis mit Bildern
<Name des zu erstellenden Verzeichnisses> / annotations.json
・ ・ son json-Datei mit Anmerkungsinformationen
wird erstellt
https://github.com/facebookresearch/maskrcnn-benchmark Installieren Sie oben gemäß "README.md"
Die folgenden Artikel sind hilfreich. [Eigenes Datentraining mit Pytorch1.1 + MaskRCNN (1)](https://qiita.com/kuroyagi/items/e66ca85f8d118c07eb95#7-%E8%A8%93%E7%B7%B4%E3%81%97% E3% 81% 9F% E7% B5% 90% E6% 9E% 9C% E3% 82% 92% E4% BD% BF% E3% 81% A3% E3% 81% A6% E8% 87% AA% E5% 88% 86% E3% 81% A7% E6% 8E% A8% E8% AB% 96)
Platzieren Sie die Daten an einer Stelle, an der maskrcnn sie lesen kann
Oben erstellt
JPEGImages
,
annotations.json
Zu
maskrcnn_benchmark / datasets / <neuer Verzeichnisname> /
eingestellt auf
Fügen Sie Folgendes zu DATASETS
in maskrcnn_benchmark / config / path_catalog.py
hinzu
Bitte geben Sie ** COCO ** in ** "neuer Datenname" ** an, um zu lesen, dass es im COCO-Format vorliegt.
.json
"Neuer Datenname" : {
"img_dir" : "<Neuer Verzeichnisname>"
"ann_file" : "<Neuer Verzeichnisname>/annotations.json"
}
Registrieren Sie mit dem obigen Vorgang die Daten für ** Lernen ** und ** Test **.
Sie sollten in der Lage sein zu lernen bei:
.sh
$ python tools/train_net.py --config-file configs/e2e_mask_rcnn_R_50_FPN_1x.yaml DATASETS.TRAIN "(\"<Neuer Datenname(Zum Lernen)>\",)" DATASETS.TEST "(\"<Neuer Datenname(zum Test)>\",)"
Durch Angabe von "--config-file" aus "configs /" können Sie eine Konfiguration wie die Netzwerkstruktur angeben. Wenn Sie die ** Lernrate ** oder ** Stapelgröße ** ändern möchten, können Sie sie ändern, indem Sie sie zur Laufzeit schreiben.
Beispiel:
$ python tools/train_net.py --config-file configs/e2e_mask_rcnn_R_50_FPN_1x.yaml DATASETS.TRAIN "(\"<Neuer Datenname(Zum Lernen)>\",)" DATASETS.TEST "(\"<Neuer Datenname(zum Test)>\",)" SOLVER.BASE_LR 0.0025 SOLVER.IMS_PER_BATCH 2 TEST.IMS_PER_BATCH 1
SOLVER.BASE_LR
: Lernrate zu Beginn des Lernens (abnehmend)
SOLVER.IMS_PER_BATCH
: Stapelgröße während des Trainings
TEST.IMS_PER_BATCH
: Stapelgröße zur Testzeit
Alle Parameter maskrcnn_benchmark/config/defaults.py Es ist geschrieben in.
Beim Konvertieren der Daten von labelme
werden diese standardmäßig als ein Objekt erkannt.
Wenn Sie möchten, dass sie separat erkannt werden, ändern Sie "labelme2coco.py" wie folgt.
https://github.com/wkentaro/labelme/issues/419#issuecomment-511853597
Es scheint, dass die Version von "Pytorch" während des Trainings alle Beschriftungen für ein Objekt erstellt.
maskrcnn_benchmark/data/datasets/coco.py#L94
Weil das Verhalten von manchmal unerwartet ist
target = target.clip_to_image (remove_empty = True)
target = target.clip_to_image(remove_empty=False)
Bitte wechseln Sie zu.
Das ist es. Vielen Dank!
Recommended Posts