def __init__(self, vcoco_set, coco_root, vcoco_root): super(RoiVCocoBoxes, self).__init__(vcoco_set, coco_root) # TODO this sets a global config, which I prefer not to do. But the # faster_rcnn code depends on it. cf.cfg_from_list(["DATA_DIR", vcoco_root]) if vcoco_set == "vcoco_train": coco_split = "train" elif vcoco_set == "vcoco_val": coco_split = "val" else: raise ValueError("Invalid vcoco_set '%s'" % vcoco_set) imdb_name = "coco_2014_" + coco_split self._imdb = get_imdb(imdb_name) rdl_roidb.prepare_roidb(self._imdb) self._roidb = self._imdb.roidb self.cocoimgid_2_roidbindex = { index: i for i, index in enumerate(self._imdb._image_index) }
# ------------ if rand_seed is not None: np.random.seed(rand_seed) # load config cfg_from_file(cfg_file) lr = cfg.TRAIN.LEARNING_RATE momentum = cfg.TRAIN.MOMENTUM weight_decay = cfg.TRAIN.WEIGHT_DECAY disp_interval = cfg.TRAIN.DISPLAY log_interval = cfg.TRAIN.LOG_IMAGE_ITERS # load data imdb = get_imdb(imdb_name) rdl_roidb.prepare_roidb(imdb) roidb = imdb.roidb data_layer = RoIDataLayer(roidb, imdb.num_classes) # load net net = RFCN(classes=imdb.classes, debug=_DEBUG) #init_modules = [net.rpn.conv1, net.rpn.score_conv, net.rpn.bbox_conv, net.fc6, net.fc7, net.score_fc, net.bbox_fc] #network.weights_normal_init(init_modules, dev=0.01) network.weights_normal_init(net, dev=0.01) network.load_pretrained_npy(net, pretrained_model) if resume: pretrained_model_file = 'models/saved_model3/faster_rcnn_resnet101_20000.h5' network.load_net(pretrained_model_file, net) start_step = 20000 print 'Resume training...'
if rand_seed is not None: np.random.seed(rand_seed) # load config cfg_from_file(cfg_file) lr = cfg.TRAIN.LEARNING_RATE momentum = cfg.TRAIN.MOMENTUM weight_decay = cfg.TRAIN.WEIGHT_DECAY disp_interval = cfg.TRAIN.DISPLAY log_interval = cfg.TRAIN.LOG_IMAGE_ITERS # load data imdb_0 = get_imdb(imdb_name_0) imdb_1 = get_imdb(imdb_name_1) rdl_roidb.prepare_roidb(imdb_0) rdl_roidb.prepare_roidb(imdb_1) roidb_0 = imdb_0.roidb roidb_1 = imdb_1.roidb data_layer = RoIDataLayer(roidb_0, roidb_1, imdb_0.num_classes) # In[5]: # load net net = FasterRCNN_y(classes=imdb_0.classes, debug=_DEBUG) network.weights_normal_init(net, dev=0.01) network.load_pretrained_npy_y(net, pretrained_model) # model_file = '/media/longc/Data/models/VGGnet_fast_rcnn_iter_70000.h5' # model_file = 'models/saved_model3/faster_rcnn_60000.h5' # network.load_net(model_file, net) # exp_name = 'vgg16_02-19_13-24'
if __name__ == '__main__': # hyper-parameters # ------------ imdb_name = 'CaltechPedestrians_test' db_only = imdb_name.split('_')[0] model_dir = 'data/test_phase/' models = os.listdir(model_dir) pretrained_model = [ os.path.join(model_dir, model) for model in models if db_only in model.split('_') ] pretrained_model.sort() imdb = get_imdb(imdb_name) prepare_roidb(imdb) roidb = imdb.roidb f = open(os.path.join(model_dir, 'performance.txt'), 'a') for model in pretrained_model: is_resnet = True if 'res' in model.split('/') else False if model.endswith('txt'): continue if not is_resnet: detector = FasterRCNN_VGG(classes=imdb.classes, debug=False) else: detector = FasterRCNN_RES(classes=imdb.classes, debug=False) network.load_net(model, detector) match = id_match_test(model, detector, imdb, roidb) if cfg.TRIPLET.IS_TRUE else 0. prec, rec = test(model, detector, imdb, roidb)