提交 9123f5da 编写于 作者: littletomatodonkey's avatar littletomatodonkey

fix cspnet

上级 7ad89bc1
...@@ -46,4 +46,4 @@ from .resnet_acnet import ResNet18_ACNet, ResNet34_ACNet, ResNet50_ACNet, ResNet ...@@ -46,4 +46,4 @@ from .resnet_acnet import ResNet18_ACNet, ResNet34_ACNet, ResNet50_ACNet, ResNet
# distillation model # distillation model
from .distillation_models import ResNet50_vd_distill_MobileNetV3_large_x1_0, ResNeXt101_32x16d_wsl_distill_ResNet50_vd from .distillation_models import ResNet50_vd_distill_MobileNetV3_large_x1_0, ResNeXt101_32x16d_wsl_distill_ResNet50_vd
from .csp_resnet import CSPNetNet50 from .csp_resnet import CSPResNet50
...@@ -22,10 +22,10 @@ import paddle ...@@ -22,10 +22,10 @@ import paddle
import paddle.fluid as fluid import paddle.fluid as fluid
from paddle.fluid.param_attr import ParamAttr from paddle.fluid.param_attr import ParamAttr
__all__ = ["CSPNetNet50", ] __all__ = ["CSPResNet50", ]
class CSPNetNet(): class CSPResNet():
def __init__(self, layers=50): def __init__(self, layers=50):
self.layers = layers self.layers = layers
...@@ -39,7 +39,7 @@ class CSPNetNet(): ...@@ -39,7 +39,7 @@ class CSPNetNet():
if layers == 18: if layers == 18:
depth = [2, 2, 2, 2] depth = [2, 2, 2, 2]
elif layers == 34 or layers == 50: elif layers == 34 or layers == 50:
depth = [3, 3, 5, 3] depth = [3, 3, 5, 2]
elif layers == 101: elif layers == 101:
depth = [3, 4, 23, 3] depth = [3, 4, 23, 3]
elif layers == 152: elif layers == 152:
...@@ -51,14 +51,14 @@ class CSPNetNet(): ...@@ -51,14 +51,14 @@ class CSPNetNet():
num_filters=64, num_filters=64,
filter_size=7, filter_size=7,
stride=2, stride=2,
act='relu', act='leaky',
name="conv1", name="conv1",
data_format=data_format) data_format=data_format)
conv = fluid.layers.pool2d( conv = fluid.layers.pool2d(
input=conv, input=conv,
pool_size=3, pool_size=2,
pool_stride=2, pool_stride=2,
pool_padding=1, pool_padding=0,
pool_type='max', pool_type='max',
data_format=data_format) data_format=data_format)
...@@ -68,7 +68,7 @@ class CSPNetNet(): ...@@ -68,7 +68,7 @@ class CSPNetNet():
if block != 0: if block != 0:
conv = self.conv_bn_layer( conv = self.conv_bn_layer(
input=conv, input=conv,
num_filters=num_filters[block] * 2, num_filters=num_filters[block],
filter_size=3, filter_size=3,
stride=2, stride=2,
act="leaky_relu", act="leaky_relu",
...@@ -76,15 +76,19 @@ class CSPNetNet(): ...@@ -76,15 +76,19 @@ class CSPNetNet():
data_format=data_format) data_format=data_format)
# layer warp # layer warp
# left = conv # left, right = fluid.layers.split(
# right = conv # conv,
left, right = fluid.layers.split( # num_or_sections=[conv.shape[1]//2, conv.shape[1]//2],
conv, # dim=1)
num_or_sections=[conv.shape[1] // 2, conv.shape[1] // 2], left = conv
dim=1) right = conv
if block == 0:
ch = num_filters[block]
else:
ch = num_filters[block] * 2
right = self.conv_bn_layer( right = self.conv_bn_layer(
input=right, input=right,
num_filters=num_filters[block] * 4, num_filters=ch,
filter_size=1, filter_size=1,
act="leaky_relu", act="leaky_relu",
name=conv_name + "_right_first_route", name=conv_name + "_right_first_route",
...@@ -159,7 +163,7 @@ class CSPNetNet(): ...@@ -159,7 +163,7 @@ class CSPNetNet():
stride=stride, stride=stride,
padding=(filter_size - 1) // 2, padding=(filter_size - 1) // 2,
groups=groups, groups=groups,
act=act, 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',
...@@ -178,6 +182,10 @@ class CSPNetNet(): ...@@ -178,6 +182,10 @@ class CSPNetNet():
moving_mean_name=bn_name + '_mean', moving_mean_name=bn_name + '_mean',
moving_variance_name=bn_name + '_variance', moving_variance_name=bn_name + '_variance',
data_layout=data_format) data_layout=data_format)
if act == "relu":
bn = fluid.layers.relu(bn)
elif act == "leaky_relu":
bn = fluid.layers.leaky_relu(bn)
return bn return bn
def shortcut(self, input, ch_out, stride, is_first, name, data_format): def shortcut(self, input, ch_out, stride, is_first, name, data_format):
...@@ -228,6 +236,6 @@ class CSPNetNet(): ...@@ -228,6 +236,6 @@ class CSPNetNet():
return ret return ret
def CSPNetNet50(): def CSPResNet50():
model = CSPNetNet(layers=50) model = CSPResNet(layers=50)
return model return model
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册