这里记录一下复现的流程和遇到的问题:
1 下载项目源码
作者实现的:https://github.com/xingyizhou/CenterNet
2 编译nms
cd CenterNet\src\lib\external
python setup.py build_ext --inplace
2.1 问题1
问题描述
cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp”
解决办法
如果编译有问题的话,需要注释setup.py里面的这句代码
extra_compile_args=["-Wno-cpp", "-Wno-unused-function"]
2.2 问题2
问题描述
D:\anaconda3\include\pyconfig.h(59): fatal error C1083: 无法打开包括文件: “io.h”: No such file or directory
解决办法
安装windows sdk
3 编译DCN2项目
首先更新DCN2项目
- 删除原先的
cd CenterNet\src\lib\models\networks
rm -rf DCNv2
- clone新的
git clone https://github.com/CharlesShang/DCNv2
cd DCNv2
修改DCNv2源码
- 找到
DCNv2/src/cuda/dcn_v2_cuda.cu
并打开 - 在
THCState *state = at::globalContext().lazyInitCUDA();
前添加# extern THCState *state;
如
# extern THCState *state;
THCState *state = at::globalContext().lazyInitCUDA();
开始编译
python setup.py build develop
3.1 问题1
git网络问题导致clone失败,我多试了几次就成功了
3.2 问题2
问题描述
subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1
原因
这个错误的出现主要是因为pytorch版本大于1.5
解决办法
- pytorch版本降低到1.5一下(没试过)
- 将DCNv2中的setup.py中的
cmdclass={'build_ext': BuildExtension}
这一行改为cmdclass={"build_ext": torch.utils.cpp_extension.BuildExtension.with_options(use_ninja=False)}
(pytorch默认使用ninjia作为backend,这里把它禁用掉就好了)