From 54d8f281571137fc2af46df3d13771dc30e746fb Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Sat, 18 May 2019 15:11:27 +0900 Subject: [PATCH 01/12] add --dataset arg and support cityscapes and ade20k in deeplab/demo.py --- examples/deeplab/demo.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/examples/deeplab/demo.py b/examples/deeplab/demo.py index ae7c016e18..59eec64340 100644 --- a/examples/deeplab/demo.py +++ b/examples/deeplab/demo.py @@ -4,6 +4,10 @@ import chainer +from chainercv.datasets import ade20k_semantic_segmentation_label_colors +from chainercv.datasets import ade20k_semantic_segmentation_label_names +from chainercv.datasets import cityscapes_semantic_segmentation_label_colors +from chainercv.datasets import cityscapes_semantic_segmentation_label_names from chainercv.datasets import voc_semantic_segmentation_label_colors from chainercv.datasets import voc_semantic_segmentation_label_names from chainercv.links import DeepLabV3plusXception65 @@ -15,11 +19,30 @@ def main(): parser = argparse.ArgumentParser() parser.add_argument('--gpu', type=int, default=-1) - parser.add_argument('--pretrained-model', default='cityscapes') + parser.add_argument('--pretrained-model') parser.add_argument('--min-input-size', type=int, default=None) + parser.add_argument( + '--dataset', choices=('cityscapes', 'ade20k', 'voc'), + default='cityscapes') parser.add_argument('image') args = parser.parse_args() + if args.dataset == 'cityscapes': + if args.pretrained_model is None: + args.pretrained_model = 'cityscapes' + label_names = cityscapes_semantic_segmentation_label_names + colors = cityscapes_semantic_segmentation_label_colors + elif args.dataset == 'ade20k': + if args.pretrained_model is None: + args.pretrained_model = 'ade20k' + label_names = ade20k_semantic_segmentation_label_names + colors = ade20k_semantic_segmentation_label_colors + elif args.dataset == 'voc': + if args.pretrained_model is None: + args.pretrained_model = 'voc' + label_names = voc_semantic_segmentation_label_names + colors = voc_semantic_segmentation_label_colors + model = DeepLabV3plusXception65( pretrained_model=args.pretrained_model, min_input_size=args.min_input_size) @@ -38,8 +61,7 @@ def main(): ax2 = fig.add_subplot(1, 2, 2) # Do not overlay the label image on the color image vis_semantic_segmentation( - None, label, voc_semantic_segmentation_label_names, - voc_semantic_segmentation_label_colors, ax=ax2) + None, label, label_names, colors, ax=ax2) plt.show() From 69aeabd25ac460ffe94e6f22d71b27246dc8ecf4 Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Sat, 18 May 2019 15:15:01 +0900 Subject: [PATCH 02/12] add --dataset arg in faster_rcnn/demo.py --- examples/faster_rcnn/demo.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/examples/faster_rcnn/demo.py b/examples/faster_rcnn/demo.py index 32ad623d0a..d22414f3cb 100644 --- a/examples/faster_rcnn/demo.py +++ b/examples/faster_rcnn/demo.py @@ -12,12 +12,19 @@ def main(): parser = argparse.ArgumentParser() parser.add_argument('--gpu', type=int, default=-1) - parser.add_argument('--pretrained-model', default='voc07') + parser.add_argument('--pretrained-model') + parser.add_argument( + '--dataset', choices=('voc'), default='voc') parser.add_argument('image') args = parser.parse_args() + if args.dataset == 'voc': + if args.pretrained_model is None: + args.pretrained_model = 'voc07' + label_names = voc_bbox_label_names + model = FasterRCNNVGG16( - n_fg_class=len(voc_bbox_label_names), + n_fg_class=len(label_names), pretrained_model=args.pretrained_model) if args.gpu >= 0: @@ -29,7 +36,7 @@ def main(): bbox, label, score = bboxes[0], labels[0], scores[0] vis_bbox( - img, bbox, label, score, label_names=voc_bbox_label_names) + img, bbox, label, score, label_names=label_names) plt.show() From 3e831835a078c678e6d293cf8c64c2761c8dbb0d Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Sat, 18 May 2019 15:17:39 +0900 Subject: [PATCH 03/12] use --dataset arg in fpn/demo.py --- examples/fpn/demo.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/examples/fpn/demo.py b/examples/fpn/demo.py index 0d615cacfb..29e6711a82 100644 --- a/examples/fpn/demo.py +++ b/examples/fpn/demo.py @@ -22,30 +22,35 @@ def main(): 'mask_rcnn_fpn_resnet50', 'mask_rcnn_fpn_resnet101'), default='faster_rcnn_fpn_resnet50') parser.add_argument('--gpu', type=int, default=-1) - parser.add_argument('--pretrained-model', default='coco') + parser.add_argument('--pretrained-model') + parser.add_argument( + '--dataset', choices=('coco'), default='coco') parser.add_argument('image') args = parser.parse_args() if args.model == 'faster_rcnn_fpn_resnet50': mode = 'bbox' - model = FasterRCNNFPNResNet50( - n_fg_class=len(coco_bbox_label_names), - pretrained_model=args.pretrained_model) + cls = FasterRCNNFPNResNet50 elif args.model == 'faster_rcnn_fpn_resnet101': mode = 'bbox' - model = FasterRCNNFPNResNet101( - n_fg_class=len(coco_bbox_label_names), - pretrained_model=args.pretrained_model) + cls = FasterRCNNFPNResNet101 elif args.model == 'mask_rcnn_fpn_resnet50': mode = 'instance_segmentation' - model = MaskRCNNFPNResNet50( - n_fg_class=len(coco_instance_segmentation_label_names), - pretrained_model=args.pretrained_model) + cls = MaskRCNNFPNResNet50 elif args.model == 'mask_rcnn_fpn_resnet101': mode = 'instance_segmentation' - model = MaskRCNNFPNResNet101( - n_fg_class=len(coco_instance_segmentation_label_names), - pretrained_model=args.pretrained_model) + cls = MaskRCNNFPNResNet101 + + if args.dataset == 'coco': + if args.pretrained_model is None: + args.pretrained_model = 'coco' + if mode == 'bbox': + label_names = coco_bbox_label_names + elif mode == 'instance_segmentation': + label_names = coco_instance_segmentation_label_names + + model = cls(n_fg_class=len(label_names), + pretrained_model=args.pretrained_model) if args.gpu >= 0: chainer.cuda.get_device_from_id(args.gpu).use() @@ -60,15 +65,14 @@ def main(): score = scores[0] vis_bbox( - img, bbox, label, score, label_names=coco_bbox_label_names) + img, bbox, label, score, label_names=label_names) elif mode == 'instance_segmentation': masks, labels, scores = model.predict([img]) mask = masks[0] label = labels[0] score = scores[0] vis_instance_segmentation( - img, mask, label, score, - label_names=coco_instance_segmentation_label_names) + img, mask, label, score, label_names=label_names) plt.show() From 8113b07d626cfcfcdaf1eaa50352c2998ed1b807 Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Sat, 18 May 2019 15:21:13 +0900 Subject: [PATCH 04/12] add --dataset arg in pspnet/demo.py --- examples/pspnet/demo.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/examples/pspnet/demo.py b/examples/pspnet/demo.py index 1d2acd0c77..e5ac8fe35a 100644 --- a/examples/pspnet/demo.py +++ b/examples/pspnet/demo.py @@ -3,6 +3,8 @@ import matplotlib.pyplot as plt import chainer +from chainercv.datasets import ade20k_semantic_segmentation_label_colors +from chainercv.datasets import ade20k_semantic_segmentation_label_names from chainercv.datasets import cityscapes_semantic_segmentation_label_colors from chainercv.datasets import cityscapes_semantic_segmentation_label_names from chainercv.experimental.links import PSPNetResNet101 @@ -16,15 +18,26 @@ def main(): parser.add_argument('--gpu', '-g', type=int, default=-1) parser.add_argument('--pretrained-model') parser.add_argument('--input-size', type=int, default=713) + parser.add_argument( + '--dataset', choices=('cityscapes', 'ade20k'), default='cityscapes') parser.add_argument('image') args = parser.parse_args() - label_names = cityscapes_semantic_segmentation_label_names - colors = cityscapes_semantic_segmentation_label_colors - n_class = len(label_names) + if args.dataset == 'cityscapes': + if args.pretrained_model is None: + args.pretrained_model = 'cityscapes' + label_names = cityscapes_semantic_segmentation_label_names + colors = cityscapes_semantic_segmentation_label_colors + elif args.dataset == 'ade20k': + if args.pretrained_model is None: + args.pretrained_model = 'ade20k' + label_names = ade20k_semantic_segmentation_label_names + colors = ade20k_semantic_segmentation_label_colors input_size = (args.input_size, args.input_size) - model = PSPNetResNet101(n_class, args.pretrained_model, input_size) + model = PSPNetResNet101( + n_class=len(label_names), + pretrained_model=args.pretrained_model, input_size=input_size) if args.gpu >= 0: chainer.cuda.get_device_from_id(args.gpu).use() From 89c5666a35c6eed765f3dbec2f8a23312ba68c31 Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Sat, 18 May 2019 15:22:42 +0900 Subject: [PATCH 05/12] add --dataset arg in segnet/demo.py --- examples/segnet/demo.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/examples/segnet/demo.py b/examples/segnet/demo.py index 1d07925606..9422953bc5 100644 --- a/examples/segnet/demo.py +++ b/examples/segnet/demo.py @@ -16,12 +16,19 @@ def main(): parser = argparse.ArgumentParser() parser.add_argument('--gpu', type=int, default=-1) - parser.add_argument('--pretrained-model', default='camvid') + parser.add_argument('--pretrained-model') + parser.add_argument('--dataset', choices=('camvid'), default='camvid') parser.add_argument('image') args = parser.parse_args() + if args.dataset == 'camvid': + if args.pretrained_model is None: + args.pretrained_model = 'camvid' + label_names = camvid_label_names + colors = camvid_label_colors + model = SegNetBasic( - n_class=len(camvid_label_names), + n_class=len(label_names), pretrained_model=args.pretrained_model) if args.gpu >= 0: @@ -37,8 +44,7 @@ def main(): vis_image(img, ax=ax1) ax2 = fig.add_subplot(1, 2, 2) # Do not overlay the label image on the color image - vis_semantic_segmentation( - None, label, camvid_label_names, camvid_label_colors, ax=ax2) + vis_semantic_segmentation(None, label, label_names, colors, ax=ax2) plt.show() From 55d7437c81c3669a4cd0dab65f0e7ee413ed8ce2 Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Sat, 18 May 2019 15:24:22 +0900 Subject: [PATCH 06/12] add --dataset arg in ssd/demo.py --- examples/ssd/demo.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/examples/ssd/demo.py b/examples/ssd/demo.py index 6bfd25cba3..b60855fb4b 100644 --- a/examples/ssd/demo.py +++ b/examples/ssd/demo.py @@ -15,18 +15,24 @@ def main(): parser.add_argument( '--model', choices=('ssd300', 'ssd512'), default='ssd300') parser.add_argument('--gpu', type=int, default=-1) - parser.add_argument('--pretrained-model', default='voc0712') + parser.add_argument('--pretrained-model') + parser.add_argument( + '--dataset', choices=('voc'), default='voc') parser.add_argument('image') args = parser.parse_args() if args.model == 'ssd300': - model = SSD300( - n_fg_class=len(voc_bbox_label_names), - pretrained_model=args.pretrained_model) + cls = SSD300 elif args.model == 'ssd512': - model = SSD512( - n_fg_class=len(voc_bbox_label_names), - pretrained_model=args.pretrained_model) + cls = SSD512 + + if args.dataset == 'voc': + if args.pretrained_model is None: + args.pretrained_model = 'voc0712' + label_names = voc_bbox_label_names + + model = cls(n_fg_class=len(label_names), + pretrained_model=args.pretrained_model) if args.gpu >= 0: chainer.cuda.get_device_from_id(args.gpu).use() @@ -37,7 +43,7 @@ def main(): bbox, label, score = bboxes[0], labels[0], scores[0] vis_bbox( - img, bbox, label, score, label_names=voc_bbox_label_names) + img, bbox, label, score, label_names=label_names) plt.show() From 6d80a55cd949dc77d1f71c94e97426a326ed5373 Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Sat, 18 May 2019 15:25:26 +0900 Subject: [PATCH 07/12] add --dataset arg in yolo/demo.py --- examples/yolo/demo.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/examples/yolo/demo.py b/examples/yolo/demo.py index cf8af5955b..42b58c3804 100644 --- a/examples/yolo/demo.py +++ b/examples/yolo/demo.py @@ -17,22 +17,26 @@ def main(): '--model', choices=('yolo_v2', 'yolo_v2_tiny', 'yolo_v3'), default='yolo_v2') parser.add_argument('--gpu', type=int, default=-1) - parser.add_argument('--pretrained-model', default='voc0712') + parser.add_argument('--pretrained-model') + parser.add_argument( + '--dataset', choices=('voc'), default='voc') parser.add_argument('image') args = parser.parse_args() if args.model == 'yolo_v2': - model = YOLOv2( - n_fg_class=len(voc_bbox_label_names), - pretrained_model=args.pretrained_model) + cls = YOLOv2 elif args.model == 'yolo_v2_tiny': - model = YOLOv2Tiny( - n_fg_class=len(voc_bbox_label_names), - pretrained_model=args.pretrained_model) + model = YOLOv2Tiny elif args.model == 'yolo_v3': - model = YOLOv3( - n_fg_class=len(voc_bbox_label_names), - pretrained_model=args.pretrained_model) + model = YOLOv3 + + if args.dataset == 'voc': + if args.pretrained_model is None: + args.pretrained_model = 'voc0712' + label_names = voc_bbox_label_names + + model = cls(n_fg_class=len(label_names), + pretrained_model=args.pretrained_model) if args.gpu >= 0: chainer.cuda.get_device_from_id(args.gpu).use() @@ -43,7 +47,7 @@ def main(): bbox, label, score = bboxes[0], labels[0], scores[0] vis_bbox( - img, bbox, label, score, label_names=voc_bbox_label_names) + img, bbox, label, score, label_names=label_names) plt.show() From 18605d02397280e6946893b8b063352ef3039c0d Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Sat, 18 May 2019 15:34:21 +0900 Subject: [PATCH 08/12] update deeplab/README.md --- examples/deeplab/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/deeplab/README.md b/examples/deeplab/README.md index e969d8581a..51de6053ea 100644 --- a/examples/deeplab/README.md +++ b/examples/deeplab/README.md @@ -16,9 +16,9 @@ So we evaluated the pretrained graph using `eval_semantic_segmentation` in Chain Although we could generate a graph the biggest image can be input, it resulted 40.13% in official evaluation code. ## Demo -This demo downloads Cityscapes pretrained model automatically if a pretrained model path is not given. +This demo downloads a pretrained model automatically if a pretrained model path is not given. ``` -$ python demo.py [--gpu ] [--pretrained-model ] [--input-size ] .jpg +$ python demo.py [--dataset cityscapes|ade20k|voc] [--gpu ] [--pretrained-model ] [--min-input-size ] .jpg ``` From 2517318d2d24dc962295687800d089abfe4b25a4 Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Sat, 18 May 2019 15:36:15 +0900 Subject: [PATCH 09/12] update pspnet/README.md --- examples/pspnet/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/pspnet/README.md b/examples/pspnet/README.md index 73dc2acf9b..aaef150b55 100644 --- a/examples/pspnet/README.md +++ b/examples/pspnet/README.md @@ -3,7 +3,7 @@ ## Demo This demo downloads a pretrained model automatically if a pretrained model path is not given. ``` -$ python demo.py [--gpu ] [--pretrained-model ] [--input-size ] .jpg +$ python demo.py [--dataset cityscapes|ade20k] [--gpu ] [--pretrained-model ] [--input-size ] .jpg ``` ## Weight Covnersion From ca47b85f7a2a20e1711d4ef5d0dd75fbf397f745 Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Sat, 18 May 2019 15:39:17 +0900 Subject: [PATCH 10/12] refactor fcis/README.md --- examples/fcis/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/fcis/README.md b/examples/fcis/README.md index 9b80aca4c0..93bf2096cd 100644 --- a/examples/fcis/README.md +++ b/examples/fcis/README.md @@ -20,7 +20,7 @@ Segment objects in an given image. This demo downloads SBD pretrained model automatically if a pretrained model path is not given. ```bash -python demo.py [--gpu ] [--pretrained-model ] [--dataset ] +python demo.py [--dataset sbd|coco] [--gpu ] [--pretrained-model ] ``` ## Evaluation From d430cd53bfe82f1869d93a62e95c8c98782fd5ac Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Tue, 21 May 2019 21:09:59 +0900 Subject: [PATCH 11/12] fix typo in yolo/demo.py --- examples/yolo/demo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/yolo/demo.py b/examples/yolo/demo.py index 42b58c3804..aea904e668 100644 --- a/examples/yolo/demo.py +++ b/examples/yolo/demo.py @@ -26,9 +26,9 @@ def main(): if args.model == 'yolo_v2': cls = YOLOv2 elif args.model == 'yolo_v2_tiny': - model = YOLOv2Tiny + cls = YOLOv2Tiny elif args.model == 'yolo_v3': - model = YOLOv3 + cls = YOLOv3 if args.dataset == 'voc': if args.pretrained_model is None: From 23d6425bf96754137f109c22c117220b3df8b7e3 Mon Sep 17 00:00:00 2001 From: Shingo Kitagawa Date: Tue, 28 May 2019 16:52:07 +0900 Subject: [PATCH 12/12] update style in examples --- examples/faster_rcnn/demo.py | 2 +- examples/fpn/demo.py | 2 +- examples/segnet/demo.py | 2 +- examples/ssd/demo.py | 2 +- examples/yolo/demo.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/faster_rcnn/demo.py b/examples/faster_rcnn/demo.py index d22414f3cb..10bc79c45b 100644 --- a/examples/faster_rcnn/demo.py +++ b/examples/faster_rcnn/demo.py @@ -14,7 +14,7 @@ def main(): parser.add_argument('--gpu', type=int, default=-1) parser.add_argument('--pretrained-model') parser.add_argument( - '--dataset', choices=('voc'), default='voc') + '--dataset', choices=('voc',), default='voc') parser.add_argument('image') args = parser.parse_args() diff --git a/examples/fpn/demo.py b/examples/fpn/demo.py index 29e6711a82..0e2e0e0ef4 100644 --- a/examples/fpn/demo.py +++ b/examples/fpn/demo.py @@ -24,7 +24,7 @@ def main(): parser.add_argument('--gpu', type=int, default=-1) parser.add_argument('--pretrained-model') parser.add_argument( - '--dataset', choices=('coco'), default='coco') + '--dataset', choices=('coco',), default='coco') parser.add_argument('image') args = parser.parse_args() diff --git a/examples/segnet/demo.py b/examples/segnet/demo.py index 9422953bc5..2586c0181b 100644 --- a/examples/segnet/demo.py +++ b/examples/segnet/demo.py @@ -17,7 +17,7 @@ def main(): parser = argparse.ArgumentParser() parser.add_argument('--gpu', type=int, default=-1) parser.add_argument('--pretrained-model') - parser.add_argument('--dataset', choices=('camvid'), default='camvid') + parser.add_argument('--dataset', choices=('camvid',), default='camvid') parser.add_argument('image') args = parser.parse_args() diff --git a/examples/ssd/demo.py b/examples/ssd/demo.py index b60855fb4b..f0e04dd627 100644 --- a/examples/ssd/demo.py +++ b/examples/ssd/demo.py @@ -17,7 +17,7 @@ def main(): parser.add_argument('--gpu', type=int, default=-1) parser.add_argument('--pretrained-model') parser.add_argument( - '--dataset', choices=('voc'), default='voc') + '--dataset', choices=('voc',), default='voc') parser.add_argument('image') args = parser.parse_args() diff --git a/examples/yolo/demo.py b/examples/yolo/demo.py index aea904e668..f06e043f92 100644 --- a/examples/yolo/demo.py +++ b/examples/yolo/demo.py @@ -19,7 +19,7 @@ def main(): parser.add_argument('--gpu', type=int, default=-1) parser.add_argument('--pretrained-model') parser.add_argument( - '--dataset', choices=('voc'), default='voc') + '--dataset', choices=('voc',), default='voc') parser.add_argument('image') args = parser.parse_args()