Ejemplo n.º 1
0
def main():
    print('Called with argument:', args)
    ctx = [mx.gpu(int(i)) for i in config.gpus.split(',')]
    logger, output_path = create_logger(config.output_path, args.cfg,
                                        config.dataset.image_set)
    shutil.copy2(os.path.join(curr_path, 'symbols', config.symbol + '.py'),
                 output_path)

    prefix = os.path.join(output_path, 'rfcn')
    logging.info('########## TRAIN rfcn WITH IMAGENET INIT AND RPN DETECTION')
    train_rcnn(config,
               config.dataset.dataset,
               config.dataset.image_set,
               config.dataset.root_path,
               config.dataset.dataset_path,
               args.frequent,
               config.default.kvstore,
               config.TRAIN.FLIP,
               config.TRAIN.SHUFFLE,
               config.TRAIN.RESUME,
               ctx,
               config.network.pretrained,
               config.network.pretrained_epoch,
               prefix,
               config.TRAIN.begin_epoch,
               config.TRAIN.end_epoch,
               train_shared=False,
               lr=config.TRAIN.lr,
               lr_step=config.TRAIN.lr_step,
               proposal=config.dataset.proposal,
               logger=logger)
Ejemplo n.º 2
0
def main():
    print ('Called with argument:', args)
    ctx = [mx.gpu(int(i)) for i in config.gpus.split(',')]
    logger, output_path = create_logger(config.output_path, args.cfg, config.dataset.image_set)
    shutil.copy2(os.path.join(curr_path, 'symbols', config.symbol + '.py'), output_path)

    prefix = os.path.join(output_path, 'rfcn')
    logging.info('########## TRAIN rfcn WITH IMAGENET INIT AND RPN DETECTION')
    train_rcnn(config, config.dataset.dataset, config.dataset.image_set, config.dataset.root_path, config.dataset.dataset_path,
               args.frequent, config.default.kvstore, config.TRAIN.FLIP, config.TRAIN.SHUFFLE, config.TRAIN.RESUME,
               ctx, config.network.pretrained, config.network.pretrained_epoch, prefix, config.TRAIN.begin_epoch,
               config.TRAIN.end_epoch, train_shared=False, lr=config.TRAIN.lr, lr_step=config.TRAIN.lr_step,
               proposal=config.dataset.proposal, logger=logger)
Ejemplo n.º 3
0
def alternate_train(args, ctx, pretrained, epoch):
    # set up logger
    logger, output_path = create_logger(config.output_path, args.cfg,
                                        config.dataset.image_set)

    # basic config
    begin_epoch = 0

    # logging.info('########## TRAIN RPN WITH IMAGENET INIT')
    rpn1_prefix = os.path.join(output_path, 'rpn1')

    if not os.path.exists(rpn1_prefix):
        os.makedirs(rpn1_prefix)

    config.TRAIN.BATCH_IMAGES = config.TRAIN.ALTERNATE.RPN_BATCH_IMAGES
    train_rpn(config,
              config.dataset.dataset,
              config.dataset.image_set,
              config.dataset.root_path,
              config.dataset.dataset_path,
              args.frequent,
              config.default.kvstore,
              config.TRAIN.FLIP,
              config.TRAIN.SHUFFLE,
              config.TRAIN.RESUME,
              ctx,
              pretrained,
              epoch,
              rpn1_prefix,
              begin_epoch,
              config.TRAIN.ALTERNATE.rpn1_epoch,
              train_shared=False,
              lr=config.TRAIN.ALTERNATE.rpn1_lr,
              lr_step=config.TRAIN.ALTERNATE.rpn1_lr_step,
              logger=logger,
              output_path=output_path)

    logging.info('########## GENERATE RPN DETECTION')
    image_sets = [iset for iset in config.dataset.image_set.split('+')]
    image_sets.extend(
        [iset for iset in config.dataset.test_image_set.split('+')])
    for image_set in image_sets:
        test_rpn(config,
                 config.dataset.dataset,
                 image_set,
                 config.dataset.root_path,
                 config.dataset.dataset_path,
                 ctx,
                 rpn1_prefix,
                 config.TRAIN.ALTERNATE.rpn1_epoch,
                 vis=False,
                 shuffle=False,
                 thresh=0,
                 logger=logger,
                 output_path=rpn1_prefix)

    logging.info('########## TRAIN rfcn WITH IMAGENET INIT AND RPN DETECTION')
    rfcn1_prefix = os.path.join(output_path, 'rfcn1')
    config.TRAIN.BATCH_IMAGES = config.TRAIN.ALTERNATE.RCNN_BATCH_IMAGES
    train_rcnn(config,
               config.dataset.dataset,
               config.dataset.image_set,
               config.dataset.root_path,
               config.dataset.dataset_path,
               args.frequent,
               config.default.kvstore,
               config.TRAIN.FLIP,
               config.TRAIN.SHUFFLE,
               config.TRAIN.RESUME,
               ctx,
               pretrained,
               epoch,
               rfcn1_prefix,
               begin_epoch,
               config.TRAIN.ALTERNATE.rfcn1_epoch,
               train_shared=False,
               lr=config.TRAIN.ALTERNATE.rfcn1_lr,
               lr_step=config.TRAIN.ALTERNATE.rfcn1_lr_step,
               proposal='rpn',
               logger=logger,
               output_path=rpn1_prefix)

    logging.info('########## TRAIN RPN WITH rfcn INIT')
    rpn2_prefix = os.path.join(output_path, 'rpn2')

    if not os.path.exists(rpn2_prefix):
        os.makedirs(rpn2_prefix)

    config.TRAIN.BATCH_IMAGES = config.TRAIN.ALTERNATE.RPN_BATCH_IMAGES
    train_rpn(config,
              config.dataset.dataset,
              config.dataset.image_set,
              config.dataset.root_path,
              config.dataset.dataset_path,
              args.frequent,
              config.default.kvstore,
              config.TRAIN.FLIP,
              config.TRAIN.SHUFFLE,
              config.TRAIN.RESUME,
              ctx,
              rfcn1_prefix,
              config.TRAIN.ALTERNATE.rpn2_epoch,
              rpn2_prefix,
              begin_epoch,
              config.TRAIN.ALTERNATE.rpn2_epoch,
              train_shared=True,
              lr=config.TRAIN.ALTERNATE.rpn2_lr,
              lr_step=config.TRAIN.ALTERNATE.rpn2_lr_step,
              logger=logger,
              output_path=output_path)

    logging.info('########## GENERATE RPN  FIXED_PARAMS_SHAREDDETECTION')
    image_sets = [iset for iset in config.dataset.image_set.split('+')]
    for image_set in image_sets:
        test_rpn(config,
                 config.dataset.dataset,
                 image_set,
                 config.dataset.root_path,
                 config.dataset.dataset_path,
                 ctx,
                 rpn2_prefix,
                 config.TRAIN.ALTERNATE.rpn2_epoch,
                 vis=False,
                 shuffle=False,
                 thresh=0,
                 logger=logger,
                 output_path=rpn2_prefix)

    logger.info('########## COMBINE RPN2 WITH rfcn1')
    rfcn2_prefix = os.path.join(output_path, 'rfcn2')
    combine_model(rpn2_prefix, config.TRAIN.ALTERNATE.rpn2_epoch, rfcn1_prefix,
                  config.TRAIN.ALTERNATE.rfcn1_epoch, rfcn2_prefix, 0)

    logger.info('########## TRAIN rfcn WITH RPN INIT AND DETECTION')
    config.TRAIN.BATCH_IMAGES = config.TRAIN.ALTERNATE.RCNN_BATCH_IMAGES
    train_rcnn(config,
               config.dataset.dataset,
               config.dataset.image_set,
               config.dataset.root_path,
               config.dataset.dataset_path,
               args.frequent,
               config.default.kvstore,
               config.TRAIN.FLIP,
               config.TRAIN.SHUFFLE,
               config.TRAIN.RESUME,
               ctx,
               rfcn2_prefix,
               0,
               rfcn2_prefix,
               begin_epoch,
               config.TRAIN.ALTERNATE.rfcn2_epoch,
               train_shared=True,
               lr=config.TRAIN.ALTERNATE.rfcn2_lr,
               lr_step=config.TRAIN.ALTERNATE.rfcn2_lr_step,
               proposal='rpn',
               logger=logger,
               output_path=rpn2_prefix)

    logger.info('########## COMBINE RPN2 WITH rfcn2')
    final_prefix = os.path.join(output_path, 'final')
    combine_model(rpn2_prefix, config.TRAIN.ALTERNATE.rpn2_epoch, rfcn2_prefix,
                  config.TRAIN.ALTERNATE.rfcn2_epoch, final_prefix, 0)
def alternate_train(args, ctx, pretrained, epoch):
    # set up logger
    logger, output_path = create_logger(config.output_path, args.cfg, config.dataset.image_set)

    # basic config
    begin_epoch = 0

    # logging.info('########## TRAIN RPN WITH IMAGENET INIT')
    rpn1_prefix = os.path.join(output_path, 'rpn1')

    if not os.path.exists(rpn1_prefix):
        os.makedirs(rpn1_prefix)

    config.TRAIN.BATCH_IMAGES = config.TRAIN.ALTERNATE.RPN_BATCH_IMAGES
    train_rpn(config, config.dataset.dataset, config.dataset.image_set, config.dataset.root_path, config.dataset.dataset_path,
              args.frequent, config.default.kvstore, config.TRAIN.FLIP, config.TRAIN.SHUFFLE, config.TRAIN.RESUME,
              ctx, pretrained, epoch, rpn1_prefix, begin_epoch, config.TRAIN.ALTERNATE.rpn1_epoch, train_shared=False,
              lr=config.TRAIN.ALTERNATE.rpn1_lr, lr_step=config.TRAIN.ALTERNATE.rpn1_lr_step, logger=logger, output_path=output_path)

    logging.info('########## GENERATE RPN DETECTION')
    image_sets = [iset for iset in config.dataset.image_set.split('+')]
    image_sets.extend([iset for iset in config.dataset.test_image_set.split('+')])
    for image_set in image_sets:
        test_rpn(config, config.dataset.dataset, image_set, config.dataset.root_path, config.dataset.dataset_path,
                 ctx, rpn1_prefix, config.TRAIN.ALTERNATE.rpn1_epoch, vis=False, shuffle=False, thresh=0, logger=logger,
                 output_path=rpn1_prefix)

    logging.info('########## TRAIN rfcn WITH IMAGENET INIT AND RPN DETECTION')
    rfcn1_prefix = os.path.join(output_path, 'rfcn1')
    config.TRAIN.BATCH_IMAGES = config.TRAIN.ALTERNATE.RCNN_BATCH_IMAGES
    train_rcnn(config, config.dataset.dataset, config.dataset.image_set, config.dataset.root_path, config.dataset.dataset_path,
               args.frequent, config.default.kvstore, config.TRAIN.FLIP, config.TRAIN.SHUFFLE, config.TRAIN.RESUME,
               ctx, pretrained, epoch, rfcn1_prefix, begin_epoch, config.TRAIN.ALTERNATE.rfcn1_epoch, train_shared=False,
               lr=config.TRAIN.ALTERNATE.rfcn1_lr, lr_step=config.TRAIN.ALTERNATE.rfcn1_lr_step, proposal='rpn', logger=logger,
               output_path=rpn1_prefix)

    logging.info('########## TRAIN RPN WITH rfcn INIT')
    rpn2_prefix = os.path.join(output_path, 'rpn2')

    if not os.path.exists(rpn2_prefix):
        os.makedirs(rpn2_prefix)

    config.TRAIN.BATCH_IMAGES = config.TRAIN.ALTERNATE.RPN_BATCH_IMAGES
    train_rpn(config, config.dataset.dataset, config.dataset.image_set, config.dataset.root_path, config.dataset.dataset_path,
              args.frequent, config.default.kvstore, config.TRAIN.FLIP, config.TRAIN.SHUFFLE, config.TRAIN.RESUME,
              ctx, rfcn1_prefix, config.TRAIN.ALTERNATE.rpn2_epoch, rpn2_prefix, begin_epoch, config.TRAIN.ALTERNATE.rpn2_epoch,
              train_shared=True, lr=config.TRAIN.ALTERNATE.rpn2_lr, lr_step=config.TRAIN.ALTERNATE.rpn2_lr_step, logger=logger,
              output_path=output_path)

    logging.info('########## GENERATE RPN DETECTION')
    image_sets = [iset for iset in config.dataset.image_set.split('+')]
    for image_set in image_sets:
        test_rpn(config, config.dataset.dataset, image_set, config.dataset.root_path, config.dataset.dataset_path,
                 ctx, rpn2_prefix, config.TRAIN.ALTERNATE.rpn2_epoch, vis=False, shuffle=False, thresh=0, logger=logger,
                 output_path=rpn2_prefix)

    logger.info('########## COMBINE RPN2 WITH rfcn1')
    rfcn2_prefix = os.path.join(output_path, 'rfcn2')
    combine_model(rpn2_prefix, config.TRAIN.ALTERNATE.rpn2_epoch, rfcn1_prefix, config.TRAIN.ALTERNATE.rfcn1_epoch, rfcn2_prefix, 0)

    logger.info('########## TRAIN rfcn WITH RPN INIT AND DETECTION')
    config.TRAIN.BATCH_IMAGES = config.TRAIN.ALTERNATE.RCNN_BATCH_IMAGES
    train_rcnn(config, config.dataset.dataset, config.dataset.image_set, config.dataset.root_path, config.dataset.dataset_path,
               args.frequent, config.default.kvstore, config.TRAIN.FLIP, config.TRAIN.SHUFFLE, config.TRAIN.RESUME,
               ctx, rfcn2_prefix, 0, rfcn2_prefix, begin_epoch, config.TRAIN.ALTERNATE.rfcn2_epoch, train_shared=True,
               lr=config.TRAIN.ALTERNATE.rfcn2_lr, lr_step=config.TRAIN.ALTERNATE.rfcn2_lr_step, proposal='rpn', logger=logger,
               output_path=rpn2_prefix)

    logger.info('########## COMBINE RPN2 WITH rfcn2')
    final_prefix = os.path.join(output_path, 'final')
    combine_model(rpn2_prefix, config.TRAIN.ALTERNATE.rpn2_epoch, rfcn2_prefix, config.TRAIN.ALTERNATE.rfcn2_epoch, final_prefix, 0)