Skip to content

Commit 10428e4

Browse files
authored
Fix the problem that emanet cannot train with a single card.
1 parent 956cedc commit 10428e4

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

configs/emanet/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ Expectation-Maximization Attention Networks for Semantic Segmentation. ICCV 2019
1111

1212
| Model | Backbone | Resolution | Training Iters | mIoU | mIoU (flip) | mIoU (ms+flip) |Links |
1313
|-|-|-|-|-|-|-|-|
14-
|EMANet|ResNet50_OS8|1024x512|80000|77.64%|77.98%|78.23%|[model](https://bj.bcebos.com/paddleseg/dygraph/cityscapes/emanet_resnet50_os8_cityscapes_1024x512_80k/model.pdparams) \| [log](https://bj.bcebos.com/paddleseg/dygraph/cityscapes/emanet_resnet50_os8_cityscapes_1024x512_80k/train.log) \| [vdl](https://paddlepaddle.org.cn/paddle/visualdl/service/app?id=3e053a214d60822d6e65445b8614d052)|
15-
|EMANet|ResNet101_OS8|1024x512|80000|79.41%|79.83%|80.33%|[model](https://bj.bcebos.com/paddleseg/dygraph/cityscapes/emanet_resnet101_os8_cityscapes_1024x512_80k/model.pdparams) \| [log](https://bj.bcebos.com/paddleseg/dygraph/cityscapes/emanet_resnet101_os8_cityscapes_1024x512_80k/train.log) \| [vdl](https://paddlepaddle.org.cn/paddle/visualdl/service/app?id=87be6389cdada711f5c6ada21d9ef6cd)|
14+
|EMANet|ResNet50_OS8|1024x512|80000|79.05%|79.34%|79.69%|[model](https://bj.bcebos.com/paddleseg/dygraph/cityscapes/emanet_resnet50_os8_cityscapes_1024x512_80k/model.pdparams) \| [log](https://bj.bcebos.com/paddleseg/dygraph/cityscapes/emanet_resnet50_os8_cityscapes_1024x512_80k/train.log) \| [vdl](https://paddlepaddle.org.cn/paddle/visualdl/service/app?id=0a05a0c4cd7d785b9707bdc59f55f585)|
15+
|EMANet|ResNet101_OS8|1024x512|80000|80.00%|80.23%|80.53%|[model](https://bj.bcebos.com/paddleseg/dygraph/cityscapes/emanet_resnet101_os8_cityscapes_1024x512_80k/model.pdparams) \| [log](https://bj.bcebos.com/paddleseg/dygraph/cityscapes/emanet_resnet101_os8_cityscapes_1024x512_80k/train.log) \| [vdl](https://paddlepaddle.org.cn/paddle/visualdl/service/app?id=ee6926322b8e292ce23ce62ecdaa3439)|
1616

1717
### Pascal VOC 2012 + Aug
1818

paddleseg/models/emanet.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
1+
# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
22
#
33
# Licensed under the Apache License, Version 2.0 (the "License");
44
# you may not use this file except in compliance with the License.
@@ -128,8 +128,6 @@ def __init__(self,
128128
out_channels=ema_channels,
129129
kernel_size=3)
130130
self.ema_mid_conv = nn.Conv2D(ema_channels, ema_channels, kernel_size=1)
131-
for param in self.ema_mid_conv.parameters():
132-
param.stop_gradient = True
133131
self.ema_out_conv = layers.ConvBNReLU(
134132
in_channels=ema_channels, out_channels=ema_channels, kernel_size=1)
135133
self.bottleneck = layers.ConvBNReLU(
@@ -184,8 +182,8 @@ def __init__(self, c, k, stage_num=3, momentum=0.1):
184182
tmp_mu = self.create_parameter(
185183
shape=[1, c, k],
186184
default_initializer=paddle.nn.initializer.KaimingNormal(k))
187-
self.mu = F.normalize(paddle.to_tensor(tmp_mu), axis=1, p=2)
188-
self.register_buffer('bases', self.mu)
185+
mu = F.normalize(paddle.to_tensor(tmp_mu), axis=1, p=2)
186+
self.register_buffer('mu', mu)
189187

190188
def forward(self, x):
191189
x_shape = paddle.shape(x)
@@ -207,9 +205,11 @@ def forward(self, x):
207205

208206
if self.training:
209207
mu = paddle.mean(mu, 0, keepdim=True)
210-
if paddle.distributed.get_world_size() > 1:
211-
paddle.distributed.reduce(
212-
mu / paddle.distributed.get_world_size(), 0)
213208
mu = F.normalize(mu, axis=1, p=2)
214-
self.mu = self.mu * (1 - self.momentum) + mu * self.momentum
209+
mu = self.mu * (1 - self.momentum) + mu * self.momentum
210+
if paddle.distributed.get_world_size() > 1:
211+
mu = paddle.distributed.all_reduce(mu)
212+
mu /= paddle.distributed.get_world_size()
213+
self.mu = mu
214+
215215
return x

0 commit comments

Comments
 (0)