def setup_folder(args, cfg, phase='train'): # setup_folder config cfg_path = osp.join(cfg.GENERAL.CFG_ROOT, args.job_group, args.cfg_name + '.yml') merge_cfg_from_file(cfg_path) cfg.GENERAL.JOB_GROUP = args.job_group # setup_folder weights folder snapshot_dir = osp.join(cfg.GENERAL.WEIGHTS_ROOT, cfg.GENERAL.JOB_GROUP, args.cfg_name) warn = False if cfg.GENERAL.JOB_GROUP == 'tests' or 'debug' else True if phase == 'train': create_if_not_exist( [cfg.GENERAL.WEIGHTS_ROOT, cfg.GENERAL.HISTORY_ROOT], warn=warn) create_if_not_exist([ osp.join(cfg.GENERAL.WEIGHTS_ROOT, cfg.GENERAL.JOB_GROUP), osp.join(cfg.GENERAL.HISTORY_ROOT, cfg.GENERAL.JOB_GROUP) ], warn=warn) create_if_not_exist(snapshot_dir, warn=warn) # setup_folder logger # TODO image logger another writer log_dir = osp.join( osp.join(cfg.LOG.ROOT_DIR, cfg.GENERAL.JOB_GROUP + '_' + args.cfg_name)) tb_writer = TBWriter( log_dir, { 'phase': phase, 'show_pr_curve': cfg.LOG.SHOW_PR_CURVE, 'show_test_image': cfg.LOG.SHOW_TEST_IMAGE }) setup_cuda(cfg, args.cuda, args.devices) return tb_writer, cfg_path, snapshot_dir, log_dir
def setup_folder(args, cfg, phase='train'): # setup_folder config time_stamp = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S') cfg_path = args.cfg_name #osp.join(cfg.GENERAL.CFG_ROOT, args.job_group, args.cfg_name+'.yml') args.cfg_name = os.path.basename(args.cfg_name)[:-4] merge_cfg_from_file(cfg_path) cfg.GENERAL.JOB_GROUP = args.job_group # setup_folder weights folder snapshot_dir = osp.join(cfg.GENERAL.WEIGHTS_ROOT, cfg.GENERAL.JOB_GROUP, args.cfg_name) warn = False if cfg.GENERAL.JOB_GROUP == 'tests' or 'debug' else True if phase == 'train': create_if_not_exist( [cfg.GENERAL.WEIGHTS_ROOT, cfg.GENERAL.HISTORY_ROOT], warn=warn) create_if_not_exist([ osp.join(cfg.GENERAL.WEIGHTS_ROOT, cfg.GENERAL.JOB_GROUP), osp.join(cfg.GENERAL.HISTORY_ROOT, cfg.GENERAL.JOB_GROUP) ], warn=warn) create_if_not_exist(snapshot_dir, warn=warn) log_dir = osp.join( osp.join( cfg.LOG.ROOT_DIR, cfg.GENERAL.JOB_GROUP + '_' + args.cfg_name + '_' + time_stamp)) elif phase == 'eval': log_dir = osp.join( osp.join(cfg.LOG.ROOT_DIR, cfg.GENERAL.JOB_GROUP + '_' + args.cfg_name)) # setup_folder logger # TODO image logger another writer tb_writer = None if args.save_log: tb_writer = TBWriter( log_dir, { 'phase': phase, 'show_pr_curve': cfg.LOG.SHOW_PR_CURVE, 'show_test_image': cfg.LOG.SHOW_TEST_IMAGE, 'show_pr_scalar': cfg.LOG.SHOW_PR_SCALAR, 'show_maxconf_box': cfg.LOG.SHOW_MAXCONF_BOX }) setup_cuda(cfg, args.cuda, args.devices, args.net_gpus, args.loss_gpu) return tb_writer, cfg_path, snapshot_dir, log_dir
def test_loader(): # TODO: a strange bug: datasets loader hangs in cpu mode os.environ["CUDA_VISIBLE_DEVICES"] = cfg.CUDA_VISIBLE_DEVICES cfg_path = osp.join(cfg.CFG_ROOT, 'coco.yml') merge_cfg_from_file(cfg_path) dataset = COCODetection( cfg.DATASET.DATASET_DIR, cfg.DATASET.TEST_SETS, SSDAugmentation(cfg.DATASET.IMAGE_SIZE, dataset_mean, use_base=True), COCOAnnotationTransform()) loader = data.DataLoader(dataset, batch_size=cfg.DATASET.EVAL_BATCH_SIZE, num_workers=cfg.DATASET.NUM_WORKERS, shuffle=False, collate_fn=detection_collate, pin_memory=True) print(len(dataset)) for i, (images, targets, extra) in enumerate(loader): print(i)
def test_vis(): cfg_name = 'test_data_voc' cfg_path = osp.join(cfg.GENERAL.CFG_ROOT, 'tests', cfg_name+'.yml') merge_cfg_from_file(cfg_path) val_loader = dataset_factory(phase='train', cfg=cfg) dataset = val_loader.dataset log_dir = osp.join(osp.join(cfg.LOG.ROOT_DIR, 'tests' + '_' + cfg_name)) # tb_writer = TBWriter(log_dir, {'aug_vis_list': [3, 4, 5, 6, 8]}) tb_writer = TBWriter(log_dir, {'aug_vis_list': [4, 5, 8]}) # tb_writer = None for img_idx in range(len(dataset)): # if img_idx >= 100: # break tb_writer.cfg['aug'] = True tb_writer.cfg['steps'] = img_idx tb_writer.cfg['img_id'] = img_idx tb_writer.cfg['thick'] = 1 image, target, extra = dataset.pull_item(img_idx, tb_writer) print(image.shape) tb_writer.writer.file_writer.flush()
parser.add_argument('--cleanup', default=True, type=str2bool, help='Cleanup and remove results files following eval') parser.add_argument('--tocaffe', default=False, type=bool, help='trans to caffe or not') args = parser.parse_args() if __name__ == '__main__': tb_writer, cfg_path, snapshot_dir, log_dir = setup_folder(args, cfg, phase='eval') merge_cfg_from_file(cfg_path) cfg.DATASET.NUM_EVAL_PICS = 0 # args.trained_model = './results/vgg16_ssd_coco_24.4.pth' # args.trained_model = './results/ssd300_mAP_77.43_v2.pth' args.trained_model = 'dangercar_5000.pth' model_dir = osp.join(snapshot_dir, args.trained_model) print('eval model:{}'.format(model_dir)) setup_cuda(cfg, args.cuda, args.devices) np.set_printoptions(precision=3, suppress=True, edgeitems=4) loader = dataset_factory(phase='eval', cfg=cfg) # load net net, priors, _ = model_factory(phase='eval', cfg=cfg)