Skip to content

Demo verification not runnable with docker image #1639

Closed
@FranzEricSchneider

Description

Thanks for your error report and we appreciate it a lot.

Checklist

  1. I have searched related issues but cannot get the expected help. [check]
  2. The bug has not been fixed in the latest version. [check]

Describe the bug
When I use the docker file from the installation page, and then verification test also mentioned on the installation page, they do not work together. Perhaps the demo has changed since the verification instructions were written? Because the docker file appears to be taking a fresh clone of the repo. When trying to run the verification code there were three issues in a row.

First, the --out-file argument wasn't recognized:

usage: image_demo.py [-h] [--device DEVICE] [--palette PALETTE] [--opacity OPACITY]
                     img config checkpoint
image_demo.py: error: unrecognized arguments: --out-file result.jpg

Then when I removed that argument there's an error about demo.jpg:

Traceback (most recent call last):
  File "demo/image_demo.py", line 40, in <module>
    main()
  File "demo/image_demo.py", line 29, in main
    result = inference_segmentor(model, args.img)
  File "/mmsegmentation/mmseg/apis/inference.py", line 88, in inference_segmentor
    data = test_pipeline(data)
  File "/mmsegmentation/mmseg/datasets/pipelines/compose.py", line 41, in __call__
    data = t(data)
  File "/mmsegmentation/mmseg/apis/inference.py", line 63, in __call__
    img = mmcv.imread(results['img'])
  File "/opt/conda/lib/python3.8/site-packages/mmcv/image/io.py", line 203, in imread
    img_bytes = file_client.get(img_or_path)
  File "/opt/conda/lib/python3.8/site-packages/mmcv/fileio/file_client.py", line 1014, in get
    return self.client.get(filepath)
  File "/opt/conda/lib/python3.8/site-packages/mmcv/fileio/file_client.py", line 535, in get
    with open(filepath, 'rb') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'demo/demo.jpg'

When I change that file to demo.png (note the change from jpg to png) then it complains about the CPU argument:

  File "/opt/conda/lib/python3.8/site-packages/torch/nn/modules/container.py", line 141, in forward
    input = module(input)
  File "/opt/conda/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/opt/conda/lib/python3.8/site-packages/torch/nn/modules/batchnorm.py", line 682, in forward
    raise ValueError("SyncBatchNorm expected input tensor to be on GPU")
ValueError: SyncBatchNorm expected input tensor to be on GPU

When I change that to --device cuda then it does appear to run, but I can't find an output anywhere. Inspecting python demo/image_demo.py --help I don't see any option in this demo file to set an output file.

/mmsegmentation# python demo/image_demo.py -h
usage: image_demo.py [-h] [--device DEVICE] [--palette PALETTE] [--opacity OPACITY]
                     img config checkpoint

positional arguments:
  img                Image file
  config             Config file
  checkpoint         Checkpoint file

optional arguments:
  -h, --help         show this help message and exit
  --device DEVICE    Device used for inference
  --palette PALETTE  Color palette used for segmentation map
  --opacity OPACITY  Opacity of painted segmentation map. In (0, 1] range.

Reproduction

  1. What command or script did you run?

     # Using Dockerfile from here: https://github.com/open-mmlab/mmsegmentation/blob/master/docker/Dockerfile
     $ docker build -t mmsegmentation .
     $ docker run --gpus all --shm-size=8g -it -v /tmp/:/mmsegmentation/data mmsegmentation
     /mmsegmentation# pip install -U openmim
    
     # Following the verification steps from the installation page:
     /mmsegmentation# mim download mmsegmentation --config pspnet_r50-d8_512x1024_40k_cityscapes --dest .
     /mmsegmentation# python demo/image_demo.py demo/demo.jpg pspnet_r50-d8_512x1024_40k_cityscapes.py pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth --device cpu --out-file result.jpg
    
     # Error thrown:
     usage: image_demo.py [-h] [--device DEVICE] [--palette PALETTE] [--opacity OPACITY]
                      img config checkpoint
     image_demo.py: error: unrecognized arguments: --out-file result.jpg
    
  2. Did you make any modifications on the code or config? Did you understand what you have modified?
    None

  3. What dataset did you use?
    Trying to run the same dataset: mim download mmsegmentation --config pspnet_r50-d8_512x1024_40k_cityscapes --dest .

Environment

  1. Please run python mmseg/utils/collect_env.py to collect necessary environment information and paste it here.
  2. You may add addition that may be helpful for locating the problem, such as
    • How you installed PyTorch [e.g., pip, conda, source]
    • Other environment variables that may be related (such as $PATH, $LD_LIBRARY_PATH, $PYTHONPATH, etc.)
/mmsegmentation# python mmseg/utils/collect_env.py
sys.platform: linux
Python: 3.8.12 (default, Oct 12 2021, 13:49:34) [GCC 7.5.0]
CUDA available: True
GPU 0: NVIDIA GeForce GTX 1080 Ti
CUDA_HOME: /usr/local/cuda
NVCC: Cuda compilation tools, release 11.3, V11.3.109
GCC: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
PyTorch: 1.11.0
PyTorch compiling details: PyTorch built with:
  - GCC 7.3
  - C++ Version: 201402
  - Intel(R) oneAPI Math Kernel Library Version 2021.4-Product Build 20210904 for Intel(R) 64 architecture applications
  - Intel(R) MKL-DNN v2.5.2 (Git Hash a9302535553c73243c632ad3c4c80beec3d19a1e)
  - OpenMP 201511 (a.k.a. OpenMP 4.5)
  - LAPACK is enabled (usually provided by MKL)
  - NNPACK is enabled
  - CPU capability usage: AVX2
  - CUDA Runtime 11.3
  - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_37,code=compute_37
  - CuDNN 8.2
  - Magma 2.5.2
  - Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.3, CUDNN_VERSION=8.2.0, CXX_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/c++, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -fopenmp -DNDEBUG -DUSE_KINETO -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -DEDGE_PROFILER_USE_KINETO -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-function -Wno-unused-result -Wno-unused-local-typedefs -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.11.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=OFF, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, USE_ROCM=OFF, 

TorchVision: 0.12.0
OpenCV: 4.5.5
MMCV: 1.5.2
MMCV Compiler: GCC 7.3
MMCV CUDA Compiler: 11.3
MMSegmentation: 0.25.0+46326f6

Error traceback

If applicable, paste the error trackback here [INITIAL ERROR]

usage: image_demo.py [-h] [--device DEVICE] [--palette PALETTE] [--opacity OPACITY]
                     img config checkpoint
image_demo.py: error: unrecognized arguments: --out-file result.jpg

Bug fix

If you have already identified the reason, you can provide the information here. If you are willing to create a PR to fix it, please also leave a comment here and that would be much appreciated!

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