我是在已有cuda10.1环境的linux服务器中配置centernet环境的,所以没有配置cuda环境的小伙伴可以先参考其他博客配置好cuda环境,再来看这篇博客。-------郑重提醒:这篇博客绝对可以解决小伙伴们在配置centernet环境时所遇到的大部分问题,说多了都是泪啊!!!
新上手的小伙伴一定要创建虚拟环境,在虚拟环境中配置包,不然会出现各种各样的错误。这里我使用的是Anaconda3。
conda create --name CenterNet python=3.6//创建python环境为3.6的虚拟环境
conda activate CenterNet //进入该环境
在安装pytorch之前,一定要先查看自己cuda版本,然后下载对应版本的pytorch,不然在编译DCNv2的时候会报错:没有cuda支持。
废话不多说,开整!!!
但是这种方法下载困难,我尝试很久都连接不上官网给的地址,再说官网给你配置的pytorch版本一般是最新的,不满足我们的需求。
这个方法速度很快,但是我在后面会遇到问题,测试torch时报错,缺失文件。可能是因为我的服务器中安装多个虚拟环境,本地安装时,系统检测到一些文件已经安装后,就不给我新建的虚拟环境安装了,系统真是太懒了!!!
这是我最终选择的方法,下载速度很快,可以达到Mb/s级别。
首先确定你是在新建的虚拟环境中,即已经运行了:
conda activate CenterNet //进入该环境
然后配置清华镜像:参考https://zhangkaifang.blog.csdn.net/article/details/86497684
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
最后安装pytorch,再次提醒:这里我cuda版本为10.1
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1
#官网给的命令后面有 -c pytorch,因为我们使用清华镜像下载,所以不加这个后缀。
下载好之后要验证以下torch是否可用
python
import torch
有博客说下载离线的centernet后面会出错,必须使用git下载。我没有验证过,感兴趣的小伙伴可以自行踩坑!!!
CenterNet_ROOT=/path/to/clone/CenterNet
git clone https://github.com/xingyizhou/CenterNet $CenterNet_ROOT
/path/to/clone/是自己设置的路径,我是直接/home/user。Centernet不需要自己创建,你自己创建还会报错!
pip install -r requirements.txt
一些博客把安装依赖库放在下载cocoapi后面,但是有时候会报错。因为依赖库中有一个包Cpython,需要在cocoapi setup之前下载,不然会报错。
cd /path/to/clone/CenterNet
git clone https://github.com/cocodataset/cocoapi.git $COCOAPI
cd $cocoapi/PythonAPI
make
python setup.py install --user
先进入3.1中下载的CenteNet文件中,然后在里面下载cocoapi。
最让我恶心的一个步骤,没有之一,真是在这里踩了无数的坑。hetui~
因为我们用的cuda版本和pytorch版本过高,CenteNet文件中的DCNv2不能用了,所以我们需要下载一个适用与pytorch1.7版本的DCNv2。
github上有支持PyTorch1.7的源码,“https://github.com/lbin/DCNv2/tree/pytorch_1.7”,可以直接使用。
将下载好的DCNv2替换掉CenteNet文件中原来的DCNv2,记得改名字。这里的DCNv2版本貌似只适用与pytorch1.7,pytorch1.7以下的肯定不支持,以上没试过。
cd src\lib\models\networks\DCNv2
bitfusion run -n 1 -p 0.5 -- python setup.py build develop
上面命令中的bitfusion run -n 1 -p 0.5 – 是我使用gpu运行.py文件时要加的前缀,在运行python setup.py build develop之前确定你是在使用gpu运行这条命令,如果默认使用gpu的话不需要加前缀。
在这里我还踩过一个坑,有的博客使用从 https://github.com/CharlesShang/DCNv2 中下载的DCNv2替换CenteNet文件中原来的DCNv2,这里说明以下:这个DCNv2 在pytorch1.7版本上不可用!!!!!
这一步我没做,嘿嘿!!
参照博客https://blog.csdn.net/chaosinorder/article/details/100601705
下载好的模型放在CenterNet/models里。
bitfusion run -n 1 -p 0.5 --是我在服务器中使用gpu运行.py文件时要加的前缀。
bitfusion run -n 1 -p 0.5 -- python demo.py ctdet --demo --load_model
终于完成了!!!如果我们环境一致的话,我相信这一套流程是可以帮助到你的,在centernet上训练自己的数据集我还没做,兄弟们,等我踩坑!!!欢迎在评论区中一起交流!虽然我不一定会看,看了也不一定会,但是如果是我踩过的坑,还是会略知一二的。