open-mmlab / mmdeploy

OpenMMLab Model Deployment Framework
https://mmdeploy.readthedocs.io/en/latest/
Apache License 2.0
2.74k stars 628 forks source link

[Bug] FileNotFoundError: class `YOLOv5CocoDataset` in mmyolo/datasets/yolov5_coco.py: [Errno 2] No such file or directory: 'data/coco/annotations/instances_val2017.json' #1381

Open mylittlebuds opened 1 year ago

mylittlebuds commented 1 year ago

Checklist

Describe the bug

hello my friends: when i run test.py of mmdeploy to test onnx model changed by yolo5s under mmyolo,but a problem confused me, please check trace back as below:

(openmm38) ubuntu@AiotServer02:~/PycharmProjects/MMDeploy/mmengine/mmyolo$ python3 /home/ubuntu/PycharmProjects/MMDeploy/mmengine/MMDeploy/tools/test.py /home/ubuntu/PycharmProjects/MMDeploy/mmengine/mmyolo/configs/deploy/detection_onnxruntime_static.py /home/ubuntu/PycharmProjects/MMDeploy/mmengine/mmyolo/configs/deploy/model/yolov5_s-static.py --model work_dir/end2end.onnx --work-dir work_dir --device cpu 11/17 14:26:35 - mmengine - WARNING - Failed to get codebase, got: 'Cannot get key by value "mmyolo" of <enum \'Codebase\'>'. Then export a new codebase in Codebase MMYOLO: mmyolo 11/17 14:26:36 - mmengine - WARNING - Import mmdeploy.codebase.mmyolo.deploy failedPlease check whether the module is the custom module.No module named 'mmdeploy.codebase.mmyolo' 11/17 14:26:36 - mmengine - WARNING - Import mmdeploy.codebase.mmyolo.deploy failedPlease check whether the module is the custom module.No module named 'mmdeploy.codebase.mmyolo' 11/17 14:26:36 - mmengine - WARNING - Failed to search registry with scope "mmyolo" in the "Codebases" registry tree. As a workaround, the current "Codebases" registry in "mmdeploy" is used to build instance. This may cause unexpected failure when running the built modules. Please check whether "mmyolo" is a correct scope, or whether the registry is initialized. 11/17 14:26:36 - mmengine - WARNING - Import mmdeploy.codebase.mmyolo.deploy failedPlease check whether the module is the custom module.No module named 'mmdeploy.codebase.mmyolo' 11/17 14:26:36 - mmengine - WARNING - Failed to search registry with scope "mmyolo" in the "Codebases" registry tree. As a workaround, the current "Codebases" registry in "mmdeploy" is used to build instance. This may cause unexpected failure when running the built modules. Please check whether "mmyolo" is a correct scope, or whether the registry is initialized. loading annotations into memory... Traceback (most recent call last): File "/home/ubuntu/PycharmProjects/MMDeploy/mmengine/mmengine/registry/build_functions.py", line 121, in build_from_cfg obj = obj_cls(args) # type: ignore File "/home/ubuntu/PycharmProjects/MMDeploy/mmengine/mmyolo/mmyolo/datasets/yolov5_coco.py", line 16, in init super().init(*args, *kwargs) File "/home/ubuntu/anaconda3/envs/openmm38/lib/python3.8/site-packages/mmdet/datasets/base_det_dataset.py", line 33, in init super().init(args, kwargs) File "/home/ubuntu/PycharmProjects/MMDeploy/mmengine/mmengine/dataset/base_dataset.py", line 247, in init self.full_init() File "/home/ubuntu/PycharmProjects/MMDeploy/mmengine/mmyolo/mmyolo/datasets/yolov5_coco.py", line 24, in full_init self.data_list = self.load_data_list() File "/home/ubuntu/anaconda3/envs/openmm38/lib/python3.8/site-packages/mmdet/datasets/coco.py", line 64, in load_data_list self.coco = self.COCOAPI(local_path) File "/home/ubuntu/anaconda3/envs/openmm38/lib/python3.8/site-packages/mmdet/datasets/api_wrappers/coco_api.py", line 25, in init super().init(annotation_file=annotation_file) File "/home/ubuntu/anaconda3/envs/openmm38/lib/python3.8/site-packages/pycocotools/coco.py", line 81, in init with open(annotation_file, 'r') as f: FileNotFoundError: [Errno 2] No such file or directory: 'data/coco/annotations/instances_val2017.json'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/ubuntu/PycharmProjects/MMDeploy/mmengine/MMDeploy/tools/test.py", line 156, in main() File "/home/ubuntu/PycharmProjects/MMDeploy/mmengine/MMDeploy/tools/test.py", line 120, in main dataset = task_processor.build_dataset(test_dataloader['dataset']) File "/home/ubuntu/PycharmProjects/MMDeploy/mmengine/MMDeploy/mmdeploy/codebase/base/task.py", line 147, in build_dataset dataset = DATASETS.build(dataset_cfg) File "/home/ubuntu/PycharmProjects/MMDeploy/mmengine/mmengine/registry/registry.py", line 454, in build return self.build_func(cfg, *args, **kwargs, registry=self) File "/home/ubuntu/PycharmProjects/MMDeploy/mmengine/mmengine/registry/build_functions.py", line 135, in build_from_cfg raise type(e)( FileNotFoundError: class YOLOv5CocoDataset in mmyolo/datasets/yolov5_coco.py: [Errno 2] No such file or directory: 'data/coco/annotations/instances_val2017.json'

Reproduction

command as below: python3 /home/ubuntu/PycharmProjects/MMDeploy/mmengine/MMDeploy/tools/test.py /home/ubuntu/PycharmProjects/MMDeploy/mmengine/mmyolo/configs/deploy/detection_onnxruntime_static.py /home/ubuntu/PycharmProjects/MMDeploy/mmengine/mmyolo/configs/deploy/model/yolov5_s-static.py --model work_dir/end2end.onnx --work-dir work_dir --device cpu

i have not modified the files.

Environment

11/17 14:31:59 - mmengine - INFO - 

11/17 14:31:59 - mmengine - INFO - **********Environmental information**********
11/17 14:31:59 - mmengine - INFO - sys.platform: linux
11/17 14:31:59 - mmengine - INFO - Python: 3.8.0 (default, Nov  6 2019, 21:49:08) [GCC 7.3.0]
11/17 14:31:59 - mmengine - INFO - CUDA available: True
11/17 14:31:59 - mmengine - INFO - numpy_random_seed: 2147483648
11/17 14:31:59 - mmengine - INFO - GPU 0,1: NVIDIA GeForce RTX 3080 Ti
11/17 14:31:59 - mmengine - INFO - CUDA_HOME: /usr/local/cuda
11/17 14:31:59 - mmengine - INFO - NVCC: Cuda compilation tools, release 11.3, V11.3.58
11/17 14:31:59 - mmengine - INFO - GCC: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
11/17 14:31:59 - mmengine - INFO - PyTorch: 1.12.1
11/17 14:31:59 - mmengine - INFO - PyTorch compiling details: PyTorch built with:
  - GCC 9.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.6.0 (Git Hash 52b5f107dd9cf10910aaa19cb47f3abf9b349815)
  - 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.3.2  (built against CUDA 11.5)
  - Magma 2.5.2
  - Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.3, CUDNN_VERSION=8.3.2, CXX_COMPILER=/opt/rh/devtoolset-9/root/usr/bin/c++, CXX_FLAGS= -fabi-version=11 -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-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 -Werror=cast-function-type -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.12.1, 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, 

11/17 14:31:59 - mmengine - INFO - TorchVision: 0.13.1
11/17 14:31:59 - mmengine - INFO - OpenCV: 4.6.0
11/17 14:31:59 - mmengine - INFO - MMEngine: 0.3.1
11/17 14:31:59 - mmengine - INFO - MMCV: 2.0.0rc2
11/17 14:31:59 - mmengine - INFO - MMCV Compiler: GCC 9.3
11/17 14:31:59 - mmengine - INFO - MMCV CUDA Compiler: 11.3
11/17 14:31:59 - mmengine - INFO - MMDeploy: 0.10.0+0e2eff1
11/17 14:31:59 - mmengine - INFO - 

11/17 14:31:59 - mmengine - INFO - **********Backend information**********
11/17 14:32:00 - mmengine - INFO - onnxruntime: 1.8.1   ops_is_avaliable : True
11/17 14:32:00 - mmengine - INFO - tensorrt: None       ops_is_avaliable : False
11/17 14:32:00 - mmengine - INFO - ncnn: 1.0.20221117   ops_is_avaliable : True
11/17 14:32:00 - mmengine - INFO - pplnn_is_avaliable: False
11/17 14:32:00 - mmengine - INFO - openvino_is_avaliable: False
11/17 14:32:00 - mmengine - INFO - snpe_is_available: False
11/17 14:32:00 - mmengine - INFO - ascend_is_available: False
11/17 14:32:00 - mmengine - INFO - coreml_is_available: False
11/17 14:32:00 - mmengine - INFO - 

11/17 14:32:00 - mmengine - INFO - **********Codebase information**********
11/17 14:32:00 - mmengine - INFO - mmdet:       3.0.0rc3
11/17 14:32:00 - mmengine - INFO - mmseg:       None
11/17 14:32:00 - mmengine - INFO - mmcls:       None
11/17 14:32:00 - mmengine - INFO - mmocr:       None
11/17 14:32:00 - mmengine - INFO - mmedit:      None
11/17 14:32:00 - mmengine - INFO - mmdet3d:     None
11/17 14:32:00 - mmengine - INFO - mmpose:      None
11/17 14:32:00 - mmengine - INFO - mmrotate:    None
11/17 14:32:00 - mmengine - INFO - mmaction:    None

Error traceback

No response

xin-li-67 commented 1 year ago

Hi @mylittlebuds ,

Thanks for trying to deploy the MMYOLO models. There is one thing I would like you to check on this issue. Do you have the data/coco folder under your MMYOLO directory? According to line#108 in the test.py, a test dataloader is used during the evaluation. Meanwhile, we are still refining the deployment process and document in MMYOLO repo, you are welcome to leave comments and raise new issues there as well!

mmdeploy

lvhan028 commented 1 year ago

test.py aims at evaluating a model on a dataset. Therefore a dataset has to be prepared before. But if you are interested in testing specific images, you can try the API inference_model