** Segmentation d'instance ** (détection d'objet + segmentation)
L'explication sur le masque R-CNN est omise. Veuillez vous référer à ce qui suit. [Introduction à la détection d'objets à l'aide de la dernière région CNN (R-CNN) ~ Qu'est-ce que la détection d'objets? R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN ~](https://qiita.com / arutema47 / items / 8ff629a1516f7fd485f9)
L'implémentation Mask R-CNN utilise le référentiel suivant. https://github.com/facebookresearch/maskrcnn-benchmark
https://github.com/wkentaro/labelme
C'est fondamentalement la même chose que README.md
ci-dessus
Je vais résumer ci-dessous
Vous pouvez également le saisir avec $ pip install label me
, mais comme vous utiliserez un script pour la conversion de données plus tard, faites git clone
.sh
$ git clone https://github.com/wkentaro/labelme.git
$ cd labelme
$ pip install -e .
Créez class.txt
avec les noms de classe répertoriés avec des sauts de ligne. Ajoutez «ignore» à la première ligne car vous pourriez obtenir une erreur lors de la conversion des données.
Exemple:
classes.txt
__ignore__
person
bicycle
car
...
Commencez à m'étiqueter avec la commande suivante
.sh
$ labelme <Chemin du dossier de données> --labels <classes.chemin txt> --nodata
Le site suivant sera utile. C'est très facile à annoter. Outil d'annotation de segmentation sémantique labelme
Convertit les données d'annotation créées et l'image d'origine pour Mask R-CNN.
.sh
$ cd labelme/examplts/instance_segmentation
$ ./labelme2coco.py <Chemin du dossier de données> <Nom du répertoire à créer> --labels <classes.txt>
par ça
<Nom du répertoire à créer> / JPEGImages
・ ・ ・ Répertoire contenant des images
<Nom du répertoire à créer> / annotations.json
・ ・ ・ Fichier json avec informations d'annotation
sera créé
https://github.com/facebookresearch/maskrcnn-benchmark
Installer ci-dessus selon README.md
Les articles suivants seront utiles. [Propre formation aux données avec 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)
Placez les données dans une position où maskrcnn peut les lire
Créé ci-dessus
JPEGImages
,
annotations.json
À
maskrcnn_benchmark / datasets / <nouveau nom de répertoire> /
mis sur
Ajoutez ce qui suit à DATASETS
dans maskrcnn_benchmark / config / chemins_catalog.py
Veuillez inclure ** COCO ** dans ** "nouveau nom de données" ** pour indiquer qu'il est au format COCO.
.json
"Nouveau nom de données" : {
"img_dir" : "<Nouveau nom de répertoire>"
"ann_file" : "<Nouveau nom de répertoire>/annotations.json"
}
Avec le processus ci-dessus, enregistrez les données pour ** apprentissage ** et ** test **.
Vous devriez pouvoir commencer à apprendre à:
.sh
$ python tools/train_net.py --config-file configs/e2e_mask_rcnn_R_50_FPN_1x.yaml DATASETS.TRAIN "(\"<Nouveau nom de données(Pour apprendre)>\",)" DATASETS.TEST "(\"<Nouveau nom de données(pour le test)>\",)"
En spécifiant --config-file
from configs /
, vous pouvez spécifier une configuration telle que la structure du réseau.
Si vous souhaitez modifier le ** taux d'apprentissage ** ou la ** taille du lot **, vous pouvez le modifier en l'écrivant au moment de l'exécution.
Exemple:
$ python tools/train_net.py --config-file configs/e2e_mask_rcnn_R_50_FPN_1x.yaml DATASETS.TRAIN "(\"<Nouveau nom de données(Pour apprendre)>\",)" DATASETS.TEST "(\"<Nouveau nom de données(pour le test)>\",)" SOLVER.BASE_LR 0.0025 SOLVER.IMS_PER_BATCH 2 TEST.IMS_PER_BATCH 1
SOLVER.BASE_LR
: taux d'apprentissage au début de l'apprentissage (décroissant progressivement)
SOLVER.IMS_PER_BATCH
: Taille du lot pendant l'entraînement
TEST.IMS_PER_BATCH
: Taille du lot au moment du test
Tous les paramètres maskrcnn_benchmark/config/defaults.py Il est écrit.
Lors de la conversion des données de labelme
, elles sont reconnues comme un objet par défaut.
Si vous voulez qu'ils soient reconnus séparément, modifiez labelme2coco.py
comme suit.
https://github.com/wkentaro/labelme/issues/419#issuecomment-511853597
Il semble que toutes les étiquettes sont créées pour un objet par la version de Pytorch
pendant l'apprentissage.
maskrcnn_benchmark/data/datasets/coco.py#L94
Parce que le comportement de est parfois inattendu
target = target.clip_to_image (remove_empty = True)
target = target.clip_to_image(remove_empty=False)
Veuillez changer en.
C'est tout. Merci beaucoup!
Recommended Posts