From 30309d87517b4af56937f78dd7489ba067d120d9 Mon Sep 17 00:00:00 2001 From: Yoshitomo Matsubara Date: Mon, 25 Nov 2019 12:23:25 -0800 Subject: [PATCH 1/4] add a README for training object detection models --- references/detection/README.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 references/detection/README.md diff --git a/references/detection/README.md b/references/detection/README.md new file mode 100644 index 00000000000..7aec36aefa3 --- /dev/null +++ b/references/detection/README.md @@ -0,0 +1,31 @@ +# Object detection reference training scripts + +This folder contains reference training scripts for object detection. +They serve as a log of how to train specific models, as provide baseline +training and evaluation scripts to quickly bootstrap research. + +Except otherwise noted, all models have been trained on 8x V100 GPUs. + +### Faster R-CNN +``` +python -m torch.distributed.launch --nproc_per_node=8 --use_env train.py\ + --dataset coco --model fasterrcnn_resnet50_fpn --epochs 26\ + --lr-steps 16 22 --aspect-ratio-group-factor 3 +``` + + +### Mask R-CNN +``` +python -m torch.distributed.launch --nproc_per_node=8 --use_env train.py\ + --dataset coco --model maskrcnn_resnet50_fpn --epochs 26\ + --lr-steps 16 22 --aspect-ratio-group-factor 3 +``` + + +### Keypoint R-CNN +``` +python -m torch.distributed.launch --nproc_per_node=8 --use_env train.py\ + --dataset coco_kp --model keypointrcnn_resnet50_fpn --epochs 46\ + --lr-steps 36 43 --aspect-ratio-group-factor 3 +``` + From 2457583e7de3a7eb5abe8f14d398c95f088a7c55 Mon Sep 17 00:00:00 2001 From: Yoshitomo Matsubara Date: Sat, 24 Oct 2020 18:06:34 -0700 Subject: [PATCH 2/4] replaced np.asarray with np.array to avoid warning messages --- references/segmentation/transforms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/segmentation/transforms.py b/references/segmentation/transforms.py index bce4bfbe639..4fe5a5ad147 100644 --- a/references/segmentation/transforms.py +++ b/references/segmentation/transforms.py @@ -78,7 +78,7 @@ def __call__(self, image, target): class ToTensor(object): def __call__(self, image, target): image = F.to_tensor(image) - target = torch.as_tensor(np.asarray(target), dtype=torch.int64) + target = torch.as_tensor(np.array(target), dtype=torch.int64) return image, target From e538ad355bc5d3090b53ba4d3bfd2d1e469f69ac Mon Sep 17 00:00:00 2001 From: Yoshitomo Matsubara Date: Sat, 24 Oct 2020 18:45:33 -0700 Subject: [PATCH 3/4] added data-path for flexibility --- references/segmentation/README.md | 6 ++++++ references/segmentation/train.py | 15 ++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/references/segmentation/README.md b/references/segmentation/README.md index 3d9a1f726e0..8e12b5682c5 100644 --- a/references/segmentation/README.md +++ b/references/segmentation/README.md @@ -6,6 +6,12 @@ training and evaluation scripts to quickly bootstrap research. All models have been trained on 8x V100 GPUs. +You must modify the following flags: + +`--data-path=/path/to/coco/dataset` + +`--nproc_per_node=` + ## fcn_resnet50 ``` python -m torch.distributed.launch --nproc_per_node=8 --use_env train.py --lr 0.02 --dataset coco -b 4 --model fcn_resnet50 --aux-loss diff --git a/references/segmentation/train.py b/references/segmentation/train.py index e37a4e92886..e82e5bda651 100644 --- a/references/segmentation/train.py +++ b/references/segmentation/train.py @@ -12,13 +12,13 @@ import utils -def get_dataset(name, image_set, transform): +def get_dataset(dir_path, name, image_set, transform): def sbd(*args, **kwargs): return torchvision.datasets.SBDataset(*args, mode='segmentation', **kwargs) paths = { - "voc": ('/datasets01/VOC/060817/', torchvision.datasets.VOCSegmentation, 21), - "voc_aug": ('/datasets01/SBDD/072318/', sbd, 21), - "coco": ('/datasets01/COCO/022719/', get_coco, 21) + "voc": (dir_path, torchvision.datasets.VOCSegmentation, 21), + "voc_aug": (dir_path, sbd, 21), + "coco": (dir_path, get_coco, 21) } p, ds_fn, num_classes = paths[name] @@ -101,8 +101,8 @@ def main(args): device = torch.device(args.device) - dataset, num_classes = get_dataset(args.dataset, "train", get_transform(train=True)) - dataset_test, _ = get_dataset(args.dataset, "val", get_transform(train=False)) + dataset, num_classes = get_dataset(args.data_path, args.dataset, "train", get_transform(train=True)) + dataset_test, _ = get_dataset(args.data_path, args.dataset, "val", get_transform(train=False)) if args.distributed: train_sampler = torch.utils.data.distributed.DistributedSampler(dataset) @@ -186,7 +186,8 @@ def parse_args(): import argparse parser = argparse.ArgumentParser(description='PyTorch Segmentation Training') - parser.add_argument('--dataset', default='voc', help='dataset') + parser.add_argument('--data-path', default='/datasets01/COCO/022719/', help='dataset path') + parser.add_argument('--dataset', default='coco', help='dataset name') parser.add_argument('--model', default='fcn_resnet101', help='model') parser.add_argument('--aux-loss', action='store_true', help='auxiliar loss') parser.add_argument('--device', default='cuda', help='device') From 9e45c038296e6b6174d932cf436a1b52078a6c9b Mon Sep 17 00:00:00 2001 From: Yoshitomo Matsubara Date: Sat, 24 Oct 2020 18:47:45 -0700 Subject: [PATCH 4/4] fixed a typo --- references/segmentation/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/segmentation/README.md b/references/segmentation/README.md index 8e12b5682c5..34db88c7a3a 100644 --- a/references/segmentation/README.md +++ b/references/segmentation/README.md @@ -8,7 +8,7 @@ All models have been trained on 8x V100 GPUs. You must modify the following flags: -`--data-path=/path/to/coco/dataset` +`--data-path=/path/to/dataset` `--nproc_per_node=`