* fix pred

* fix resnest

* fix hrnet se

* fix se for export
pull/452/head^2
littletomatodonkey 2020-12-06 03:08:44 +08:00 committed by GitHub
parent 0df5ba63df
commit 1ecf8334ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 23 additions and 26 deletions

View File

@ -83,13 +83,12 @@ class SEBlock(nn.Layer):
def forward(self, inputs):
pool = self.pool2d_gap(inputs)
pool = paddle.reshape(pool, shape=[-1, self._num_channels])
pool = paddle.squeeze(pool, axis=[2, 3])
squeeze = self.squeeze(pool)
squeeze = F.relu(squeeze)
excitation = self.excitation(squeeze)
excitation = paddle.clip(x=excitation, min=0, max=1)
excitation = paddle.reshape(
excitation, shape=[-1, self._num_channels, 1, 1])
excitation = paddle.unsqueeze(excitation, axis=[2, 3])
out = inputs * excitation
return out

View File

@ -322,8 +322,7 @@ class SELayer(nn.Layer):
self.squeeze = Linear(
num_channels,
med_ch,
act="relu",
param_attr=ParamAttr(
weight_attr=ParamAttr(
initializer=Uniform(-stdv, stdv), name=name + "_sqz_weights"),
bias_attr=ParamAttr(name=name + '_sqz_offset'))
@ -331,18 +330,18 @@ class SELayer(nn.Layer):
self.excitation = Linear(
med_ch,
num_filters,
act="sigmoid",
param_attr=ParamAttr(
weight_attr=ParamAttr(
initializer=Uniform(-stdv, stdv), name=name + "_exc_weights"),
bias_attr=ParamAttr(name=name + '_exc_offset'))
def forward(self, input):
pool = self.pool2d_gap(input)
pool = paddle.reshape(pool, shape=[-1, self._num_channels])
pool = paddle.squeeze(pool, axis=[2, 3])
squeeze = self.squeeze(pool)
squeeze = F.relu(squeeze)
excitation = self.excitation(squeeze)
excitation = paddle.reshape(
excitation, shape=[-1, self._num_channels, 1, 1])
excitation = F.sigmoid(excitation)
excitation = paddle.unsqueeze(excitation, axis=[2, 3])
out = input * excitation
return out

View File

@ -85,7 +85,8 @@ class rSoftmax(nn.Layer):
x = paddle.reshape(
x=x,
shape=[
batch, cardinality, radix, int(r * h * w / cardinality / radix)
batch, cardinality, radix,
int(r * h * w / cardinality / radix)
])
x = paddle.transpose(x=x, perm=[0, 2, 1, 3])
x = nn.functional.softmax(x, axis=1)
@ -164,7 +165,7 @@ class SplatConv(nn.Layer):
atten = self.conv3(gap)
atten = self.rsoftmax(atten)
atten = paddle.reshape(x=atten, shape=[-1, atten.shape[1], 1, 1])
atten = paddle.unsqueeze(x=atten, axis=[2, 3])
if self.radix > 1:
attens = paddle.split(atten, num_or_sections=self.radix, axis=1)

View File

@ -223,13 +223,12 @@ class SELayer(nn.Layer):
def forward(self, input):
pool = self.pool2d_gap(input)
pool = paddle.reshape(pool, shape=[-1, self._num_channels])
pool = paddle.squeeze(pool, axis=[2, 3])
squeeze = self.squeeze(pool)
squeeze = F.relu(squeeze)
excitation = self.excitation(squeeze)
excitation = F.sigmoid(excitation)
excitation = paddle.reshape(
excitation, shape=[-1, self._num_channels, 1, 1])
excitation = paddle.unsqueeze(excitation, axis=[2, 3])
out = input * excitation
return out

View File

@ -157,13 +157,12 @@ class SELayer(nn.Layer):
def forward(self, input):
pool = self.pool2d_gap(input)
pool = paddle.reshape(pool, shape=[-1, self._num_channels])
pool = paddle.squeeze(pool, axis=[2, 3])
squeeze = self.squeeze(pool)
squeeze = self.relu(squeeze)
excitation = self.excitation(squeeze)
excitation = self.sigmoid(excitation)
excitation = paddle.reshape(
excitation, shape=[-1, self._num_channels, 1, 1])
excitation = paddle.unsqueeze(excitation, axis=[2, 3])
out = input * excitation
return out

View File

@ -164,13 +164,12 @@ class SELayer(nn.Layer):
def forward(self, input):
pool = self.pool2d_gap(input)
pool = paddle.reshape(pool, shape=[-1, self._num_channels])
pool = paddle.squeeze(pool, axis=[2, 3])
squeeze = self.squeeze(pool)
squeeze = self.relu(squeeze)
excitation = self.excitation(squeeze)
excitation = self.sigmoid(excitation)
excitation = paddle.reshape(
excitation, shape=[-1, self._num_channels, 1, 1])
excitation = paddle.unsqueeze(excitation, axis=[2, 3])
out = input * excitation
return out

View File

@ -90,7 +90,11 @@ def main(args):
predictor.run()
output = output_tensor.copy_to_cpu()
return utils.postprocess(output, args)
classes, scores = utils.postprocess(output, args)
print("Current image file: {}".format(args.image_file))
print("\ttop-1 class: {0}".format(classes[0]))
print("\ttop-1 score: {0}".format(scores[0]))
else:
for i in range(0, test_num + 10):
inputs = np.random.rand(args.batch_size, 3, 224,
@ -115,7 +119,4 @@ def main(args):
if __name__ == "__main__":
args = utils.parse_args()
classes, scores = main(args)
print("Current image file: {}".format(args.image_file))
print("\ttop-1 class: {0}".format(classes[0]))
print("\ttop-1 score: {0}".format(scores[0]))
main(args)