示例#1
0
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
示例#2
0
 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(conv)
     new_.name = name
     new_.convolution_param.ClearField('kernel_size')
     new_.convolution_param.ClearField('pad')
     new_.convolution_param.ClearField('stride')
     return new_
示例#4
0
    def __init__(self, name):
        Node.__init__(self, name, allowAddInput=True, allowAddOutput=True, allowRemove=True)
        # self.paramList = self.getParamList()
        LayerFD = NetParameter.DESCRIPTOR.fields_by_name['layer']
        self.param = LParameter.create(repeated=False, fieldDescriptor=LayerFD, expanded=True)
        for param in self.param.children():
            param.setToDefault()
        t = ptree.ParameterTree()
        t.addParameters(self.param, depth=1, showTop=False)
        self.proto = LayerProto()
        self.specificParam = None
        self.baseParam = None
        self.sigRenamed.connect(self.nameChanged)
        self.sigTerminalRenamed.connect(self.updateBlobs)
        self.sigTerminalAdded.connect(self.updateBlobs)
        self.sigTerminalRemoved.connect(self.updateBlobs)
        t.setMinimumHeight(325)
        t.setVerticalScrollBarPolicy(pg.QtCore.Qt.ScrollBarAlwaysOff)
        self.ui = t

        self.bottoms = self.param.child('bottom')
        self.tops = self.param.child('top')
        # self.bottoms.sigChildAdded.connect(self.updateTerminals)
        # self.tops.sigChildAdded.connect(self.updateTerminals)

        if self.nodeName != "Layer":
            proto = LayerProto()
            proto.type = self.nodeName
            self.configFromLayerSpec(proto)
            # self.bottoms.addNew()
            # self.tops.addNew()
            # self.rename(str(self.nodeName).lower())
            nodeName = str(self.nodeName).lower()
            with signalsBlocked(self.param):
                self.bottoms.addNew("bottom1")
                self.tops.addNew(nodeName.lower())
            self.updateTerminals()
示例#5
0
 def _create_new(name):
     new_ = LayerParameter()
     new_.CopyFrom(fc)
     new_.name = name
     return new_
示例#6
0
 def _creat_new(name, layer_name):
     new_ = LayerParameter()
     new_.CopyFrom(layer_name)
     new_.name = name
     new_.convolution_param.ClearField('num_output')
     return new_
import sys

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[:])
示例#8
0
 def _create_new(name):
     print("--> {0}".format(name))
     new_ = LayerParameter()
     new_.CopyFrom(conv)
     new_.name = name
     return new_