Convert a caffe parameter name to a tensorflow parameter name as defined in the above model
(caffe_layer_name)
| 99 | |
| 100 | |
| 101 | def name_conversion(caffe_layer_name): |
| 102 | """ Convert a caffe parameter name to a tensorflow parameter name as |
| 103 | defined in the above model """ |
| 104 | # beginning & end mapping |
| 105 | NAME_MAP = {'bn_conv1/beta': 'conv0/bn/beta', |
| 106 | 'bn_conv1/gamma': 'conv0/bn/gamma', |
| 107 | 'bn_conv1/mean/EMA': 'conv0/bn/mean/EMA', |
| 108 | 'bn_conv1/variance/EMA': 'conv0/bn/variance/EMA', |
| 109 | 'conv1/W': 'conv0/W', 'conv1/b': 'conv0/b', |
| 110 | 'fc1000/W': 'linear/W', 'fc1000/b': 'linear/b'} |
| 111 | if caffe_layer_name in NAME_MAP: |
| 112 | return NAME_MAP[caffe_layer_name] |
| 113 | |
| 114 | s = re.search('([a-z]+)([0-9]+)([a-z]+)_', caffe_layer_name) |
| 115 | if s is None: |
| 116 | s = re.search('([a-z]+)([0-9]+)([a-z]+)([0-9]+)_', caffe_layer_name) |
| 117 | layer_block_part1 = s.group(3) |
| 118 | layer_block_part2 = s.group(4) |
| 119 | assert layer_block_part1 in ['a', 'b'] |
| 120 | layer_block = 0 if layer_block_part1 == 'a' else int(layer_block_part2) |
| 121 | else: |
| 122 | layer_block = ord(s.group(3)) - ord('a') |
| 123 | layer_type = s.group(1) |
| 124 | layer_group = s.group(2) |
| 125 | |
| 126 | layer_branch = int(re.search('_branch([0-9])', caffe_layer_name).group(1)) |
| 127 | assert layer_branch in [1, 2] |
| 128 | if layer_branch == 2: |
| 129 | layer_id = re.search('_branch[0-9]([a-z])/', caffe_layer_name).group(1) |
| 130 | layer_id = ord(layer_id) - ord('a') + 1 |
| 131 | |
| 132 | TYPE_DICT = {'res': 'conv{}', 'bn': 'conv{}/bn'} |
| 133 | layer_type = TYPE_DICT[layer_type].format(layer_id if layer_branch == 2 else 'shortcut') |
| 134 | |
| 135 | tf_name = caffe_layer_name[caffe_layer_name.index('/'):] |
| 136 | tf_name = 'group{}/block{}/{}'.format( |
| 137 | int(layer_group) - 2, layer_block, layer_type) + tf_name |
| 138 | return tf_name |
| 139 | |
| 140 | |
| 141 | def convert_param_name(param): |
no test coverage detected
searching dependent graphs…