예제 #1
0
def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--dataset', type=str, default='MiniImageNet', choices=['MiniImageNet', 'TieredImagenet'])
    parser.add_argument('--backbone_class', type=str, default='Res12', choices=['ConvNet', 'ConvAttNet', 'Res12',
                                                                                'Res18', 'ResNest12', 'SAN'])
    parser.add_argument('--query', type=int, default=15)

    parser.add_argument('--label-smoothing', type=float, default=0.0, help='label-smoothing (default eta: 0.0)')
    parser.add_argument('--mixup', type=float, default=0.0, help='mixup (default eta: 0.0)')
    parser.add_argument('--rand-aug', action='store_true', default=False, help='random augment')
    parser.add_argument('--augment', type=str, default='none')

    parser.add_argument('--batch_size', type=int, default=32)
    parser.add_argument('--max_epoch', type=int, default=2)
    parser.add_argument('--lr', type=float, default=0.0008)
    parser.add_argument('--lr_scheduler', type=str, default='cosine', help='learning rate scheduler (default: cos)')
    parser.add_argument('--step', type=str, default='[2,3,4,5]', help='Decrease learning rate at these epochs.')
    parser.add_argument('--gamma', type=float, default=0.1)
    parser.add_argument('--no-bn-wd', action='store_true', default=False, help='no bias decay')
    parser.add_argument('--warmup-epochs', type=int, default=0, help='number of warmup epochs (default: 0)')
    parser.add_argument('--weight-decay', type=float, default=1e-4, help='SGD weight decay (default: 1e-4)')

    parser.add_argument('--gpu', type=str, default='1')
    parser.add_argument('--resume', action='store_true', default=False)

    parser.add_argument('--finetune', action='store_true', default=False)
    parser.add_argument('--samples_per_class', type=int, default=50)
    parser.add_argument('--num_test_episodes', type=int, default=2000)
    parser.add_argument('--save_dir', type=str, default='./checkpoints')
    parser.add_argument('--init_weights', type=str, default='./checkpoints/best/Res12-pre.pth')
    parser.add_argument('--test_size', type=int, default=84)
    parser.add_argument('--eval_interval', type=int, default=1)
    parser.add_argument('--start', type=int, default=84)
    parser.add_argument('--end', type=int, default=168)
    args = parser.parse_args()
    args.orig_imsize = -1
    pprint(vars(args))
    set_gpu(args.gpu)

    return args
예제 #2
0
import numpy as np
import torch
import os
import json
from model.trainer.fsl_trainer import FSLTrainer
from model.utils import (
    pprint,
    set_gpu,
    get_command_line_parser,
    postprocess_args,
)
# from ipdb import launch_ipdb_on_exception

if __name__ == '__main__':
    parser = get_command_line_parser()
    args = postprocess_args(parser.parse_args())
    # with launch_ipdb_on_exception():
    pprint(vars(args))

    print('Number device: ', torch.cuda.device_count())
    set_gpu(args.gpu)
    trainer = FSLTrainer(args)
    # trainer.train()
    trainer.evaluate_test()
    trainer.final_record()
    print(args.save_path)
예제 #3
0
def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--dataset',
                        type=str,
                        default='MiniImageNet',
                        choices=['MiniImageNet', 'TieredImagenet'])
    parser.add_argument('--backbone_class',
                        type=str,
                        default='ConvNet',
                        choices=[
                            'ConvNet', 'ConvAttNet', 'Res12', 'Res18',
                            'ResNest12', 'SAN'
                        ])
    parser.add_argument('--query', type=int, default=15)

    parser.add_argument('--label-smoothing',
                        type=float,
                        default=0.0,
                        help='label-smoothing (default eta: 0.0)')
    parser.add_argument('--mixup',
                        type=float,
                        default=0.0,
                        help='mixup (default eta: 0.0)')
    parser.add_argument('--rand-aug',
                        action='store_true',
                        default=False,
                        help='random augment')
    parser.add_argument('--augment', type=str, default='none')

    parser.add_argument('--batch_size', type=int, default=32)
    parser.add_argument('--max_epoch', type=int, default=500)
    parser.add_argument('--lr', type=float, default=0.1)
    parser.add_argument('--lr_scheduler',
                        type=str,
                        default='multistep',
                        help='learning rate scheduler (default: cos)')
    parser.add_argument('--step',
                        type=str,
                        default='[2,3,4,5]',
                        help='Decrease learning rate at these epochs.')
    parser.add_argument('--gamma', type=float, default=0.1)
    parser.add_argument('--no-bn-wd',
                        action='store_true',
                        default=False,
                        help='no bias decay')
    parser.add_argument('--warmup-epochs',
                        type=int,
                        default=5,
                        help='number of warmup epochs (default: 0)')
    parser.add_argument('--weight-decay',
                        type=float,
                        default=1e-4,
                        help='SGD weight decay (default: 1e-4)')

    parser.add_argument('--gpu', type=str, default='0')
    parser.add_argument('--resume', action='store_true', default=False)

    parser.add_argument('--finetune', action='store_true', default=False)
    parser.add_argument('--samples_per_class', type=int, default=50)

    parser.add_argument('--save_dir', type=str, default='./checkpoints')
    args = parser.parse_args()
    args.orig_imsize = -1
    pprint(vars(args))
    set_gpu(args.gpu)

    save_path1 = '-'.join(['PreTrain', args.dataset, args.backbone_class])
    save_path1 += 'LS{}MX{}'.format(args.label_smoothing, args.mixup)
    if args.lr_scheduler == 'cosine':
        save_path2 = 'Bsz{}Epoch-{}-Cos-lr{}decay{}'.format(
            args.batch_size, args.max_epoch, args.lr, args.weight_decay)
    elif args.lr_scheduler == 'step':
        save_path2 = 'Bsz{}Epoch-{}-Step-lr{}-{}-{}decay{}'.format(
            args.batch_size, args.max_epoch, args.lr, args.step, args.gamma,
            args.weight_decay)
    elif args.lr_scheduler == 'multistep':
        save_path2 = 'Bsz{}Epoch-{}-MultiStep-lr{}-{}-{}decay{}'.format(
            args.batch_size, args.max_epoch, args.lr, args.step, args.gamma,
            args.weight_decay)
    else:
        raise ValueError('No Such Schedule')

    if args.warmup_epochs > 0:
        save_path2 += 'Warmup{}'.format(args.warmup_epochs)

    if args.rand_aug:
        save_path2 += '-RandAug'

    if args.no_bn_wd:
        save_path2 += '-no-bn-wd'

    args.save_path = osp.join(save_path1, save_path2)
    if not os.path.exists(os.path.join(args.save_dir, save_path1)):
        os.mkdir(os.path.join(args.save_dir, save_path1))
    return args
예제 #4
0
def get_args():
    parser = argparse.ArgumentParser()
    # Basic Parameters
    parser.add_argument('--dataset',
                        type=str,
                        default='SHHB',
                        choices=['SHHA', 'SHHB', 'cdpeople', 'cdvehicle'])
    parser.add_argument(
        '--backbone_class',
        type=str,
        default='vgg19',
        choices=['VGG16', 'Res12', 'Res18', 'resnet18', 'pretrain', 'vgg19'])

    # Optimization Parameters
    parser.add_argument('--max_epoch', type=int, default=500)
    parser.add_argument('--lr', type=float, default=0.0001)
    parser.add_argument('--init_weights', type=str, default=None)
    parser.add_argument('--batch_size', type=int, default=8)
    parser.add_argument('--image_size', type=int, default=225)
    parser.add_argument('--prefetch', type=int, default=16)
    parser.add_argument('--seed', type=int, default=3035)
    parser.add_argument('--lambda_reg', type=float, default=0.1)

    # for video
    parser.add_argument('--seg_len', type=int, default=3)

    # Model Parameters
    parser.add_argument('--model_type',
                        type=str,
                        default='SACANet',
                        choices=[
                            'MCNN', 'AlexNet', 'VGG', 'VGG_DECODER', 'Res50',
                            'Res101', 'SACANet'
                        ])

    # Other Parameters
    parser.add_argument('--gpu', default='0')
    parser.add_argument('--LOG_PARA', type=float, default=100)  #100

    args, unknown_args = parser.parse_known_args()

    set_gpu(args.gpu)

    save_path1 = '{}-{}-{}'.format(args.dataset, args.model_type,
                                   args.backbone_class)
    save_path2 = '_'.join([
        str(args.lr),
        str(args.batch_size),
        str(args.max_epoch),
        datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    ])

    args.init_path = os.path.join('./saves/initialization', 'resnet18.pth')
    args.pretrain_path = os.path.join('./saves')

    args.save_path1 = os.path.join('./exp_log/', save_path1)
    args.save_path2 = os.path.join('./exp_log/', save_path1, save_path2)

    create_exp_dir(args.save_path1)
    create_exp_dir(args.save_path2)
    return args