写在前面 最近需要搞一个目标检测加上特征提取的小项目,找方法的时候看到了CenterNet这个网络模型,论文里的图表表现出CenterNet性能完虐YOLOv3,如下图
看着还是非常诱惑的,所以试试用这个。论文里也给了官方代码,但是还是有不少问题。
本机环境
从整个配置过程来看,主要问题集中在DCNv2这个网络的编译上。经过不少的尝试,最终在我的环境下编译成功:
- PyTorch 1.5
- CUDA 10.2
- g++ 7
- NVIDIA Driver 470.57.02
- Ubuntu 20.04
- Python 3.6
操作系统和Python版本应该不是很重要,主要是PyTorch、CUDA以及g++版本问题。之前我的电脑CUDA 是11.1的,编译出来之后出现
RuntimeError: Error compiling objects for extension
网上说是PyTorch和本地CUDA版本不一致导致,最终权衡之后是降级CUDA,重新安装了PyTorch。
CUDA10.2安装主要参考
因为在安装时候会默认也安装N卡驱动,我没有安 (因为之前重装驱动之后给电脑搞坏了整个盘子都清了) ,所以还是看自己选择。我装的时候电脑上的驱动版本已经高于下面链接中的版本了。
Ubuntu20.04安装CUDA10.2
PyTorch1.5安装命令
这里最好还是使用conda创建一个虚拟环境。
conda create --name CenterNet python=3.6
conda activate CenterNet
不要忘了将原来的PyTorch套装卸载(如果有)。
pip uninstall torch torchvision torchaudio
pip install torch==1.5.0 torchvision==0.6.0
g++版本更换
一般来说Ubuntu会有多个g++版本,可以查看
ll /usr/bin/ | grep "gcc"
然后进行切换版本就行了。参考
cuda error gcc(unsupported GNU version! gcc versions later than 5 are not supported)
下载CenterNet并替换DCNv2
官方给的源代码:
git clone https://github.com/xingyizhou/CenterNet
官方给的CenterNet中 src/lib/models/networks目录下的DCNv2就是要替换的,将整个文件夹删除。 然后在这个目录下
git clone git@gitcode.net:mirrors/MatthewHowe/DCNv2.git
安装
到目前为止,环境应该已经配好了,就是按照第一部分的内容(不一定按照我的这样配,只是我的这种环境在我的电脑上可以编译运行成功),然后也将DCNv2的代码进行了替换(整个文件夹删除之后又重新clone的指定代码)。 下面就开始编译安装(主要参考官方安装文档):
- 安装COCOAPI,这个位置不太重要,自己能找到就行。
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
make
python setup.py install --user
- 进入到CenterNet的master文件夹下
pip install -r requirements.txt
- 编译DCNv2
cd src/lib/models/networks/DCNv2
./make.sh
- [可选,only required if you are using extremenet or multi-scale testing]Compile NMS if your want to use multi-scale testing or test ExtremeNet.(这个我也编译了)
cd src/lib/external
make
- 对应readme/INSTALL.md的第7步
然后就基本上完成了安装工作,可以train了。
|