PaddlePaddle / PaddleSeg

Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.
https://arxiv.org/abs/2101.06175
Apache License 2.0
8.64k stars 1.68k forks source link

[Bug] Cannot predict SegNet #2843

Open ukoehler opened 1 year ago

ukoehler commented 1 year ago

System: Windows 10 Python 3.9.13 paddle-bfloat 0.1.7 paddle2onnx 1.0.1 paddlefsl 1.1.0 paddlehub 2.3.0 paddlenlp 2.4.1 paddlepaddle 2.3.2 paddleseg 2.6.0

Executing the following command to predict SegNet:

python predict.py --config configs/segnet/segnet_cityscapes_1024x512_80k.yml --m
odel_path SegNet/model.pdparams --image_path "D:\Local\devel\Python\TestImages\I
nput" --save_dir SegNet

produces the following error:

2022-12-13 11:03:33 [INFO]
---------------Config Information---------------
batch_size: 2
iters: 80000
loss:
  coef:
  - 1
  types:
  - type: CrossEntropyLoss
lr_scheduler:
  end_lr: 0
  learning_rate: 0.01
  power: 0.9
  type: PolynomialDecay
model:
  pretrained: null
  type: SegNet
optimizer:
  momentum: 0.9
  type: sgd
  weight_decay: 4.0e-05
train_dataset:
  dataset_root: data/cityscapes
  mode: train
  transforms:
  - max_scale_factor: 2.0
    min_scale_factor: 0.5
    scale_step_size: 0.25
    type: ResizeStepScaling
  - crop_size:
    - 1024
    - 512
    type: RandomPaddingCrop
  - type: RandomHorizontalFlip
  - brightness_range: 0.4
    contrast_range: 0.4
    saturation_range: 0.4
    type: RandomDistort
  - type: Normalize
  type: Cityscapes
val_dataset:
  dataset_root: data/cityscapes
  mode: val
  transforms:
  - type: Normalize
  type: Cityscapes
------------------------------------------------
2022-12-13 11:03:35 [INFO]      Number of predict images = 120
2022-12-13 11:03:35 [INFO]      Loading pretrained model from SegNet/model.pdpar
ams
2022-12-13 11:03:35 [INFO]      There are 158/158 variables loaded into SegNet.
2022-12-13 11:03:35 [INFO]      Start to predict...
  1/120 [..............................] - ETA: 20:02Traceback (most recent call
 last):
  File "D:\Local\devel\Python\PaddleSeg\PaddleSeg\predict.py", line 185, in <mod
ule>
    main(args)
  File "D:\Local\devel\Python\PaddleSeg\PaddleSeg\predict.py", line 173, in main

    predict(
  File "D:\Local\devel\Python\PaddleSeg\PaddleSeg\paddleseg\core\predict.py", li
ne 115, in predict
    pred, _ = infer.inference(
  File "D:\Local\devel\Python\PaddleSeg\PaddleSeg\paddleseg\core\infer.py", line
 158, in inference
    logits = model(im)
  File "D:\Local\devel\Python\PaddleSeg\.venv\lib\site-packages\paddle\fluid\dyg
raph\layers.py", line 930, in __call__
    return self._dygraph_call_func(*inputs, **kwargs)
  File "D:\Local\devel\Python\PaddleSeg\.venv\lib\site-packages\paddle\fluid\dyg
raph\layers.py", line 915, in _dygraph_call_func
    outputs = self.forward(*inputs, **kwargs)
  File "D:\Local\devel\Python\PaddleSeg\PaddleSeg\paddleseg\models\segnet.py", l
ine 163, in forward
    x = F.max_unpool2d(x, indices=ind1, kernel_size=2, stride=2)
  File "D:\Local\devel\Python\PaddleSeg\.venv\lib\site-packages\paddle\nn\functi
onal\pooling.py", line 888, in max_unpool2d
    output = _C_ops.unpool(x, indices, 'unpooling_type', 'max', 'ksize',
ValueError: (InvalidArgument) index should less than output tensor height * outp
ut tensor width. Expected 187132 < 187000, but got 187132 >= 187000. Please chec
k input value.
  [Hint: Expected index < output_feasize, but received index:187132 >= output_fe
asize:187000.] (at C:\home\workspace\Paddle_release\paddle\fluid\operators\math\
unpooling.cc:48)
  [operator < unpool > error]
juncaipeng commented 1 year ago

SegNet requires that the height and width of the input image are multiples of 32.

ukoehler commented 1 year ago

No changes for version 2.7.0