def __init__(self,nhidden, n_object_cats , n_predicate_cats, n_vocab, voc_sign, max_word_length, MPS_iter, use_language_loss, object_loss_weight, predicate_loss_weight, dropout=False, use_kmeans_anchors=True, gate_width=128, nhidden_caption=256, nembedding = 256, rnn_type='LSTM_normal', rnn_droptout=0.0, rnn_bias=False, use_region_reg=False, use_kernel=False): super(faster_rcnn, self).__init__(nhidden, n_object_cats, n_predicate_cats, n_vocab, voc_sign, max_word_length, MPS_iter, use_language_loss, object_loss_weight, predicate_loss_weight, dropout, use_kmeans_anchors, nhidden_caption, nembedding, rnn_type, use_region_reg) self.rpn = RPN(use_kmeans_anchors) # self.roi_pool_object = RoIPool(7, 7, 1.0/16) # self.roi_pool_phrase = RoIPool(7, 7, 1.0/16) self.roi_pool_region = RoIPool(7, 7, 1.0/16) # self.fc6_obj = FC(512 * 7 * 7, nhidden, relu=True) # self.fc7_obj = FC(nhidden, nhidden, relu=False) # self.fc6_phrase = FC(512 * 7 * 7, nhidden, relu=True) # self.fc7_phrase = FC(nhidden, nhidden, relu=False) self.fc6_region = FC(512 * 7 * 7, nhidden, relu=True) self.fc7_region = FC(nhidden, nhidden, relu=False) # if MPS_iter == 0: # self.mps = None # else: # self.mps = Hierarchical_Message_Passing_Structure(nhidden, dropout, # gate_width=gate_width, use_kernel_function=use_kernel) # the hierarchical message passing structure # network.weights_normal_init(self.mps, 0.01) # self.score_obj = FC(nhidden, self.n_classes_obj, relu=False) # self.bbox_obj = FC(nhidden, self.n_classes_obj * 4, relu=False) # self.score_pred = FC(nhidden, self.n_classes_pred, relu=False) # if self.use_region_reg: self.bbox_region = FC(nhidden, 4, relu=False) network.weights_normal_init(self.bbox_region, 0.01) # else: # self.bbox_region = None self.objectiveness = FC(nhidden, 2, relu=False) # if use_language_loss: # self.caption_prediction = \ # Language_Model(rnn_type=self.rnn_type, ntoken=self.n_vocab, nimg=self.nhidden, nhidden=self.nhidden_caption, # nembed=self.nembedding, nlayers=2, nseq=self.max_word_length, voc_sign = self.voc_sign, # bias=rnn_bias, dropout=rnn_droptout) # else: # self.caption_prediction = Language_Model(rnn_type=self.rnn_type, ntoken=self.n_vocab, nimg=1, nhidden=1, # nembed=1, nlayers=1, nseq=1, voc_sign = self.voc_sign) # just to make the program run # network.weights_normal_init(self.score_obj, 0.01) # network.weights_normal_init(self.bbox_obj, 0.005) # network.weights_normal_init(self.score_pred, 0.01) network.weights_normal_init(self.objectiveness, 0.01) self.objectiveness_loss = None
# 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 = VisualGenome(split=0, num_im=50) roidb = imdb.roidb data_layer = RoIDataLayer(roidb, imdb.num_classes) # load net net = FasterRCNN(classes=imdb.classes, debug=_DEBUG) network.weights_normal_init(net, dev=0.01) network.load_net(pretrained_model, net) # network.load_pretrained_npy(net, 'checkpoints/VGG_imagenet.npy') net.cuda() net.train() params = list(net.parameters()) print("Params are {}".format( '\n'.join(['{}: {}'.format(n, p.size()) for n,p in net.named_parameters()])) ) # optimizer = torch.optim.Adam(params, lr=0.001, eps=1e-4, weight_decay=weight_decay) optimizer = torch.optim.SGD(params[8:], lr=lr, momentum=momentum, weight_decay=weight_decay) if not os.path.exists(output_dir): os.mkdir(output_dir)
def _init_faster_rcnn_vgg16(self): weights_normal_init(self) self.rpn._vgg16.load_pretrained_vgg16()
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 = FasterRCNN(classes=imdb.classes, debug=_DEBUG) network.weights_normal_init(net, dev=0.01) network.load_pretrained_npy(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' # start_step = 60001 # lr /= 10. network.weights_normal_init([net.bbox_fc, net.score_fc, net.fc6, net.fc7], dev=0.01) net.cuda() net.train() params = list(net.parameters()) # optimizer = torch.optim.Adam(params[-8:], lr=lr) optimizer = torch.optim.SGD(params[8:], lr=lr, momentum=momentum, weight_decay=weight_decay)
def _init_faster_rcnn_resnet(self): weights_normal_init(self) self.rpn._resnet.load_pretrained_resnet()