UBUNTU18.04+CUDA10.0+CUDNN+caffe-ssd搭建+在caffe-ssd训练时碰到的两个问题,2019.9.5踩坑总结

UBUNTU18.04+CUDA10.0+CUDNN+caffe-ssd搭建踩坑2019.9.5总结

  • CUDA10.0+cudnn安装
    • 安装cuda10.0
    • 安装cudnn
  • Caffe框架安装
    • 下载Caffe源码
    • 修改配置文件
  • Caffe-ssd安装
  • 在sudo python2.7 ssd_pascal.py时碰到的报错及解决方法

CUDA10.0+cudnn安装

安装cuda10.0

sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

使用vim编辑器在~/.bashrc的最后添加环境变量

~/.bashrc
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc

查看是否安装成功

nvcc -V

安装cudnn

按照官网安装
选择cuDNNv x.x.x Library for Linux下载
使用tra -xzvf cundnn-xxxxxx.tgz解压
之后按照官网教程执行以下命令

sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

Caffe框架安装

下载Caffe源码

git clone https://github.com/BVLC/caffe.git

修改配置文件

1.创建正式的配置文件

cp Makefile.config.example Makefile.config

2.修改配置文件(根据自己的需要使用的去掉注释)
应用cudnn
将 #USE_CUDNN := 1 修改成: USE_CUDNN := 1
应用opencv3
#USE_OPENCV := 1 修改成: USE_OPENCV := 1
将 #OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3
(根据Opencv版本改,作者使用的是Opencv3.x版本所以写3)
如果CUDA10.0以上
改为
CUDA_ARCH := -gencode arch=compute_30,code=sm_30
-gencode arch=compute_35,code=sm_35
-gencode arch=compute_50,code=sm_50
-gencode arch=compute_52,code=sm_52
-gencode arch=compute_60,code=sm_60
-gencode arch=compute_61,code=sm_61
-gencode arch=compute_61,code=compute_61

使用 Python 接口
将 #WITH_PYTHON_LAYER := 1 修改为 WITH_PYTHON_LAYER := 1
添加路径
在INCLUDE_DIRS 一项后添加 /usr/include/hdf5/serial
在LIBRARY_DIRS一项后添加
/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

使用多GPU(如果不使用多 gpu也可以不安装)
将 #USE_NCCL := 1 修改为 USE_NCCL := 1
安装 NVCCL

git clone https://github.com/NVIDIA/nccl.git
cd nccl
sudo make install -j8
sudo ldconfig

按完后 根据自己的路径

vim /etc/profile
export LD_LIBRARY_PATH=/home/jxw/jxw/nccl/build/lib/${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

如果上面过程都执行的正确就可以愉快的执行下面的命令

sudo make all -j16
sudo make test -j16
sudo make runtest -j16
sudo make pycaffe -j8

如果安装过程没有报错就可以执行最后一步添加环境变量,注意需要根据自己的caffe路径修改(作者是安装在/home 文件夹下的所以执行以下命令)

vim /etc/profile
export PYTHONPATH=/home/caffe/python:$PYTHONPATH

可以通过以下命令检查是否安装成功

python2.7

然后执行

import caffe

如果没有报错则说明安装成功

Caffe-ssd安装

修改Makefile.config文件,与安装caffe相似可参照上面内容

vim Makefile.config
make all -j16
make test -j16
make runtest -j16 
make pycaffe -j8

全部成功则可以跳过下面内容

Make runtest 应该会碰到错误
作者碰到了两个错误一个 runtest2:的错误和一个runtest3: 的错误
解决方法见下
添加环境变量

vim /etc/profile
export LC_ALL="en_US.UTF-8"
export CUDA_VISIBLE_DEVICES=0 #

然后从新 make all 注意在这之前需要先执行

make clean

在sudo python2.7 ssd_pascal.py时碰到的报错及解决方法

作者在使用caffe-ssd训练时碰到了以下问题:
(1) 报错 function 250:
碰到
math_functions.cpp:250 Check failed: a (=b (0 vs -1.19209e-007)
这个错误
修改caffe-ssd/src/caffe/utils/math_functions.cpp
注释掉第250行

CHECK_LE(a, b);  

改为

//  CHECK_LE(a, b);

(2) 训练时卡在
blocking_queue.cpp:50] Data layer prefetch queue empty
不动
注释掉第一个错误的第250行后发现训练卡在上面的语句不动
修改caffe-ssd/src/caffe/utils/sampler.cpp
在第 107 行左右的位置
在原代码

float w_off, h_off;
caffe_rng_uniform(1, 0.f, 1 - bbox_width, &w_off);
caffe_rng_uniform(1, 0.f, 1 - bbox_height, &h_off);

的上面增加

if (bbox_width>=1.0){
bbox_width=1.0;
}
if (bbox_height>=1.0){
bbox_height=1.0;
}

并将

caffe_rng_uniform(1, 0.f, 1 - bbox_width, &w_off);
caffe_rng_uniform(1, 0.f, 1 - bbox_height, &h_off);

修改为

caffe_rng_uniform(1, 0.f, 1.0f - bbox_width, &w_off);
caffe_rng_uniform(1, 0.f, 1.0f- bbox_height, &h_off);

这两个解决方法也是作者在
https://github.com/weiliu89/caffe/issues
中搜索找到的
碰到其他问题也可以在里面搜索错误号寻找解决办法

碰到Undefined reference to ‘__cudaPopCallConfiguration’问题
可以在caffe 文件夹下/usr/local/cuda/lib64
ldd build/lib/libcaffe.so | grep cudart
查看cuda 对应so版本
如果不对
需要修改
/usr/lib/x86_64-linux-gnu
中所有 cudaart
替换为
/usr/local/cuda/lib64
中所有cudaart

你可能感兴趣的:(UBUNTU18.04+CUDA10.0+CUDNN+caffe-ssd搭建+在caffe-ssd训练时碰到的两个问题,2019.9.5踩坑总结)