注意,gcc版本为9.4
1.error:编译spconv出错
注意:git clone spconv --recursive不成功,第三方库没有clone下来,因此要在spconv的third_part里手动git clone pybind
- 原因:pytorch版本不匹配
- 解决方法:修改spconv-8da6f9/src/spconv/all.cc,line20如下
- 原因:pytorch版本不匹配
- 解决方法:修改spconv-8da6f9/src/spconv/all.cc,line20如下
2.error:cannot import name ‘spconv_utils’ from ‘spconv’
-
原因:具体的不是很清楚,可能是因为去spconv源码中找spconv_utils了。但应该让他去install里面找
-
解决方法:在环境变量中注释掉spconv的源码路径python环境变量
3.error:cannot import name ‘SparseConv3d’ from ‘spconv’
- 原因:找不到SparseConv3d,
SubMConv3d这两个模块,但看了下源码中是有这两个模块的,所以应该只是这两个模块没有编译成功【但之前编译过程中并没有报错】。由于spconv是源码编译,还用到了pybind工具,因此猜测可能是pybind的版本问题。 - 解决方法:要在spconv的third_part里手动git clone pybind并chekck
out到某个版本【版本号:085a29436a8c472caaaf7157aa644b571079bcaa】,然后再重新编译spconv即可。
4.error:det3d cannot import name ‘deform_conv_cuda’
- 原因:det3d下没有编译这些cuda源码。
- 解决方法:由于centerpoint目录下有det3d,因此问了作者是否需要自行编译安装det3d,作者回复说只要在centerpoint下运行
bash setup.py
即可,里面写好了去项目的det3d目录下编译这几个cuda文件。
5.error:det3d 中的deform_conv未编译成功,“AT_CHECK”
- 原因:torch版本较高,deform_conv_cuda.cpp和deform_pool_cuda.cpp中的AT_CHECK与最新版本的torch不匹配。
- 解决方法:用vim将这两个文件中的"AT_CHECK" 都替换成"TORCH_CHECK "。
6.error:no apex
虽然conda list可以看到已安装apex,但在centerpoint 中的import apex时no apex,所以实际上没装成功。centerpoint 可能设置了在import失败时不抛出error,而只是打印no apex,导致也不好定位error。只能自己进入python环境尝试import,发现错误如下:
- 原因:pytorch版本过高,pytorch1.9后就会出现cannot import name ‘container_abcs‘
from ‘torch._six‘错误,当前环境版本为1.10.0 - 解决方法:降级为1.8或者修改apex的源码如下,然后重新编译安装:
if TORCH_MAJOR == 1 and TORCH_MINOR < 8:
from torch._six import container_abcs
else:
import collections.abc as container_abcs