def main(): parser = get_parser() parser.add_argument("--out-stride", type=int, default=16, help="network output stride (default: 8)") # PASCAL VOC parser.add_argument( "--dataset", type=str, default="context", choices=["pascal", "coco", "cityscapes"], help="dataset name (default: pascal)", ) parser.add_argument( "--use-sbd", action="store_true", default=True, help="whether to use SBD dataset (default: True)", ) parser.add_argument("--base-size", type=int, default=513, help="base image size") parser.add_argument("--crop-size", type=int, default=513, help="crop image size") parser.add_argument( "--loss-type", type=str, default="ce", choices=["ce", "focal"], help="loss func type (default: ce)", ) # training hyper params # PASCAL VOC parser.add_argument( "--epochs", type=int, default=300, metavar="N", help="number of epochs to train (default: auto)", ) # PASCAL VOC parser.add_argument( "--batch-size", type=int, default=8, metavar="N", help="input batch size for training (default: auto)", ) # cuda, seed and logging parser.add_argument( "--imagenet_pretrained_path", type=str, default= "checkpoint/resnet_backbone_pretrained_imagenet_wo_pascalcontext.pth.tar", ) parser.add_argument( "--resume", type=str, default= "checkpoint/deeplab_pascal_context_02_unseen_GMMN_final.pth.tar", help="put the path to resuming file if needed", ) parser.add_argument("--checkname", type=str, default="context_eval") # evaluation option parser.add_argument("--eval-interval", type=int, default=5, help="evaluation interval (default: 1)") # keep empty parser.add_argument("--unseen_classes_idx", type=int, default=[]) # 2 unseen unseen_names = ["cow", "motorbike"] # 4 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat'] # 6 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat', 'boat', 'fence'] # 8 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat', 'boat', 'fence', 'bird', 'tvmonitor'] # 10 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat', 'boat', 'fence', 'bird', 'tvmonitor', 'aeroplane', 'keyboard'] unseen_classes_idx_metric = [] for name in unseen_names: unseen_classes_idx_metric.append(CLASSES_NAMES.index(name)) ### FOR METRIC COMPUTATION IN ORDER TO GET PERFORMANCES FOR TWO SETS seen_classes_idx_metric = np.arange(60) seen_classes_idx_metric = np.delete(seen_classes_idx_metric, unseen_classes_idx_metric).tolist() parser.add_argument("--seen_classes_idx_metric", type=int, default=seen_classes_idx_metric) parser.add_argument("--unseen_classes_idx_metric", type=int, default=unseen_classes_idx_metric) parser.add_argument("--nonlinear_last_layer", type=bool, default=False, help="non linear prediction") parser.add_argument("--random_last_layer", type=bool, default=False, help="randomly init last layer") args = parser.parse_args() args.cuda = not args.no_cuda and torch.cuda.is_available() if args.cuda: try: args.gpu_ids = [int(s) for s in args.gpu_ids.split(",")] except ValueError: raise ValueError( "Argument --gpu_ids must be a comma-separated list of integers only" ) args.sync_bn = args.cuda and len(args.gpu_ids) > 1 # default settings for epochs, batch_size and lr if args.epochs is None: epoches = { "coco": 30, "cityscapes": 200, "pascal": 50, } args.epochs = epoches[args.dataset.lower()] if args.batch_size is None: args.batch_size = 4 * len(args.gpu_ids) if args.test_batch_size is None: args.test_batch_size = args.batch_size if args.lr is None: lrs = { "coco": 0.1, "cityscapes": 0.01, "pascal": 0.007, } args.lr = lrs[args.dataset.lower()] / ( 4 * len(args.gpu_ids)) * args.batch_size if args.checkname is None: args.checkname = "deeplab-resnet" print(args) torch.manual_seed(args.seed) trainer = Trainer(args) print("Starting Epoch:", trainer.args.start_epoch) print("Total Epoches:", trainer.args.epochs) trainer.validation(0, args)
def main(): parser = get_parser() parser.add_argument( "--imagenet_pretrained", type=bool, default=True, help="imagenet pretrained backbone", ) parser.add_argument( "--out-stride", type=int, default=16, help="network output stride (default: 8)" ) # PASCAL VOC parser.add_argument( "--dataset", type=str, default="context", choices=["pascal", "coco", "cityscapes", "context"], help="dataset name (default: pascal)", ) parser.add_argument("--base-size", type=int, default=312, help="base image size") parser.add_argument("--crop-size", type=int, default=312, help="crop image size") parser.add_argument( "--loss-type", type=str, default="ce", choices=["ce", "focal"], help="loss func type (default: ce)", ) # training hyper params # PASCAL VOC parser.add_argument( "--epochs", type=int, default=200, metavar="N", help="number of epochs to train (default: auto)", ) # PASCAL VOC parser.add_argument( "--batch-size", type=int, default=10, metavar="N", help="input batch size for training (default: auto)", ) # checking point parser.add_argument( "--resume", type=str, default=None, help="put the path to resuming file if needed", ) parser.add_argument( "--checkname", type=str, default="context_2_unseen", help="set the checkpoint name", ) parser.add_argument( "--imagenet_pretrained_path", type=str, default="checkpoint/resnet_backbone_pretrained_imagenet_wo_pascalcontext.pth.tar", help="set the checkpoint name", ) # evaluation option parser.add_argument( "--eval-interval", type=int, default=10, help="evaluation interval (default: 1)" ) # 2 unseen unseen_names = ["cow", "motorbike"] # 4 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat'] # 6 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat', 'boat', 'fence'] # 8 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat', 'boat', 'fence', 'bird', 'tvmonitor'] # 10 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat', 'boat', 'fence', 'bird', 'tvmonitor', 'aeroplane', 'keyboard'] unseen_classes_idx = [] for name in unseen_names: unseen_classes_idx.append(CLASSES_NAMES.index(name)) print(unseen_classes_idx) # all classes parser.add_argument("--unseen_classes_idx", type=int, default=unseen_classes_idx) args = parser.parse_args() args.cuda = not args.no_cuda and torch.cuda.is_available() if args.cuda: try: args.gpu_ids = [int(s) for s in args.gpu_ids.split(",")] except ValueError: raise ValueError( "Argument --gpu_ids must be a comma-separated list of integers only" ) args.sync_bn = args.cuda and len(args.gpu_ids) > 1 # default settings for epochs, batch_size and lr if args.epochs is None: epoches = { "coco": 30, "cityscapes": 200, "pascal": 50, "pascal": 150, } args.epochs = epoches[args.dataset.lower()] if args.batch_size is None: args.batch_size = 4 * len(args.gpu_ids) if args.test_batch_size is None: args.test_batch_size = args.batch_size if args.lr is None: lrs = { "coco": 0.1, "cityscapes": 0.01, "pascal": 0.007, } args.lr = lrs[args.dataset.lower()] / (4 * len(args.gpu_ids)) * args.batch_size if args.checkname is None: args.checkname = "deeplab-resnet" print(args) torch.manual_seed(args.seed) trainer = Trainer(args) print("Starting Epoch:", trainer.args.start_epoch) print("Total Epoches:", trainer.args.epochs) for epoch in range(trainer.args.start_epoch, trainer.args.epochs): trainer.training(epoch) if not trainer.args.no_val and epoch % args.eval_interval == ( args.eval_interval - 1 ): trainer.validation(epoch) trainer.writer.close()
def main(): parser = get_parser() parser.add_argument( "--imagenet_pretrained", type=bool, default=True, help="imagenet pretrained backbone", ) parser.add_argument("--out-stride", type=int, default=16, help="network output stride (default: 8)") # PASCAL VOC parser.add_argument( "--dataset", type=str, default="pascal", choices=["pascal", "coco", "cityscapes"], help="dataset name (default: pascal)", ) parser.add_argument( "--use-sbd", action="store_true", default=True, help="whether to use SBD dataset (default: True)", ) parser.add_argument("--base-size", type=int, default=312, help="base image size") parser.add_argument("--crop-size", type=int, default=312, help="crop image size") parser.add_argument( "--loss-type", type=str, default="ce", choices=["ce", "focal"], help="loss func type (default: ce)", ) # training hyper params # PASCAL VOC parser.add_argument( "--epochs", type=int, default=200, metavar="N", help="number of epochs to train (default: auto)", ) # PASCAL VOC parser.add_argument( "--batch-size", type=int, default=16, metavar="N", help="input batch size for training (default: auto)", ) # checking point parser.add_argument( "--resume", type=str, default=None, help="put the path to resuming file if needed", ) parser.add_argument( "--imagenet_pretrained_path", type=str, default= "checkpoint/resnet_backbone_pretrained_imagenet_wo_pascalvoc.pth.tar", help="set the checkpoint name", ) parser.add_argument( "--checkname", type=str, default="pascal_2_unseen", help="set the checkpoint name", ) parser.add_argument( '--config', type=str, default='***.yaml', help='configuration file for train/val', ) # evaluation option parser.add_argument("--eval-interval", type=int, default=10, help="evaluation interval (default: 1)") # only seen classes # 10 unseen # parser.add_argument('--unseen_classes_idx', type=int, default=[10, 14, 1, 18, 8, 20, 19, 5, 9, 16]) # 8 unseen # parser.add_argument('--unseen_classes_idx', type=int, default=[10, 14, 1, 18, 8, 20, 19, 5]) # 6 unseen # parser.add_argument('--unseen_classes_idx', type=int, default=[10, 14, 1, 18, 8, 20]) # 4 unseen # parser.add_argument('--unseen_classes_idx', type=int, default=[10, 14, 1, 18]) # 2 unseen # parser.add_argument("--unseen_classes_idx", type=int, default=[10, 14]) args = parser.parse_args() args.cuda = not args.no_cuda and torch.cuda.is_available() if args.cuda: try: args.gpu_ids = [int(s) for s in args.gpu_ids.split(",")] except ValueError: raise ValueError( "Argument --gpu_ids must be a comma-separated list of integers only" ) args.sync_bn = args.cuda and len(args.gpu_ids) > 1 # default settings for epochs, batch_size and lr if args.epochs is None: epoches = { "coco": 30, "cityscapes": 200, "pascal": 50, } args.epochs = epoches[args.dataset.lower()] if args.batch_size is None: args.batch_size = 4 * len(args.gpu_ids) if args.test_batch_size is None: args.test_batch_size = args.batch_size if args.lr is None: lrs = { "coco": 0.1, "cityscapes": 0.01, "pascal": 0.007, } args.lr = lrs[args.dataset.lower()] / ( 4 * len(args.gpu_ids)) * args.batch_size if args.checkname is None: args.checkname = "deeplab-resnet" print(args) torch.manual_seed(args.seed) trainer = Trainer(args) print("Starting Epoch:", trainer.args.start_epoch) print("Total Epoches:", trainer.args.epochs) for epoch in range(trainer.args.start_epoch, trainer.args.epochs): trainer.training(epoch) if not trainer.args.no_val and epoch % args.eval_interval == ( args.eval_interval - 1): trainer.validation(epoch) trainer.writer.close()
def main(): parser = get_parser() parser.add_argument("--out-stride", type=int, default=16, help="network output stride (default: 8)") # PASCAL VOC parser.add_argument( "--dataset", type=str, default="context", choices=["pascal", "coco", "cityscapes"], help="dataset name (default: pascal)", ) parser.add_argument( "--use-sbd", action="store_true", default=False, help="whether to use SBD dataset (default: True)", ) parser.add_argument("--base-size", type=int, default=312, help="base image size") parser.add_argument("--crop-size", type=int, default=312, help="crop image size") parser.add_argument( "--loss-type", type=str, default="ce", choices=["ce", "focal"], help="loss func type (default: ce)", ) # training hyper params # PASCAL VOC parser.add_argument( "--epochs", type=int, default=20, metavar="N", help="number of epochs to train (default: auto)", ) # PASCAL VOC parser.add_argument( "--batch-size", type=int, default=8, metavar="N", help="input batch size for training (default: auto)", ) # checking point parser.add_argument( "--imagenet_pretrained_path", type=str, default= "checkpoint/resnet_backbone_pretrained_imagenet_wo_pascalcontext.pth.tar", ) parser.add_argument( "--resume", type=str, default= "run/context/context_4_unseen_not_filter_unseen_classes/experiment_0/190_model.pth.tar", help="put the path to resuming file if needed", ) parser.add_argument( "--checkname", type=str, default= "gmmn_context_w2c300_linear_weighted100_hs256_4_unseen_not_filtering", ) # false if embedding resume parser.add_argument("--global_avg_pool_bn", type=bool, default=True) # evaluation option parser.add_argument("--eval-interval", type=int, default=1, help="evaluation interval (default: 1)") # keep empty parser.add_argument("--unseen_classes_idx", type=int, default=[]) # 2 unseen # unseen_names = ["cow", "motorbike"] # 4 unseen unseen_names = ['cow', 'motorbike', 'sofa', 'cat'] # 6 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat', 'boat', 'fence'] # 8 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat', 'boat', 'fence', 'bird', 'tvmonitor'] # 10 unseen # unseen_names = ['cow', 'motorbike', 'sofa', 'cat', 'boat', 'fence', 'bird', 'tvmonitor', 'aeroplane', 'keyboard'] unseen_classes_idx_metric = [] for name in unseen_names: unseen_classes_idx_metric.append(CLASSES_NAMES.index(name)) ### FOR METRIC COMPUTATION IN ORDER TO GET PERFORMANCES FOR TWO SETS seen_classes_idx_metric = np.arange(33) seen_classes_idx_metric = np.delete(seen_classes_idx_metric, unseen_classes_idx_metric).tolist() parser.add_argument("--seen_classes_idx_metric", type=int, default=seen_classes_idx_metric) parser.add_argument("--unseen_classes_idx_metric", type=int, default=unseen_classes_idx_metric) parser.add_argument("--unseen_weight", type=int, default=10, help="number of output channels") parser.add_argument("--random_last_layer", type=bool, default=True, help="randomly init last layer") parser.add_argument( "--real_seen_features", type=bool, default=True, help="real features for seen classes", ) parser.add_argument( "--load_embedding", type=str, default="my_w2c", choices=["attributes", "w2c", "w2c_bg", "my_w2c", "fusion", None], ) parser.add_argument("--w2c_size", type=int, default=600) ### GENERATOR ARGS parser.add_argument("--noise_dim", type=int, default=600) parser.add_argument("--embed_dim", type=int, default=600) parser.add_argument("--hidden_size", type=int, default=256) parser.add_argument("--feature_dim", type=int, default=256) parser.add_argument("--lr_generator", type=float, default=0.0002) parser.add_argument("--batch_size_generator", type=int, default=128) parser.add_argument("--saved_validation_images", type=int, default=10) parser.add_argument( "--filter_unseen_classes", type=bool, default=False, help="filter unseen classes", ) parser.add_argument( '--config', type=str, default='configs/context_finetune.yaml', help='configuration file for train/val', ) args = parser.parse_args() args.cuda = not args.no_cuda and torch.cuda.is_available() if args.cuda: try: args.gpu_ids = [int(s) for s in args.gpu_ids.split(",")] except ValueError: raise ValueError( "Argument --gpu_ids must be a comma-separated list of integers only" ) args.sync_bn = args.cuda and len(args.gpu_ids) > 1 # default settings for epochs, batch_size and lr if args.epochs is None: epoches = { "coco": 30, "cityscapes": 200, "pascal": 50, } args.epochs = epoches[args.dataset.lower()] if args.batch_size is None: args.batch_size = 4 * len(args.gpu_ids) if args.test_batch_size is None: args.test_batch_size = args.batch_size if args.lr is None: lrs = { "coco": 0.1, "cityscapes": 0.01, "pascal": 0.007, } args.lr = lrs[args.dataset.lower()] / ( 4 * len(args.gpu_ids)) * args.batch_size if args.checkname is None: args.checkname = "deeplab-resnet" print(args) torch.manual_seed(args.seed) trainer = Trainer(args) print("Starting Epoch:", trainer.args.start_epoch) print("Total Epoches:", trainer.args.epochs) # trainer.validation(trainer.args.start_epoch, args) for epoch in range(trainer.args.start_epoch, trainer.args.epochs): trainer.training(epoch, args) if not trainer.args.no_val and epoch % args.eval_interval == ( args.eval_interval - 1): trainer.validation(epoch, args) trainer.writer.close()
def main(): parser = get_parser() parser.add_argument("--out-stride", type=int, default=16, help="network output stride (default: 8)") # PASCAL VOC parser.add_argument( "--dataset", type=str, default="pascal", choices=["pascal", "coco", "cityscapes"], help="dataset name (default: pascal)", ) parser.add_argument( "--use-sbd", action="store_true", default=False, help="whether to use SBD dataset (default: True)", ) parser.add_argument("--base-size", type=int, default=513, help="base image size") parser.add_argument("--crop-size", type=int, default=513, help="crop image size") parser.add_argument( "--loss-type", type=str, default="ce", choices=["ce", "focal"], help="loss func type (default: ce)", ) # training hyper params # PASCAL VOC parser.add_argument( "--epochs", type=int, default=300, metavar="N", help="number of epochs to train (default: auto)", ) # PASCAL VOC parser.add_argument( "--batch-size", type=int, default=8, metavar="N", help="input batch size for training (default: auto)", ) # cuda, seed and logging # checking point parser.add_argument( "--imagenet_pretrained_path", type=str, default= "checkpoint/resnet_backbone_pretrained_imagenet_wo_pascalvoc.pth.tar", ) # checking point parser.add_argument( "--resume", type=str, default= "run/pascal/gmmn_pascal_w2c300_linear_weighted100_hs256_2_unseen/experiment_0/26_model.pth.tar", help="put the path to resuming file if needed", ) parser.add_argument("--checkname", type=str, default="pascal_eval") # evaluation option parser.add_argument("--eval-interval", type=int, default=5, help="evaluation interval (default: 1)") ### FOR IMAGE SELECTION IN ORDER TO TAKE OFF IMAGE WITH UNSEEN CLASSES FOR TRAINING AND VALIDATION # keep empty parser.add_argument("--unseen_classes_idx", type=int, default=[]) ### FOR METRIC COMPUTATION IN ORDER TO GET PERFORMANCES FOR TWO SETS seen_classes_idx_metric = np.arange(20) # 2 unseen unseen_classes_idx_metric = [10, 14] # 4 unseen # unseen_classes_idx_metric = [10, 14, 1, 18] # 6 unseen # unseen_classes_idx_metric = [10, 14, 1, 18, 8, 20] # 8 unseen # unseen_classes_idx_metric = [10, 14, 1, 18, 8, 20, 19, 5] # 10 unseen # unseen_classes_idx_metric = [10, 14, 1, 18, 8, 20, 19, 5, 9, 16] # 5 unseen unseen_classes_idx_metric = [15, 16, 17, 18, 19] seen_classes_idx_metric = np.delete(seen_classes_idx_metric, unseen_classes_idx_metric).tolist() parser.add_argument("--seen_classes_idx_metric", type=int, default=seen_classes_idx_metric) parser.add_argument("--unseen_classes_idx_metric", type=int, default=unseen_classes_idx_metric) parser.add_argument("--nonlinear_last_layer", type=bool, default=False, help="non linear prediction") parser.add_argument("--random_last_layer", type=bool, default=False, help="randomly init last layer") args = parser.parse_args() args.cuda = not args.no_cuda and torch.cuda.is_available() if args.cuda: try: args.gpu_ids = [int(s) for s in args.gpu_ids.split(",")] except ValueError: raise ValueError( "Argument --gpu_ids must be a comma-separated list of integers only" ) args.sync_bn = args.cuda and len(args.gpu_ids) > 1 # default settings for epochs, batch_size and lr if args.epochs is None: epoches = { "coco": 30, "cityscapes": 200, "pascal": 50, } args.epochs = epoches[args.dataset.lower()] if args.batch_size is None: args.batch_size = 4 * len(args.gpu_ids) if args.test_batch_size is None: args.test_batch_size = args.batch_size if args.lr is None: lrs = { "coco": 0.1, "cityscapes": 0.01, "pascal": 0.007, } args.lr = lrs[args.dataset.lower()] / ( 4 * len(args.gpu_ids)) * args.batch_size if args.checkname is None: args.checkname = "deeplab-resnet" print(args) torch.manual_seed(args.seed) trainer = Trainer(args) print("Starting Epoch:", trainer.args.start_epoch) print("Total Epoches:", trainer.args.epochs) trainer.validation(0, args)