def alternate_train(args, ctx, pretrained, epoch, rpn_epoch, rcnn_epoch): # set up logger logging.basicConfig() logger = logging.getLogger() logger.setLevel(logging.INFO) # basic config begin_epoch = 0 config.TRAIN.BG_THRESH_LO = 0.0 logging.info('########## TRAIN RPN WITH IMAGENET INIT') train_rpn(args, ctx, pretrained, epoch, 'model/rpn1', begin_epoch, rpn_epoch) logging.info('########## GENERATE RPN DETECTION') test_rpn(args, ctx[0], 'model/rpn1', rpn_epoch) logging.info('########## TRAIN RCNN WITH IMAGENET INIT AND RPN DETECTION') train_rcnn(args, ctx, pretrained, epoch, 'model/rcnn1', begin_epoch, rcnn_epoch) logging.info('########## TRAIN RPN WITH RCNN INIT') train_rpn(args, ctx, 'model/rcnn1', rcnn_epoch, 'model/rpn2', begin_epoch, rpn_epoch, finetune=True) logging.info('########## GENERATE RPN DETECTION') test_rpn(args, ctx[0], 'model/rpn2', rpn_epoch) logger.info('########## COMBINE RPN2 WITH RCNN1') combine_model('model/rpn2', rpn_epoch, 'model/rcnn1', rcnn_epoch, 'model/rcnn2', 0) logger.info('########## TRAIN RCNN WITH RPN INIT AND DETECTION') train_rcnn(args, ctx, 'model/rcnn2', 0, 'model/rcnn2', begin_epoch, rcnn_epoch, finetune=True) logger.info('########## COMBINE RPN2 WITH RCNN2') combine_model('model/rpn2', rpn_epoch, 'model/rcnn2', rcnn_epoch, 'model/final', 0)
def alternate_train(args, ctx, pretrained, epoch, rpn_epoch, rpn_lr, rpn_lr_step, rcnn_epoch, rcnn_lr, rcnn_lr_step): # set up logger logging.basicConfig() logger = logging.getLogger() logger.setLevel(logging.INFO) # basic config begin_epoch = 8 config.TRAIN.BG_THRESH_LO = 0.0 # model path model_path = args.prefix ''' logging.info('########## TRAIN RPN WITH IMAGENET INIT') train_rpn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, pretrained, epoch, model_path+'/rpn1', begin_epoch, rpn_epoch, train_shared=False, lr=rpn_lr, lr_step=rpn_lr_step) logging.info('########## GENERATE RPN DETECTION') image_sets = [iset for iset in args.image_set.split('+')] for image_set in image_sets: test_rpn(args.network, args.dataset, image_set, args.root_path, args.dataset_path, ctx[0], model_path+'/rpn1', rpn_epoch, vis=False, shuffle=False, thresh=0) ''' ''' logging.info('########## TRAIN RCNN WITH IMAGENET INIT AND RPN DETECTION') train_maskrcnn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, pretrained, epoch, model_path+'/rcnn1', begin_epoch, rcnn_epoch, train_shared=False, lr=rcnn_lr, lr_step=rcnn_lr_step, proposal='rpn', maskrcnn_stage='rcnn1') ''' logging.info('########## TRAIN RPN WITH RCNN INIT') train_rpn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, model_path+'/rcnn1', rcnn_epoch, model_path+'/rpn2', begin_epoch, rpn_epoch, train_shared=True, lr=rpn_lr, lr_step=rpn_lr_step) logging.info('########## GENERATE RPN DETECTION') image_sets = [iset for iset in args.image_set.split('+')] for image_set in image_sets: test_rpn(args.network, args.dataset, image_set, args.root_path, args.dataset_path, ctx[0], model_path+'/rpn2', rpn_epoch, vis=False, shuffle=False, thresh=0) logger.info('########## COMBINE RPN2 WITH RCNN1') combine_model(model_path+'/rpn2', rpn_epoch, model_path+'/rcnn1', rcnn_epoch, model_path+'/rcnn2', 0) logger.info('########## TRAIN RCNN WITH RPN INIT AND DETECTION') train_maskrcnn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, model_path+'/rcnn2', 0, model_path+'/rcnn2', begin_epoch, rcnn_epoch, train_shared=True, lr=rcnn_lr, lr_step=rcnn_lr_step, proposal='rpn', maskrcnn_stage='rcnn2') logger.info('########## COMBINE RPN2 WITH RCNN2') combine_model(model_path+'/rpn2', rpn_epoch, model_path+'/rcnn2', rcnn_epoch, model_path+'/final', 0)
def alternate_train(args, ctx, pretrained, epoch, rpn_epoch, rpn_lr, rpn_lr_step, rcnn_epoch, rcnn_lr, rcnn_lr_step): # set up logger # logging.basicConfig(filename="mask_rcnn_alternate_train_%d.log" % int(time.time())) logging.basicConfig() logger = logging.getLogger() logger.setLevel(logging.INFO) # basic config begin_epoch = 0 config.TRAIN.BG_THRESH_LO = 0.0 # model path model_path = args.prefix logging.info('########## TRAIN RPN WITH RCNN INIT') train_rpn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, model_path + '/rcnn1', rcnn_epoch, model_path + '/rpn2', begin_epoch, rpn_epoch, train_shared=True, lr=rpn_lr, lr_step=rpn_lr_step) os.environ['MXNET_CUDNN_AUTOTUNE_DEFAULT'] = '1' logging.info('########## GENERATE RPN DETECTION') image_sets = [iset for iset in args.image_set.split('+')] for image_set in image_sets: test_rpn(args.network, args.dataset, image_set, args.root_path, args.dataset_path, ctx, model_path + '/rpn2', rpn_epoch, vis=False, shuffle=False, thresh=0) logger.info('########## COMBINE RPN2 WITH RCNN1') combine_model(model_path + '/rpn2', rpn_epoch, model_path + '/rcnn1', rcnn_epoch, model_path + '/rcnn2', 0)
def alternate_train(args, ctx, pretrained, epoch, rpn_epoch, rpn_lr, rpn_lr_step, rcnn_epoch, rcnn_lr, rcnn_lr_step): # set up logger logging.basicConfig() logger = logging.getLogger() logger.setLevel(logging.INFO) # basic config begin_epoch = 0 config.TRAIN.BG_THRESH_LO = 0.0 logging.info('########## TRAIN RPN WITH IMAGENET INIT') train_rpn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, pretrained, epoch, 'model/rpn1', begin_epoch, rpn_epoch, train_shared=False, lr=rpn_lr, lr_step=rpn_lr_step) logging.info('########## GENERATE RPN DETECTION') image_sets = [iset for iset in args.image_set.split('+')] for image_set in image_sets: test_rpn(args.network, args.dataset, image_set, args.root_path, args.dataset_path, ctx[0], 'model/rpn1', rpn_epoch, vis=False, shuffle=False, thresh=0) logging.info('########## TRAIN RCNN WITH IMAGENET INIT AND RPN DETECTION') train_rcnn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, pretrained, epoch, 'model/rcnn1', begin_epoch, rcnn_epoch, train_shared=False, lr=rcnn_lr, lr_step=rcnn_lr_step, proposal='rpn') logging.info('########## TRAIN RPN WITH RCNN INIT') train_rpn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, 'model/rcnn1', rcnn_epoch, 'model/rpn2', begin_epoch, rpn_epoch, train_shared=True, lr=rpn_lr, lr_step=rpn_lr_step) logging.info('########## GENERATE RPN DETECTION') image_sets = [iset for iset in args.image_set.split('+')] for image_set in image_sets: test_rpn(args.network, args.dataset, image_set, args.root_path, args.dataset_path, ctx[0], 'model/rpn2', rpn_epoch, vis=False, shuffle=False, thresh=0) logger.info('########## COMBINE RPN2 WITH RCNN1') combine_model('model/rpn2', rpn_epoch, 'model/rcnn1', rcnn_epoch, 'model/rcnn2', 0) logger.info('########## TRAIN RCNN WITH RPN INIT AND DETECTION') train_rcnn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, 'model/rcnn2', 0, 'model/rcnn2', begin_epoch, rcnn_epoch, train_shared=True, lr=rcnn_lr, lr_step=rcnn_lr_step, proposal='rpn') logger.info('########## COMBINE RPN2 WITH RCNN2') combine_model('model/rpn2', rpn_epoch, 'model/rcnn2', rcnn_epoch, 'model/final', 0)
def alternate_train(args, ctx, pretrained, epoch, rpn_epoch, rpn_lr, rpn_lr_step, rcnn_epoch, rcnn_lr, rcnn_lr_step): # basic config begin_epoch = 0 config.TRAIN.BG_THRESH_LO = 0.0 logger.info('########## TRAIN RPN WITH IMAGENET INIT') """ train_rpn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, pretrained, epoch, 'model/rpn1', begin_epoch, rpn_epoch, train_shared=False, lr=rpn_lr, lr_step=rpn_lr_step) """ logger.info('########## GENERATE RPN DETECTION') image_sets = [iset for iset in args.image_set.split('+')] for image_set in image_sets: test_rpn(args.network, args.dataset, image_set, args.root_path, args.dataset_path, ctx[0], 'model/blouse', 0, vis=True, shuffle=False, thresh=0.97) logger.info('########## TRAIN RCNN WITH IMAGENET INIT AND RPN DETECTION') train_rcnn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, pretrained, epoch, 'model/rcnn1', begin_epoch, rcnn_epoch, train_shared=False, lr=rcnn_lr, lr_step=rcnn_lr_step, proposal='rpn') logger.info('########## TRAIN RPN WITH RCNN INIT') train_rpn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, 'model/rcnn1', rcnn_epoch, 'model/rpn2', begin_epoch, rpn_epoch, train_shared=True, lr=rpn_lr, lr_step=rpn_lr_step) logger.info('########## GENERATE RPN DETECTION') image_sets = [iset for iset in args.image_set.split('+')] for image_set in image_sets: test_rpn(args.network, args.dataset, image_set, args.root_path, args.dataset_path, ctx[0], 'model/rpn2', rpn_epoch, vis=False, shuffle=False, thresh=0) logger.info('########## COMBINE RPN2 WITH RCNN1') combine_model('model/rpn2', rpn_epoch, 'model/rcnn1', rcnn_epoch, 'model/rcnn2', 0) logger.info('########## TRAIN RCNN WITH RPN INIT AND DETECTION') train_rcnn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, 'model/rcnn2', 0, 'model/rcnn2', begin_epoch, rcnn_epoch, train_shared=True, lr=rcnn_lr, lr_step=rcnn_lr_step, proposal='rpn') logger.info('########## COMBINE RPN2 WITH RCNN2') combine_model('model/rpn2', rpn_epoch, 'model/rcnn2', rcnn_epoch, 'model/final', 0)
def alternate_combine(args, ctx, pretrained, epoch, rpn_epoch, rpn_lr, rpn_lr_step, rcnn_epoch, rcnn_lr, rcnn_lr_step): # set up logger logging.basicConfig() logger = logging.getLogger() logger.setLevel(logging.INFO) # basic config begin_epoch = 0 config.TRAIN.BG_THRESH_LO = 0.0 # model path model_path = args.prefix try: logger.info('########## COMBINE RPN1 WITH RCNN1') logger.info('rpn_epoch %d, rcnn_epoch %d' % (rpn_epoch, rcnn_epoch)) combine_model(model_path + '/rpn1', rpn_epoch, model_path + '/rcnn1', rcnn_epoch, model_path + '/pre', 0) logger.info('########## COMBINE RPN2 WITH RCNN1') combine_model(model_path + '/rpn2', rpn_epoch, model_path + '/rcnn1', rcnn_epoch, model_path + '/rcnn2', 0) logger.info('########## COMBINE RPN2 WITH RCNN2') combine_model(model_path + '/rpn1', rpn_epoch, model_path + '/rcnn1', rcnn_epoch, model_path + '/final', 0) except: print("Didn't finish training")
def alternate_train(args, ctx, pretrained, epoch, rpn_epoch, rpn_lr, rpn_lr_step, rcnn_epoch, rcnn_lr, rcnn_lr_step): # set up logger # logging.basicConfig(filename="mask_rcnn_alternate_train_%d.log" % int(time.time())) logging.basicConfig() logger = logging.getLogger() logger.setLevel(logging.INFO) # basic config begin_epoch = 0 config.TRAIN.BG_THRESH_LO = 0.0 # model path model_path = args.prefix logger.info('########## TRAIN RCNN WITH RPN INIT AND DETECTION') train_maskrcnn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, model_path + '/rcnn2', 0, model_path + '/rcnn2', begin_epoch, rcnn_epoch, train_shared=True, lr=rcnn_lr, lr_step=rcnn_lr_step, proposal='rpn', maskrcnn_stage='rcnn2') logger.info('########## COMBINE RPN2 WITH RCNN2') combine_model(model_path + '/rpn2', rpn_epoch, model_path + '/rcnn2', rcnn_epoch, model_path + '/final', 0)
def alternate_train(args, ctx, pretrained, epoch, rpn_epoch, rpn_lr, rpn_lr_step, rcnn_epoch, rcnn_lr, rcnn_lr_step): # set up logger logging.basicConfig() logger = logging.getLogger() logger.setLevel(logging.INFO) # basic config begin_epoch = 0 config.TRAIN.BG_THRESH_LO = 0.0 logging.info('########## TRAIN RPN WITH IMAGENET INIT') train_rpn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, pretrained, epoch, 'model/rpn1', begin_epoch, rpn_epoch, train_shared=False, lr=rpn_lr, lr_step=rpn_lr_step, use_data_augmentation=args.use_data_augmentation) logging.info('########## GENERATE RPN DETECTION') image_sets = [iset for iset in args.image_set.split('+')] for image_set in image_sets: test_rpn(args.network, args.dataset, image_set, args.root_path, args.dataset_path, ctx[0], 'model/rpn1', rpn_epoch, vis=False, shuffle=False, thresh=0) logging.info('########## TRAIN RCNN WITH IMAGENET INIT AND RPN DETECTION') train_rcnn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, pretrained, epoch, 'model/rcnn1', begin_epoch, rcnn_epoch, train_shared=False, lr=rcnn_lr, lr_step=rcnn_lr_step, proposal='rpn', use_data_augmentation=args.use_data_augmentation, use_global_context=args.use_global_context, use_roi_align=args.use_roi_align) logging.info('########## TRAIN RPN WITH RCNN INIT') train_rpn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, 'model/rcnn1', rcnn_epoch, 'model/rpn2', begin_epoch, rpn_epoch, train_shared=True, lr=rpn_lr, lr_step=rpn_lr_step, use_data_augmentation=args.use_data_augmentation) logging.info('########## GENERATE RPN DETECTION') image_sets = [iset for iset in args.image_set.split('+')] for image_set in image_sets: test_rpn(args.network, args.dataset, image_set, args.root_path, args.dataset_path, ctx[0], 'model/rpn2', rpn_epoch, vis=False, shuffle=False, thresh=0) logger.info('########## COMBINE RPN2 WITH RCNN1') combine_model('model/rpn2', rpn_epoch, 'model/rcnn1', rcnn_epoch, 'model/rcnn2', 0) logger.info('########## TRAIN RCNN WITH RPN INIT AND DETECTION') train_rcnn(args.network, args.dataset, args.image_set, args.root_path, args.dataset_path, args.frequent, args.kvstore, args.work_load_list, args.no_flip, args.no_shuffle, args.resume, ctx, 'model/rcnn2', 0, 'model/rcnn2', begin_epoch, rcnn_epoch, train_shared=True, lr=rcnn_lr, lr_step=rcnn_lr_step, proposal='rpn', use_data_augmentation=args.use_data_augmentation, use_global_context=args.use_global_context, use_roi_align=args.use_roi_align) logger.info('########## COMBINE RPN2 WITH RCNN2') combine_model('model/rpn2', rpn_epoch, 'model/rcnn2', rcnn_epoch, 'model/final', 0)