Demo verification not runnable with docker image #1639
Description
Thanks for your error report and we appreciate it a lot.
Checklist
- I have searched related issues but cannot get the expected help. [check]
- 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
-
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
-
Did you make any modifications on the code or config? Did you understand what you have modified?
None -
What dataset did you use?
Trying to run the same dataset:mim download mmsegmentation --config pspnet_r50-d8_512x1024_40k_cityscapes --dest .
Environment
- Please run
python mmseg/utils/collect_env.py
to collect necessary environment information and paste it here. - 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!