Skip to content

BUG....PaddleSeg/contrib/CityscapesSOTA/predict.py 执行报错,paddle引起的bug #1668

@wayneck

Description

@wayneck

paddleseg 版本commit 5e6cab5 (HEAD -> release/2.3,
执行下列操作
python3 contrib/CityscapesSOTA/predict.py
--config contrib/CityscapesSOTA/configs/mscale_ocr_cityscapes_autolabel_mapillary.yml
--model_path model/model.pdparams
--image_path data/input2.jpg
--save_dir output/result

2021-12-27 18:07:40 [INFO] Start to predict...
/usr/lib/python3/dist-packages/apport/report.py:13: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
import fnmatch, glob, traceback, errno, sys, atexit, locale, imp, stat
Traceback (most recent call last):
File "contrib/CityscapesSOTA/predict.py", line 183, in
main(args)
File "contrib/CityscapesSOTA/predict.py", line 164, in main
predict(
File "/home/wayne/PaddleSeg/paddleseg/core/predict.py", line 111, in predict
pred = infer.inference(
File "/home/wayne/PaddleSeg/paddleseg/core/infer.py", line 232, in inference
logits = model(im)
File "/usr/local/lib/python3.8/dist-packages/paddle/fluid/dygraph/layers.py", line 902, in call
outputs = self.forward(*inputs, **kwargs)
File "/home/wayne/PaddleSeg/contrib/CityscapesSOTA/models/mscale_ocrnet.py", line 44, in forward
return self.nscale_forward(x, self.n_scales)
File "/home/wayne/PaddleSeg/contrib/CityscapesSOTA/models/mscale_ocrnet.py", line 140, in nscale_forward
pred = scale_as(pred, cls_out, self.align_corners)
File "/home/wayne/PaddleSeg/contrib/CityscapesSOTA/models/mscale_ocrnet.py", line 198, in scale_as
x_scaled = nn.functional.interpolate(
File "/usr/local/lib/python3.8/dist-packages/paddle/nn/functional/common.py", line 355, in interpolate
out_shape[i] = dim.numpy()[0]
TypeError: 'tuple' object does not support item assignment_

系统环境

Paddle version: 2.1.3
Paddle With CUDA: True

OS: Ubuntu 20.04
Python version: 3.8.10

CUDA version: 11.2.152
Build cuda_11.2.r11.2/compiler.29618528_0
cuDNN version: None.None.None
Nvidia driver version: 460.91.03

复现命令
我使用CPU执行,GPU显存不够
python3 contrib/CityscapesSOTA/predict.py
--config contrib/CityscapesSOTA/configs/mscale_ocr_cityscapes_autolabel_mapillary.yml
--model_path model/model.pdparams
--image_path data/input2.jpg
--save_dir output/result

建议
/usr/local/lib/python3.8/dist-packages/paddle/nn/functional/common.py
Change from
<
......
358 if in_dygraph_mode():
359 if isinstance(out_shape, Variable):
360 out_shape = list(out_shape.numpy())
361 for i, dim in enumerate(out_shape):
362 if isinstance(dim, Variable):
363 out_shape[i] = dim.numpy()[0]
.....

to
<
......
if in_dygraph_mode():
if isinstance(out_shape, Variable):
out_shape = list(out_shape.numpy())
else:
out_shape = list(out_shape)
for i, dim in enumerate(out_shape):
if isinstance(dim, Variable):
out_shape[i] = dim.numpy()[0]
.....
修改之后可以正确跑通
"if isinstance(out_shape, Variable):
out_shape = list(out_shape.numpy())"
这两句代码仅仅对"out_shape" 预判断为 Vaiable进行处理, 忽视了其他类型

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions