def resize_network(netdef, name2num, verbose=True): """Change number of channels in convolutions netdef: network params name2num: maps from channel name to new number of channels verbose: if True, display changes """ new_layers = [] for l in netdef.layer: newl = LayerParameter() newl.CopyFrom(l) if (l.name in name2num): if (l.type == 'Convolution'): if verbose: print(l.name + ': \t' + 'Changing num_output from ' + str(l.convolution_param.num_output) + ' to ' + str(name2num[l.name])) newl.convolution_param.num_output = name2num[l.name] if newl.convolution_param.group > 1: newl.convolution_param.group = name2num[l.name] else: if verbose: print('Layer ' + l.name + ' is not convolution, skipping') new_layers.append(newl) new_pnet = NetParameter() new_pnet.CopyFrom(netdef) del (new_pnet.layer[:]) new_pnet.layer.extend(new_layers) return new_pnet
def _create_new(name): new_ = LayerParameter() new_.CopyFrom(conv) new_.name = name new_.convolution_param.ClearField('kernel_size') new_.convolution_param.ClearField('pad') new_.convolution_param.ClearField('stride') return new_
def _create_new(name): new_ = LayerParameter() new_.CopyFrom(fc) new_.name = name return new_
def _creat_new(name, layer_name): new_ = LayerParameter() new_.CopyFrom(layer_name) new_.name = name new_.convolution_param.ClearField('num_output') return new_
pattern = sys.argv[1:] print(pattern) ref_net = caffe.Net('models/ssd_face/ssd_face_train.prototxt', 'models/ssd_face/best_bn_full.caffemodel', caffe.TRAIN) for mode in ['train','test','deploy']: with open('models/ssd_face/ssd_face_'+mode+'.prototxt', 'r') as f: net_par = NetParameter() txtf.Merge(f.read(), net_par) new_layers = [] for l in net_par.layer: newl = LayerParameter() newl.CopyFrom(l) if l.name in {'mbox_loc','mbox_conf','mbox_priorbox'}: newbot = [e for e in l.bottom if (('14' not in e) and ('15' not in e) and ('16' not in e) and ('17' not in e))] del(newl.bottom[:]) newl.bottom.extend(newbot) new_layers.append(newl) elif (('14' not in l.name) and ('15' not in l.name) and ('16' not in l.name) and ('17' not in l.name)): new_layers.append(newl) newnet_par = NetParameter() newnet_par.CopyFrom(net_par) del(newnet_par.layer[:]) newnet_par.layer.extend(new_layers)
def _create_new(name): print("--> {0}".format(name)) new_ = LayerParameter() new_.CopyFrom(conv) new_.name = name return new_