安装开发所需依赖包:
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential
sudo apt-get update; sudo aptitude install build-essential #执行这句解决问题
直接点回车,成功安装
可能出现如下图,照做就好运行,运行apt-get update等,重新执行上述的安装依赖包的过程
安装成功差不多如下所示
安装CUDA 10.0前提
1.首先确认自己电脑的GPU兼容CUDA,只要电脑是N卡应该就支持,A卡应该是不支持了
我的电脑是1060ti,显示 compatible兼容
lspci | grep -i nvidia
2.确定linux版本支持CUDA
uname -m && cat /etc/*release
3.确定系统安装了gcc:
gcc --version
4.确定系统已经安装了正确的Kernel Headers和开发包:
首先查看系统正在运行的kernel版本:
uname -r
安装对应的kernels header和开发包:
sudo apt-get install linux-headers-$(uname -r)
我电脑自己已经装好了
安装CUDA10.0
1.下载CUDA10.0
https://developer.nvidia.com/cuda-downloads
如下选择(我的linux版本是16.04, 64位)
Download 之后按照Installation Instructions安装
2.首先进行md5校验:
md5sum cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
首先进入下载的deb文件所在的文件夹,之后执行terminal,这里的deb的名称根据你当时下载的deb文件来输入
3.安装
sudo dpkg -i cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
出现输入key,按照做就好
之后再输入
sudo dpkg -i cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
再输入
sudo apt-get update
sudo apt-get install cuda
等一会就能装好了
安装完成
会发现自己的usr/local里有两个文件夹如下图
4.安装好之后添加环境变量
我个人习惯都喜欢用.bashrc来改环境变量
.bashrc为隐藏用户环境变量文件,首先直接点击桌面打开terminal终端
vim .bashrc
如果vim没有装的话,那就先执行
sudo apt-get install vim
进入 .bashrc文件拉到最下面,添加如下两句环境变量(vim的使用随便百度都是这里不详细介绍了,linux基础,简单说一下,按i可输入,按ESC之后按:wq!保存退出即可)
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
验证CUDA是否安装成功
重启才能奏效
cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
sudo make #编译deviceQuery.cpp文件,生成deviceQuery可执行文件
./deviceQuery
也正好显示为1060ti说明安装成功
安装Cudnn
1.下载Cudnn
https://developer.nvidia.com/rdp/cudnn-download
没有账号的话这里需要申请一个账号,并且邮箱验证,等等,都是傻瓜式操作,稍微按照要求操作一下就行了,下载界面如下图所示。
下载后进入压缩包的文件夹内,并解压压缩包
进入解压后的cuda文件夹里
sudo cp lib64/* /usr/local/cuda/lib64/ #复制头文件
sudo cp include/cudnn.h /usr/local/cuda/include/ #复制动态链接库
cd /usr/local/cuda/lib64
sudo rm -rf libcudnn.so libcudnn.so.10.0
sudo ln -s libcudnn.so.10.0.64 libcudnn.so.10.0
sudo ln -s libcudnn.so.10.0 libcudnn.so
全部ok检查是否成功
nvcc -V
关于opencv
因为我只需要用opencv读取照片和显示所以这边使用opencv自带的即可
执行下面这句,可知道linux自带opencv版本
pkg-config --modversion opencv
如果想用opencv3.4 (这里用3.4,后面的编译caffe修改makeconfig部分需要参考补充部分
)
安装请参考我另外一波博客
Linux下安装opencv3.4.3
尝试一下
python
import cv2
出现错误
ImportError: No module named cv2
解决方案:
sudo apt-get install python-opencv
解决ok
安装caffe
因为安装caffe是目标检测用,用的是ssd所以这边直接编译caffe_ssd,编译原生caffe是一样的步骤,没区别
1.先clone掉github上的caffe
git clone https://github.com/BVLC/caffe.git
2.进入clone的caffe文件夹,执行以下命令,把Makefile.config.example复制更名为Makefile.config
sudo cp Makefile.config.example Makefile.config
3.修改此文件(很关键)相当于caffe编译配置文件
sudo gedit Makefile.config
修改 Makefile.config 文件内容:
①使用cudnn
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
②.修改 python 路径
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
补充. opencv 版本(如果使用opencv3的话)
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
如下图
修改 caffe 目录下的 Makefile 文件(这两个不改都会报错,编译类型错误等等。)
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
进行正式编译
make all -j8
报错
问题在于CUDA在CUDA architecture setting有版本兼容问题
解决办法如下:
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-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
改为
CUDA_ARCH := -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
运行如下
make clean
make all
出现错误:
/usr/bin/ld: 找不到 -lcudnn
解决办法,进入cudnn解压得到的cudn文件夹lib64文件夹内
执行以下几句即可
sudo cp libcudnn.so /usr/local/cuda/lib64/
sudo cp libcudnn.so.7 /usr/local/cuda/lib64/
sudo cp libcudnn.so.7.4.1 /usr/local/cuda/lib64/
sudo cp libcudnn_static.a /usr/local/cuda/lib64/
再重新运行如下
make clean
make all
成功,继续:
make test
make runtest -j8
能看到RUN OK不报错一直跑下去就没问题
编译成功!!!
尝试import caffe
首先像上面一样的方式,就是用.bashrc的方式添加环境变量
export PATHONPATH=/home/xxx/caffe/python/caffe:$PATHONPATH #xxx为用户名
执行以下两句,来make caffe的python接口
cd caffe
sudo make pycaffe -j8
出现错误:
解决问题如下:
sudo apt-get install python-numpy
尝试
python
import caffe
出现新问题
解决方案:
sudo apt install python-pip
pip install --upgrade pip
pip install -U scikit-image
也可能出现以下问题
输入pip命令报错:from pip import main ImportError: cannot import name 'main'
解决方式为(这里使用的python2.7,所以只有pip没有pip3)
参考
https://blog.csdn.net/qq_38522539/article/details/80678412
修改文件
vim /usr/bin/pip
修改内容为:
//修改前
from pip import main
if __name__ == '__main__':
sys.exit(main())
修改后
from pip import __main__ //这行也要修改
if __name__ == '__main__':
sys.exit(__main__._main()) //增加__main__._
之后继续运行
sudo pip install -U scikit-image
之后再次import caffe 出现又一个error
ImportError: No module named google.protobuf.internal
解决方法
sudo apt-get install python-protobuf
最后python import caffe 终于成功
测试caffe,train以下minst数据集
cd caffe
sh data/mnist/get_mnist.sh #获取dataset
sh examples/mnist/create_mnist.sh #生成caffe输入的lmdb格式
开始训练:
sh examples/mnist/train_lenet.sh
训练完毕,可见loss为0.0269702
OVER
出现其他error解决方案
1.关于CUDA
Pro1:CUDA 和CUDnn的配置
https://blog.csdn.net/u010417185/article/details/59105765?locationNum=6&fps=1
Pro2:查看版本CUDA 和 CUDnn
https://blog.csdn.net/Teeyohuang/article/details/79082003
Pro3:卸载CUDA和Cudnn
http://www.cnblogs.com/feifanrensheng/p/9541733.html
2.其他
Pro1:“fatal error: hdf5.h: 没有那个文件或目录”解决方法/ 修改Makefile.config文件,根据运行平台修改配置
https://blog.csdn.net/u012033124/article/details/61200524
Pro2: caffe-ssd-install
https://blog.csdn.net/zhang_shuai12/article/details/52346878
Pro3: nvcc fatal : Unsupported gpu architecture ‘compute_20’
https://blog.csdn.net/kemgine/article/details/78781377
Pro4: .bashrc文件如何打开
https://zhidao.baidu.com/question/502451392.html
Pro5: ubuntu环境变量的三种设置方法
https://blog.csdn.net/vertor11/article/details/70799971
Pro6: 验证后出现错误:/usr/bin/ld: 找不到 -lcudnn
https://blog.csdn.net/u010417185/article/details/59105765?locationNum=6&fps=1
Pro7: 编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
https://blog.csdn.net/wuzuyu365/article/details/52430657
Pro8: 错误提示:ImportError: No module named skimage.io
https://blog.csdn.net/hdmjdp/article/details/65628685
Pro9: Python pip 下载速度慢? Windows 设置 国内源,用 阿里云 国内镜像 加速
https://www.jianshu.com/p/0b3ce7298bde
3.opencv
Pro1: ImportError: No module named cv2的完美解决方法!!!
https://blog.csdn.net/mieleizhi0522/article/details/79123638?utm_source=blogxgwz0
Reference
http://www.cnblogs.com/wm123/p/5385940.html
https://blog.csdn.net/yhaolpz/article/details/71375762
https://blog.csdn.net/xiaoxue5246/article/details/78992000
https://blog.csdn.net/u013524303/article/details/81609643
https://blog.csdn.net/u012033124/article/details/61200524
https://blog.csdn.net/kemgine/article/details/78781377
https://blog.csdn.net/u012033124/article/details/61200524
https://blog.csdn.net/qq_38522539/article/details/80678412
https://blog.csdn.net/dongjuexk/article/details/78567717
特此感谢前路人,为作为小白的我铺路,谢谢!