提交 e968c137 编写于 作者: B Bai Yifan 提交者: qingqing01

Revert "put weight_prefix_name config to YAML (#3518)" (#3552)

This reverts commit 36a2e65bb74fc8ec9d1720b3db798757b5c0d044.
上级 0f187a7e
...@@ -41,7 +41,7 @@ class YOLOv3Head(object): ...@@ -41,7 +41,7 @@ class YOLOv3Head(object):
nms (object): an instance of `MultiClassNMS` nms (object): an instance of `MultiClassNMS`
""" """
__inject__ = ['nms'] __inject__ = ['nms']
__shared__ = ['num_classes', 'weight_prefix_name'] __shared__ = ['num_classes']
def __init__(self, def __init__(self,
norm_decay=0., norm_decay=0.,
...@@ -56,8 +56,7 @@ class YOLOv3Head(object): ...@@ -56,8 +56,7 @@ class YOLOv3Head(object):
nms_top_k=1000, nms_top_k=1000,
keep_top_k=100, keep_top_k=100,
nms_threshold=0.45, nms_threshold=0.45,
background_label=-1).__dict__, background_label=-1).__dict__):
weight_prefix_name=''):
self.norm_decay = norm_decay self.norm_decay = norm_decay
self.num_classes = num_classes self.num_classes = num_classes
self.ignore_thresh = ignore_thresh self.ignore_thresh = ignore_thresh
...@@ -65,7 +64,6 @@ class YOLOv3Head(object): ...@@ -65,7 +64,6 @@ class YOLOv3Head(object):
self.anchor_masks = anchor_masks self.anchor_masks = anchor_masks
self._parse_anchors(anchors) self._parse_anchors(anchors)
self.nms = nms self.nms = nms
self.prefix_name = weight_prefix_name
if isinstance(nms, dict): if isinstance(nms, dict):
self.nms = MultiClassNMS(**nms) self.nms = MultiClassNMS(**nms)
...@@ -210,7 +208,7 @@ class YOLOv3Head(object): ...@@ -210,7 +208,7 @@ class YOLOv3Head(object):
block, block,
channel=512 // (2**i), channel=512 // (2**i),
is_test=(not is_train), is_test=(not is_train),
name=self.prefix_name + "yolo_block.{}".format(i)) name="yolo_block.{}".format(i))
# out channel number = mask_num * (5 + class_num) # out channel number = mask_num * (5 + class_num)
num_filters = len(self.anchor_masks[i]) * (self.num_classes + 5) num_filters = len(self.anchor_masks[i]) * (self.num_classes + 5)
...@@ -221,12 +219,11 @@ class YOLOv3Head(object): ...@@ -221,12 +219,11 @@ class YOLOv3Head(object):
stride=1, stride=1,
padding=0, padding=0,
act=None, act=None,
param_attr=ParamAttr(name=self.prefix_name + param_attr=ParamAttr(
"yolo_output.{}.conv.weights".format(i)), name="yolo_output.{}.conv.weights".format(i)),
bias_attr=ParamAttr( bias_attr=ParamAttr(
regularizer=L2Decay(0.), regularizer=L2Decay(0.),
name=self.prefix_name + name="yolo_output.{}.conv.bias".format(i)))
"yolo_output.{}.conv.bias".format(i)))
outputs.append(block_out) outputs.append(block_out)
if i < len(blocks) - 1: if i < len(blocks) - 1:
...@@ -238,7 +235,7 @@ class YOLOv3Head(object): ...@@ -238,7 +235,7 @@ class YOLOv3Head(object):
stride=1, stride=1,
padding=0, padding=0,
is_test=(not is_train), is_test=(not is_train),
name=self.prefix_name + "yolo_transition.{}".format(i)) name="yolo_transition.{}".format(i))
# upsample # upsample
route = self._upsample(route) route = self._upsample(route)
...@@ -275,7 +272,7 @@ class YOLOv3Head(object): ...@@ -275,7 +272,7 @@ class YOLOv3Head(object):
ignore_thresh=self.ignore_thresh, ignore_thresh=self.ignore_thresh,
downsample_ratio=downsample, downsample_ratio=downsample,
use_label_smooth=self.label_smooth, use_label_smooth=self.label_smooth,
name=self.prefix_name + "yolo_loss" + str(i)) name="yolo_loss" + str(i))
losses.append(fluid.layers.reduce_mean(loss)) losses.append(fluid.layers.reduce_mean(loss))
downsample //= 2 downsample //= 2
...@@ -307,7 +304,7 @@ class YOLOv3Head(object): ...@@ -307,7 +304,7 @@ class YOLOv3Head(object):
class_num=self.num_classes, class_num=self.num_classes,
conf_thresh=self.nms.score_threshold, conf_thresh=self.nms.score_threshold,
downsample_ratio=downsample, downsample_ratio=downsample,
name=self.prefix_name + "yolo_box" + str(i)) name="yolo_box" + str(i))
boxes.append(box) boxes.append(box)
scores.append(fluid.layers.transpose(score, perm=[0, 2, 1])) scores.append(fluid.layers.transpose(score, perm=[0, 2, 1]))
......
...@@ -36,19 +36,14 @@ class DarkNet(object): ...@@ -36,19 +36,14 @@ class DarkNet(object):
norm_type (str): normalization type, 'bn' and 'sync_bn' are supported norm_type (str): normalization type, 'bn' and 'sync_bn' are supported
norm_decay (float): weight decay for normalization layer weights norm_decay (float): weight decay for normalization layer weights
""" """
__shared__ = ['norm_type', 'weight_prefix_name'] __shared__ = ['norm_type']
def __init__(self, def __init__(self, depth=53, norm_type='bn', norm_decay=0.):
depth=53,
norm_type='bn',
norm_decay=0.,
weight_prefix_name=''):
assert depth in [53], "unsupported depth value" assert depth in [53], "unsupported depth value"
self.depth = depth self.depth = depth
self.norm_type = norm_type self.norm_type = norm_type
self.norm_decay = norm_decay self.norm_decay = norm_decay
self.depth_cfg = {53: ([1, 2, 8, 8, 4], self.basicblock)} self.depth_cfg = {53: ([1, 2, 8, 8, 4], self.basicblock)}
self.prefix_name = weight_prefix_name
def _conv_norm(self, def _conv_norm(self,
input, input,
...@@ -148,11 +143,9 @@ class DarkNet(object): ...@@ -148,11 +143,9 @@ class DarkNet(object):
filter_size=3, filter_size=3,
stride=1, stride=1,
padding=1, padding=1,
name=self.prefix_name + "yolo_input") name="yolo_input")
downsample_ = self._downsample( downsample_ = self._downsample(
input=conv, input=conv, ch_out=conv.shape[1] * 2, name="yolo_input.downsample")
ch_out=conv.shape[1] * 2,
name=self.prefix_name + "yolo_input.downsample")
blocks = [] blocks = []
for i, stage in enumerate(stages): for i, stage in enumerate(stages):
block = self.layer_warp( block = self.layer_warp(
...@@ -160,11 +153,11 @@ class DarkNet(object): ...@@ -160,11 +153,11 @@ class DarkNet(object):
input=downsample_, input=downsample_,
ch_out=32 * 2**i, ch_out=32 * 2**i,
count=stage, count=stage,
name=self.prefix_name + "stage.{}".format(i)) name="stage.{}".format(i))
blocks.append(block) blocks.append(block)
if i < len(stages) - 1: # do not downsaple in the last stage if i < len(stages) - 1: # do not downsaple in the last stage
downsample_ = self._downsample( downsample_ = self._downsample(
input=block, input=block,
ch_out=block.shape[1] * 2, ch_out=block.shape[1] * 2,
name=self.prefix_name + "stage.{}.downsample".format(i)) name="stage.{}.downsample".format(i))
return blocks return blocks
...@@ -37,7 +37,7 @@ class MobileNet(object): ...@@ -37,7 +37,7 @@ class MobileNet(object):
with_extra_blocks (bool): if extra blocks should be added with_extra_blocks (bool): if extra blocks should be added
extra_block_filters (list): number of filter for each extra block extra_block_filters (list): number of filter for each extra block
""" """
__shared__ = ['norm_type', 'weight_prefix_name'] __shared__ = ['norm_type']
def __init__(self, def __init__(self,
norm_type='bn', norm_type='bn',
...@@ -46,15 +46,13 @@ class MobileNet(object): ...@@ -46,15 +46,13 @@ class MobileNet(object):
conv_learning_rate=1.0, conv_learning_rate=1.0,
with_extra_blocks=False, with_extra_blocks=False,
extra_block_filters=[[256, 512], [128, 256], [128, 256], extra_block_filters=[[256, 512], [128, 256], [128, 256],
[64, 128]], [64, 128]]):
weight_prefix_name=''):
self.norm_type = norm_type self.norm_type = norm_type
self.norm_decay = norm_decay self.norm_decay = norm_decay
self.conv_group_scale = conv_group_scale self.conv_group_scale = conv_group_scale
self.conv_learning_rate = conv_learning_rate self.conv_learning_rate = conv_learning_rate
self.with_extra_blocks = with_extra_blocks self.with_extra_blocks = with_extra_blocks
self.extra_block_filters = extra_block_filters self.extra_block_filters = extra_block_filters
self.prefix_name = weight_prefix_name
def _conv_norm(self, def _conv_norm(self,
input, input,
...@@ -153,42 +151,35 @@ class MobileNet(object): ...@@ -153,42 +151,35 @@ class MobileNet(object):
blocks = [] blocks = []
# input 1/1 # input 1/1
out = self._conv_norm( out = self._conv_norm(input, 3, int(32 * scale), 2, 1, name="conv1")
input, 3, int(32 * scale), 2, 1, name=self.prefix_name + "conv1")
# 1/2 # 1/2
out = self.depthwise_separable( out = self.depthwise_separable(
out, 32, 64, 32, 1, scale, name=self.prefix_name + "conv2_1") out, 32, 64, 32, 1, scale, name="conv2_1")
out = self.depthwise_separable( out = self.depthwise_separable(
out, 64, 128, 64, 2, scale, name=self.prefix_name + "conv2_2") out, 64, 128, 64, 2, scale, name="conv2_2")
# 1/4 # 1/4
out = self.depthwise_separable( out = self.depthwise_separable(
out, 128, 128, 128, 1, scale, name=self.prefix_name + "conv3_1") out, 128, 128, 128, 1, scale, name="conv3_1")
out = self.depthwise_separable( out = self.depthwise_separable(
out, 128, 256, 128, 2, scale, name=self.prefix_name + "conv3_2") out, 128, 256, 128, 2, scale, name="conv3_2")
# 1/8 # 1/8
blocks.append(out) blocks.append(out)
out = self.depthwise_separable( out = self.depthwise_separable(
out, 256, 256, 256, 1, scale, name=self.prefix_name + "conv4_1") out, 256, 256, 256, 1, scale, name="conv4_1")
out = self.depthwise_separable( out = self.depthwise_separable(
out, 256, 512, 256, 2, scale, name=self.prefix_name + "conv4_2") out, 256, 512, 256, 2, scale, name="conv4_2")
# 1/16 # 1/16
blocks.append(out) blocks.append(out)
for i in range(5): for i in range(5):
out = self.depthwise_separable( out = self.depthwise_separable(
out, out, 512, 512, 512, 1, scale, name="conv5_" + str(i + 1))
512,
512,
512,
1,
scale,
name=self.prefix_name + "conv5_" + str(i + 1))
module11 = out module11 = out
out = self.depthwise_separable( out = self.depthwise_separable(
out, 512, 1024, 512, 2, scale, name=self.prefix_name + "conv5_6") out, 512, 1024, 512, 2, scale, name="conv5_6")
# 1/32 # 1/32
out = self.depthwise_separable( out = self.depthwise_separable(
out, 1024, 1024, 1024, 1, scale, name=self.prefix_name + "conv6") out, 1024, 1024, 1024, 1, scale, name="conv6")
module13 = out module13 = out
blocks.append(out) blocks.append(out)
if not self.with_extra_blocks: if not self.with_extra_blocks:
...@@ -196,15 +187,11 @@ class MobileNet(object): ...@@ -196,15 +187,11 @@ class MobileNet(object):
num_filters = self.extra_block_filters num_filters = self.extra_block_filters
module14 = self._extra_block(module13, num_filters[0][0], module14 = self._extra_block(module13, num_filters[0][0],
num_filters[0][1], 1, 2, num_filters[0][1], 1, 2, "conv7_1")
self.prefix_name + "conv7_1")
module15 = self._extra_block(module14, num_filters[1][0], module15 = self._extra_block(module14, num_filters[1][0],
num_filters[1][1], 1, 2, num_filters[1][1], 1, 2, "conv7_2")
self.prefix_name + "conv7_2")
module16 = self._extra_block(module15, num_filters[2][0], module16 = self._extra_block(module15, num_filters[2][0],
num_filters[2][1], 1, 2, num_filters[2][1], 1, 2, "conv7_3")
self.prefix_name + "conv7_3")
module17 = self._extra_block(module16, num_filters[3][0], module17 = self._extra_block(module16, num_filters[3][0],
num_filters[3][1], 1, 2, num_filters[3][1], 1, 2, "conv7_4")
self.prefix_name + "conv7_4")
return module11, module13, module14, module15, module16, module17 return module11, module13, module14, module15, module16, module17
...@@ -47,7 +47,7 @@ class ResNet(object): ...@@ -47,7 +47,7 @@ class ResNet(object):
feature_maps (list): index of stages whose feature maps are returned feature_maps (list): index of stages whose feature maps are returned
dcn_v2_stages (list): index of stages who select deformable conv v2 dcn_v2_stages (list): index of stages who select deformable conv v2
""" """
__shared__ = ['norm_type', 'freeze_norm', 'weight_prefix_name'] __shared__ = ['norm_type', 'freeze_norm']
def __init__(self, def __init__(self,
depth=50, depth=50,
...@@ -57,8 +57,7 @@ class ResNet(object): ...@@ -57,8 +57,7 @@ class ResNet(object):
norm_decay=0., norm_decay=0.,
variant='b', variant='b',
feature_maps=[2, 3, 4, 5], feature_maps=[2, 3, 4, 5],
dcn_v2_stages=[], dcn_v2_stages=[]):
weight_prefix_name=''):
super(ResNet, self).__init__() super(ResNet, self).__init__()
if isinstance(feature_maps, Integral): if isinstance(feature_maps, Integral):
...@@ -90,7 +89,6 @@ class ResNet(object): ...@@ -90,7 +89,6 @@ class ResNet(object):
self.stage_filters = [64, 128, 256, 512] self.stage_filters = [64, 128, 256, 512]
self._c1_out_chan_num = 64 self._c1_out_chan_num = 64
self.na = NameAdapter(self) self.na = NameAdapter(self)
self.prefix_name = weight_prefix_name
def _conv_offset(self, def _conv_offset(self,
input, input,
...@@ -123,7 +121,6 @@ class ResNet(object): ...@@ -123,7 +121,6 @@ class ResNet(object):
act=None, act=None,
name=None, name=None,
dcn_v2=False): dcn_v2=False):
_name = self.prefix_name + name if self.prefix_name != '' else name
if not dcn_v2: if not dcn_v2:
conv = fluid.layers.conv2d( conv = fluid.layers.conv2d(
input=input, input=input,
...@@ -133,9 +130,9 @@ class ResNet(object): ...@@ -133,9 +130,9 @@ class ResNet(object):
padding=(filter_size - 1) // 2, padding=(filter_size - 1) // 2,
groups=groups, groups=groups,
act=None, act=None,
param_attr=ParamAttr(name=_name + "_weights"), param_attr=ParamAttr(name=name + "_weights"),
bias_attr=False, bias_attr=False,
name=_name + '.conv2d.output.1') name=name + '.conv2d.output.1')
else: else:
# select deformable conv" # select deformable conv"
offset_mask = self._conv_offset( offset_mask = self._conv_offset(
...@@ -144,7 +141,7 @@ class ResNet(object): ...@@ -144,7 +141,7 @@ class ResNet(object):
stride=stride, stride=stride,
padding=(filter_size - 1) // 2, padding=(filter_size - 1) // 2,
act=None, act=None,
name=_name + "_conv_offset") name=name + "_conv_offset")
offset_channel = filter_size**2 * 2 offset_channel = filter_size**2 * 2
mask_channel = filter_size**2 mask_channel = filter_size**2
offset, mask = fluid.layers.split( offset, mask = fluid.layers.split(
...@@ -163,12 +160,11 @@ class ResNet(object): ...@@ -163,12 +160,11 @@ class ResNet(object):
groups=groups, groups=groups,
deformable_groups=1, deformable_groups=1,
im2col_step=1, im2col_step=1,
param_attr=ParamAttr(name=_name + "_weights"), param_attr=ParamAttr(name=name + "_weights"),
bias_attr=False, bias_attr=False,
name=_name + ".conv2d.output.1") name=name + ".conv2d.output.1")
bn_name = self.na.fix_conv_norm_name(name) bn_name = self.na.fix_conv_norm_name(name)
bn_name = self.prefix_name + bn_name if self.prefix_name != '' else bn_name
norm_lr = 0. if self.freeze_norm else 1. norm_lr = 0. if self.freeze_norm else 1.
norm_decay = self.norm_decay norm_decay = self.norm_decay
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册