说明:配置环境中之前,我的ubuntu中环境:cuda10.1 + nvidia 390【还包含430】+ gcc 7.5;可能需要安装两个版本的cuda,以及各自cuda对应版本的cudnn,gcc
若你刚好只有一个cuda9.0就很简单,不需要考虑多个cuda切换的问题。
一、CenterNet所需深度学习的环境
- cuda 9.0 【下载地址nvida】
- gcc 5.5.0
- nvida (目前使用的是390)【要和cuda9.0对应,版本的最低要求:384】
- cudnn 7.0【也是要和cuda9.0对应的,下载的是.tar.gz文件,可以去CUDNN官网下载地址】
- anaconda3 5.2.0 【python 3.6】 anaconda清华镜像下载地址 这个具体版本要求暂时没找到。5.2.0是可以实现的
二、对应的软件安装步骤[安装顺序按照序号来]
- cuda和nvida 见Linux下,Nvidia驱动以及Cuda的安装
- gcc安装步骤见下文【五、问题3】
- cudnn:解压下载好cudnn文件,在文件夹内打开终端,执行如下操作:【若要安装cuda10.1对应的cudnn也是同样的方法,只是修改对应版本号即可】
sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64/
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda-9.0/lib64/libcudn
- annaconda:
sudo apt-get install yum //安装之前先安装yum;
bash Anaconda3-5.2.0-Linux-x86_64.sh
yum install -y bzip2
按照提示,根据需要选择yes/no;
//2.安装结束后,配置环境变量步骤:
sudo vim /etc/profile
//在文章末尾加上如下代码:[就是你安装好的anaconda3的bin路径]
export PATH=$PATH:/home/anaconda3/bin
//重新加载配置文件
source /etc/prfile
//测试:打开终端,输入 :
python3//回车后会看到 Python3.6.4 |Anaconda,
anaconda安装成功的截图,顺便测试了是否torch安装成功:
三、安装软件出现的问题
说明:如果本身的ubuntu的系统就没有安装其他的cuda,则不会出现以下问题:
A当安装cuda9.0的时候【此时系统已经有了cuda10.1】,问题:toolkit installation failed using unsupported compiler
- 原因:gcc版本不合适;解决办法:在重新安装cuda,执行.run文件时,加上-override,具体操作如下:【采用是chmod命令安装cuda】
chmod +x cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run -override
- 安装完两个cuda后,修改 .bashrc的配置文件,【一定先删除你之前安装cuda10.1时添加的配置代码export…,否则不管怎么修改软链接,nvcc -V显示都是10.1的版本信息】,新增配置语句代码如下:
//在文件结尾处添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
//保存退出后更新一下改文件
source ~/.bashrc
如下图所示:
- 不同版cuda之间通过软链接的方式切换:
//1.查看系统的当前的版本
nvcc -V
cat /usr/local/cuda/version.txt
//2.切换到目录
cd /usr/local
//3.查看当前的软链接指向
stat cuda
//4.删除当前的软链接[若是你需要的cuda,可不执行该步骤]
sudo rm -rf cuda
//5.并建立新的软链接[若是你需要的cuda,可不执行该步骤]
sudo ln -s /usr/local/cuda-[另外的cuda版本号:9.0/9.1] /usr/local/cuda
四、配置CenterNet步骤:
1.在conda虚拟环境中安装
conda create --name CenterNet python=3.6
conda activate CenterNet //(激活环境)
2.安装torch
conda install pytorch=0.4.1 torchvision -c pytorch
3.先从github拉取代码:(原因:先要安装requirement.txt;它含有COCOAPI里面需要的CPython)
git clone https://github.com/xingyizhou/CenterNet $CenterNet_ROOT
4.安装requirement.txt(安装前先切换到CenterNet目录下, cd /CenterNet)
pip install -r requirements.txt
5.安装cocoapi 【安装到CenterNet/data目录下在】
git clone https://github.com/cocodataset/cocoapi.git $COCOAPI
cd cocoapi/PythonAPI
make
python setup.py install --user
6.编译DCNv2
cd CenterNet/src/lib/models/networks/DCNv2
./make.sh
7.运行demo【切换到 CenterNet/src目录下】
执行demo前,先下载 ctdet_coco_dla_2x.pth 提取码:v9h2;并讲该文件放到CenterNet/models下
python demo.py ctdet --demo ../images/17790319373_bd19b24cfc_k.jpg --load_model ../models/ctdet_coco_dla_2x.pth
运行的效果图:
五、centerNet配置以及执行遇到的问题
- 执行demo时,报错:ImportError undefined symbol: __cudaRegisterFatBinaryEnd
原因:pytorch的编译时CUDA版本和运行时CUDA版本不一致时【我当时是用cuda10.1编译的,二用的cuda9.0运行的】
解决方法:保证编译和运行时同一个cuda下即可【详细请见参考文献4】 - 在“”四”第一步激活环境时,报错:CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’ 无法激活conda创建的CenterNet环境
解决方法:终端执行这两行命令source activate source deactivate
【详细请见参考文献5】 - 执行demo时,报错:error – unsupported GNU version! gcc versions later than 6 are not supported!
原因:cuda所要求的的gcc版本不一致
解决方法:前提:在已有高版本的gcc编辑器下,安装低版本:【详情请见参考文献6】
//A 更新安装最新的gcc,并查看当前版本
1. sudo apt-get install gcc
2. sudo apt-get install g++
3. gcc -v //查看的版本为7.5.0
4. g++ -v //查看的版本为7.5.0
//B 安装更新低版本gcc
1. sudo apt-get install -y gcc-5
2. sudo apt-get install -y g++-5
//C 删除原有链接,建立新的链接
1. cd /usr/bin
2. sudo rm -r gcc //移除之前的软链接
3. sudo ln -sf gcc-5 gcc // 建立gcc-5的软链接
4. sudo rm -r g++ //同上
5. sudo ln -sf g++-5 g++ //同上
参考文献:
1.anaconda安装步骤
2.在ubuntu上安装多个版本的CUDA,并且可以随时切换
3.CenterNet模型文件下载
4.如何解决pytorch 编译时CUDA版本与运行时CUDA版本不对应
5.激活conda创建的虚拟环境
6.Ubuntu 18.04.1 安装低版本GCC