megvii-research / PETR

[ECCV2022] PETR: Position Embedding Transformation for Multi-View 3D Object Detection & [ICCV2023] PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images
Other
879 stars 132 forks source link

关于 TypeError: can't pickle dict_keys objects 问题 #65

Closed Isaac-xie closed 2 years ago

Isaac-xie commented 2 years ago

作者您好,当我直接使用一下命令安装mmdet3d

conda install pytorch torchvision -c pytorch pip install openmim mim install mmcv-full mim install mmdet mim install mmsegmentation git clone https://github.com/open-mmlab/mmdetection3d.git cd mmdetection3d pip install -e . 在运行以下命令时, CUDA_VISIBLE_DEVICES=4,5,6,7 tools/dist_test.sh projects/configs/petr/petr_r50dcn_gridmask_p4.py ckpts/epoch_24.pth 4 --eval bbox 出现问题: ForkingPickler(file, protocol).dump(obj)TypeError : TypeErrorForkingPickler(file, protocol).dump(obj)cannot pickle 'dict_keys' object: cannot pickle 'dict_keys' object TypeErrorTypeError: : cannot pickle 'dict_keys' objectcannot pickle 'dict_keys' object 这是环境中一些库的版本 mmcv-full 1.6.2 mmdet 2.25.2 mmdet3d 1.0.0rc5 mmsegmentation 0.29.0 torch 1.12.1 torchvision 0.13.1 我发现了https://github.com/megvii-research/PETR/issues/43 和我的问题一致,当我按照他说明的版本使用以下代码重新安装mmdet3d

conda create -n petr_1 python=3.8 conda activate petr_1 conda install pytorch=1.9.0 torchvision -c pytorch pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html

git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection git checkout v2.24.1 pip install -r requirements/build.txt python3 setup.py develop cd ..

pip install mmsegmentation==0.20.2

git clone https://github.com/open-mmlab/mmdetection3d.git cd mmdetection3d git checkout v0.17.1 pip install -r requirements/build.txt python3 setup.py develop cd .. 在安装mmdet3d报错 Pillow 7.1.2 is installed but pillow>=8.3.2 is required by {'imageio'} 请问应该做什么才能复现代码

yingfei1016 commented 2 years ago

Hi, 可能之前安新版本的mmdet3d导致有些包的版本比较高,这是我本地环境的一些包的版本,如果还有其他包的问题,欢迎继续提问。 Pillow==8.3.1 imageio==2.9.0 numba==0.49.0 numpy==1.19.5

Isaac-xie commented 2 years ago

hi, 按照您的回复,我新建了一个环境 conda create -n petr_1 python=3.8 -y conda activate petr_1 pip install Pillow==8.3.1 imageio==2.9.0 numba==0.49.0 numpy==1.19.5 conda install pytorch=1.9.0 torchvision -c pytorch -y pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html

git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection git checkout v2.24.1 pip install -r requirements/build.txt python3 setup.py develop cd ..

pip install mmsegmentation==0.20.2

git clone https://github.com/open-mmlab/mmdetection3d.git cd mmdetection3d git checkout v0.17.1 pip install -r requirements/build.txt python3 setup.py develop

在安装mmdet3d仍然报错, numpy 1.19.5 is installed but numpy>=1.20.3 is required by {'pandas'}

请问:是否这个版本的mmdet3d存在问题。

为什么使用最新版的mmdet3d,petr代码会报错呢?

yingfei1016 commented 2 years ago

这个版本应该没有问题,因为环境中预先安装的一些包的版本问题,出现一些包的版本不一样属于正常现象,按照提示把对应版本的包进行升级或者降级就行,我本地的pandas== 1.1.5。

用最新的mmdet3d会存在问题,最新版本的mmdet3d重构了坐标系,导致旋转角定义不一样。

此外不建议使用python3.8,根据其他人的反馈,可能比python3.6略低。

Isaac-xie commented 2 years ago

目前解决了库安装的问题,感谢您的回复

hdc2020 commented 1 year ago

这个版本应该没有问题,因为环境中预先安装的一些包的版本问题,出现一些包的版本不一样属于正常现象,按照提示把对应版本的包进行升级或者降级就行,我本地的pandas== 1.1.5。

用最新的mmdet3d会存在问题,最新版本的mmdet3d重构了坐标系,导致旋转角定义不一样。

此外不建议使用python3.8,根据其他人的反馈,可能比python3.6略低。

作者,您好! 我完全follow上面的安装方法,mmdetection3d可以成功编译,但执行test命令:python tools/test.py ./projects/configs/petrv2/petrv2_vovnet_gridmask_p4_800x320.py ./ckpts/epoch_24_det.pth --eval bbox,会有如下错误: projects.mmdet3d_plugin Traceback (most recent call last): File "/home/h006/Github/PETR/tools/test.py", line 246, in main() File "/home/h006/Github/PETR/tools/test.py", line 138, in main plg_lib = importlib.import_module(_module_path) File "/home/h006/miniconda3/envs/petr/lib/python3.8/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 961, in _find_and_load_unlocked File "", line 219, in _call_with_frames_removed File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 973, in _find_and_load_unlocked ModuleNotFoundError: No module named 'projects' 请问安装还存在什么问题吗?

pianogGG commented 1 year ago

这个版本应该没有问题,因为环境中预先安装的一些包的版本问题,出现一些包的版本不一样属于正常现象,按照提示把对应版本的包进行升级或者降级就行,我本地的pandas== 1.1.5。 用最新的mmdet3d会存在问题,最新版本的mmdet3d重构了坐标系,导致旋转角定义不一样。 此外不建议使用python3.8,根据其他人的反馈,可能比python3.6略低。

作者,您好! 我完全follow上面的安装方法,mmdetection3d可以成功编译,但执行test命令:python tools/test.py ./projects/configs/petrv2/petrv2_vovnet_gridmask_p4_800x320.py ./ckpts/epoch_24_det.pth --eval bbox,会有如下错误: projects.mmdet3d_plugin Traceback (most recent call last): File "/home/h006/Github/PETR/tools/test.py", line 246, in main() File "/home/h006/Github/PETR/tools/test.py", line 138, in main plg_lib = importlib.import_module(_module_path) File "/home/h006/miniconda3/envs/petr/lib/python3.8/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 961, in _find_and_load_unlocked File "", line 219, in _call_with_frames_removed File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 973, in _find_and_load_unlocked ModuleNotFoundError: No module named 'projects' 请问安装还存在什么问题吗?

我也遇到了这个问题请问解决了吗?

yingfei1016 commented 1 year ago

我们没有遇见这个问题, (1)可以试试把测试命令改为 tools/dist_test.sh ./projects/configs/petrv2/petrv2_vovnet_gridmask_p4_800x320.py ./ckpts/epoch_24_det.pth --eval bbox 试试

(2)如果还是不行的话,试着把test.py 挪出tools文件夹到上一级目录,让它直接能看到projects文件夹试试。以及用os.sys.path.append() 看看能不能在test.py里通过这种方式导入projects目录

hbc2020 commented 1 year ago

这个版本应该没有问题,因为环境中预先安装的一些包的版本问题,出现一些包的版本不一样属于正常现象,按照提示把对应版本的包进行升级或者降级就行,我本地的pandas== 1.1.5。 用最新的mmdet3d会存在问题,最新版本的mmdet3d重构了坐标系,导致旋转角定义不一样。 此外不建议使用python3.8,根据其他人的反馈,可能比python3.6略低。

作者,您好! 我完全follow上面的安装方法,mmdetection3d可以成功编译,但执行test命令:python tools/test.py ./projects/configs/petrv2/petrv2_vovnet_gridmask_p4_800x320.py ./ckpts/epoch_24_det.pth --eval bbox,会有如下错误: projects.mmdet3d_plugin Traceback (most recent call last): File "/home/h006/Github/PETR/tools/test.py", line 246, in main() File "/home/h006/Github/PETR/tools/test.py", line 138, in main plg_lib = importlib.import_module(_module_path) File "/home/h006/miniconda3/envs/petr/lib/python3.8/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 961, in _find_and_load_unlocked File "", line 219, in _call_with_frames_removed File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 973, in _find_and_load_unlocked ModuleNotFoundError: No module named 'projects' 请问安装还存在什么问题吗?

我也遇到了这个问题请问解决了吗?

Hi, 该问题的解决方法是在test.py文件开头加上如下代码: import os, sys sys.path.insert(0, os.path.dirname(os.path.abspath(file))[:-5]) # insert project abs path print(os.path.dirname(os.path.abspath(file))[:-5])

shenyingying commented 1 year ago

这个版本应该没有问题,因为环境中预先安装的一些包的版本问题,出现一些包的版本不一样属于正常现象,按照提示把对应版本的包进行升级或者降级就行,我本地的pandas== 1.1.5。 用最新的mmdet3d会存在问题,最新版本的mmdet3d重构了坐标系,导致旋转角定义不一样。 此外不建议使用python3.8,根据其他人的反馈,可能比python3.6略低。

作者,您好! 我完全follow上面的安装方法,mmdetection3d可以成功编译,但执行test命令:python tools/test.py ./projects/configs/petrv2/petrv2_vovnet_gridmask_p4_800x320.py ./ckpts/epoch_24_det.pth --eval bbox,会有如下错误: projects.mmdet3d_plugin Traceback (most recent call last): File "/home/h006/Github/PETR/tools/test.py", line 246, in main() File "/home/h006/Github/PETR/tools/test.py", line 138, in main plg_lib = importlib.import_module(_module_path) File "/home/h006/miniconda3/envs/petr/lib/python3.8/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 961, in _find_and_load_unlocked File "", line 219, in _call_with_frames_removed File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 973, in _find_and_load_unlocked ModuleNotFoundError: No module named 'projects' 请问安装还存在什么问题吗?

我也遇到了这个问题请问解决了吗?

Hi, 该问题的解决方法是在test.py文件开头加上如下代码: import os, sys sys.path.insert(0, os.path.dirname(os.path.abspath(file))[:-5]) # insert project abs path print(os.path.dirname(os.path.abspath(file))[:-5])

这个file 是什么?

hbc2020 commented 11 months ago

Sorry,更正一下: import sys sys.path.insert(0, os.path.dirname(os.path.abspath(file))[:-5]) # insert project abs path print(os.path.dirname(os.path.abspath(file))[:-5])

hbc2020 commented 11 months ago

file前后要加__,之前的回答是正确的,但没有被正确显示 petrv2