安装Ubuntu和Windows双系统
详细的安装双系统就不过多介绍了,可以参考这篇文章,但是在安装过程中有几个问题需要说明:
安装Ubuntu之前首先要把BIOS的
security boot
关闭,否则会出现NVIDIA驱动安装完以后重启电脑会反复进入登录界面。硬盘分区的时候可以只分为
swap
、UEFI
、\
和\home
四个分区,不分\home
也可以,在挂在\
分区的时候会自动生成\home
和其他分区,但是在重装系统的时候\home
无法重新挂在之前的\home
分区导致数据丢失(类似于Windows的非系统盘)。重装Ubuntu系统时请早Windows下用EasyUEFI软件将Ubuntu的引导项删除。
安装NVIDIA驱动
安装驱动NVIDIA所需的依赖包
在终端里依次输入以下命令安装驱动所需的依赖包
1 | sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler |
假如有安装包一直下载失败,可以使用:
1 | sudo apt-get update |
禁用Ubuntu自带的显卡驱动
Ubuntu 16.04 自带 nouveau显卡驱动,这个自带的驱动是不能用于CUDA的,需要卸载重装。假如重装过显卡驱动则可跳过这一步。没有重装过的就跟着我的步骤往下走。
首先得禁用Ubuntu自带的显卡驱动nouveau,只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动,禁用方法就是在 /etc/modprobe.d/blacklist-nouveau.conf
文件中添加一条禁用命令,首先需要打开该文件,通过以下命令打开:
1 | sudo gedit /etc/modprobe.d/blacklist-nouveau.conf |
打开后发现该文件中没有任何内容,写入:
1 | blacklist nouveau |
保存后关闭文件,注意此时还需执行以下命令使禁用 nouveau 真正生效:
1 | sudo update-initramfs -u |
然后输入以下命令,若什么都没有显示则禁用nouveau生效了(重启电脑有可能会出现黑屏,原因是禁用了集成显卡,系统没有显卡驱动):
1 | lsmod | grep nouveau |
安装NVIDIA官方显卡驱动
通过Ctrl + Alt + F1
进入文本模式,输入帐号密码登录,通过Ctrl + Alt + F7
可返回图形化模式,在文本模式登录后首先关闭桌面服务:
1 | sudo service lightdm stop |
这里会要求你输入账户的密码。然后通过Ctrl + Alt + F7
发现已无法成功返回图形化模式,说明桌面服务已成功关闭,注意此步对接下来的 NVIDIA 显卡驱动安装尤为重要,必需确保桌面服务已关闭。按Ctrl + Alt + F1
再次进入终端命令行界面,先卸载之前的显卡驱动(注意以下命令在Zsh
的shell环境下不认识*,需要切换到bash
的shell环境):
1 | sudo apt-get purge nvidia* |
加入官方ppa源:
1 | sudo add-apt-repository ppa:graphics-drivers/ppa |
之后刷新软件库并安装显卡驱动:
1 | sudo apt-get update |
重启电脑,通过下面命令查看显卡信息:
1 | nvidia-settings |
配置NVIDIA环境变量
使用 gedit 命令打开配置文件:
1 | sudo gedit ~/.bashrc |
打开后在文件最后加入以下两行内容:
1 | export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH |
保存并退出,运行以下内容使环境变量生效:
1 | source ~/.bashrc |
查看NVIDIA驱动版本
1 | cat /proc/driver/nvidia/version |
或者
1 | nvidia-smi |
安装CUDA
安装CUDA步骤
安装CUDA9.0以及之前版本
安装完显卡驱动后,CUDA Toolkit
和samples
可单独安装,直接在终端运行安装,无需进入文本模式:1
sudo sh cuda_9.0.176_384.81_linux.run --no-opengl-libs
执行此命令约1分钟后会出现安装协议要你看,刚开始是0%,此时长按回车键让此百分比增长,直到100%,然后按照提示操作即可,先输入
accept
,是否安装显卡驱动选择no
:1
2Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?
(y)es/(n)o/(q)uit: n其余的一律按
默认
或者y
进行安装即可。安装结束以后在
/usr/local/
目录下查看,可以看到不但生成对应版本的cuda-9.0
文件夹,还生成一个相应软连接
文件夹cuda
:
安装CUDA10.1
按照前面安装NVIDIA驱动方法安装NVIDIA-418驱动1
2chmod 777 cuda_10.1.105_418.39_linux.run
sudo sh ./cuda_10.1.105_418.39_linux.run输入
accept
进入安装界面:
不要安装CUDA
自带的NVIDIA
驱动,将光标移动到Driver
选项上,按下空格键取消选择安装NVIDIA
驱动,移动光标再到Install
上然后按回车。
若已经安装旧版本的CUDA版本,会出现以下提示,输入yes继续安装即可:
安装成功后提示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-10.1/
Samples: Installed in /home/andy/, but missing recommended libraries
Please make sure that
- PATH includes /usr/local/cuda-10.1/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-10.1/lib64, or, add /usr/local/cuda-10.1/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-10.1/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-10.1/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 418.00 is required for CUDA 10.1 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run --silent --driver
Logfile is /var/log/cuda-installer.log安装成功以后在
/usr/local/
目录下查看,可以看到不但生成对应版本的cuda-10.1
文件夹,还生成一个相应软连接
文件夹cuda
或者将之前cuda9.0生成的cuda软连接重新指向cuda10.1文件夹:
修改配置文件
安装完成后配置CUDA
环境变量,使用vim
配置文件:
1 | vim ~/.bashrc |
在该文件最后加入以下两行并保存:
1 | CUDA |
使该配置生效:
1 | source ~/.bashrc |
检验CUDA 是否安装成功,输入:
1 | cd /usr/local/cuda/samples/1_Utilities/deviceQuery |
CUDA 9.0 PASS:
CUDA 10.1 PASS:
查看CUDA版本
1 | cat /usr/local/cuda/version.txt |
CUDA 9.0
CUDA 10.1
卸载CUDA的方法
1 | cd /usr/local/cuda/bin |
卸载完成后如果显示:Not removing directory, it is not empty: /usr/local/cuda-9.0
,假如需要重装CUDA 9.0
的话就把这个文件夹删除。在/usr/local/
路径下输入:
1 | CUDA 9.0 |
安装CUDA过程中遇到的问题
CUDA 10.1
提示安装失败:
查看vim /var/log/cuda-installer.log
显示:ERROR: You appear to be running an X server; please exit X
,是在安装CUDA
的时候选择的安装CUDA
自带的NVIDIA
显卡驱动导致的,解决方法是:
(1)在安装CUDA
的时候不要选择安装CUDA
自带的NVIDIA
驱动;
(2)若要用CUDA
自带的NVIDIA
显卡驱动,则Ctrl + Alt + F1
在终端命令行进行安装:
1 | sudo service lightdm stop |
若是在终端命令行下安装的CUDA,则需要安装成功后运行:
1 | sudo service lightdm start |
然后再按通过Ctrl + Alt + F7
可返回图形化模式。
安装cuDNN
下载安装cuDNN
cuDNN
要根据CUDA
选择相应平台版本,在Ubuntu16.04
下(Ubuntu
其他版本类似)到cuDNN官网推荐下载安装.tgz
格式的文件, 不推荐下载安装.deb
格式,若误装了.deb
格式的cuDNN请用以下命令进行卸载:
1 | dpkg -l |grep -i libcudnn* # 查看.deb安装的cudnn |
然后命令行进入cuda/lib64
文件夹路径下(其实cuda/lib64
文件夹下通过Beyond Compare查看,libcudnn.so
、libcudnn.so.7
和libcudnn.so.7.5.0
是同一个文件的不同扩展名),运行以下命令:
1 | cd ~/Download/cuda/lib64/ |
随后需要将路径/usr/local/cuda/lib64
添加到动态库,分两步:
1)安装vim
, 输入:
1 | sudo apt-get install vim-gtk |
2)配置,输入:
1 | sudo vim /etc/ld.so.conf.d/cuda.conf |
编辑状态下,输入:
1 | /usr/local/cuda/lib64 |
保存退出,输入下面代码使其生效:
1 | sudo ldconfig |
安装完成后可用nvcc -V
命令验证是否安装成功,若出现以下信息则表示安装成功:
1 | nvcc: NVIDIA (R) Cuda compiler driver |
查看cuDNN
版本:
1 | cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 |
cuDNN常见问题
1 | Error : Failed to get convolution algorithm. |
出现上述问题是安装的cuDNN
版本跟CUDA
和TensorFlow
相兼容的版本不符合,重新安装指定版本的cuDNN
即可。
参考资料
CUDA多版本问题
在实验的时候有些算法跟当前生效(安装)的CUDA
和cuDNN
版本不一致,所以需要同时安装多个版本,这里就是解决同时管理多个CUDA
版本问题.
默认
/usr/local/cuda
是软连接到最新安装的CUDA
文件夹上的:
删除已经软连接的
/usr/local/cuda
,将需要的CUDA-X.0安装文件夹
软连接到/usr/local/cuda
上, 例如需要CUDA 9.0
这个版本:1
2
3
4
5
6
7
8
9cd /usr/local/
sudo rm cuda
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda
```

4. 由于在安装`CUDA`的时候已经将`cuda`加入了环境变量,所以不用再加入了。
5. 查看`CUDA`版本
```shell
cat /usr/local/cuda/version.txt
Anaconda
安装Anaconda
下载Anaconda
的sh
文件Anaconda3-5.2.0-Linux-x86_64.sh
,然后运行以下代码:
1 | chmod a+x ./Anaconda3-5.2.0-Linux-x86_64.sh #chmod 777 ./Anaconda3-5.2.0-Linux-x86_64.sh |
或者
1 | chmod 777 Anaconda3-5.3.1-Linux-x86_64.sh |
conda install -c menpo opencv3
命令有时候会显示权限不够permission issue
。这是因为你安装anaconda
时用的是sudo
,这时候需要修改anaconda3
文件夹权限:
1 | sudo chown -R 你的用户名 /home/你的用户名/anaconda3 |
屏蔽Anaconda
1 | vim ~/.bashrc |
然后屏蔽后的结果如下:
1 | # added by Anaconda3 5.3.1 installer |
其实这里涉及到linux可执行程序搜索路径
的问题,上述PATH="/home/andy/anaconda3/bin:$PATH"
将/home/andy/anaconda3/bin
放在了原始的$PATH
前面,这样系统在执行的时候首先检查要可执行文件是否在/home/andy/anaconda3/bin
中,然后再从$PATH
中搜索,理解了这个关系,上述代码可以改为,这样改了以后将不需要重建Anaconda软连接这一步操作了:
1 | # added by Anaconda3 5.3.1 installer |
Anaconda最新版屏蔽如下
1 | # added by Anaconda3 5.3.1 installer |
最后命令行输入以下命令:
1 | source ~/.bashrc |
必须重启电脑
重建Anaconda软连接
重建原理
由于linux系统默认搜索可执行文件的顺序为/bin
-> /usr/bin
-> /usr/local/bin
,而前两个为系统的可执行文件存放的地方,/usr/local/bin
为用户自定义的可执行文件存放区,所以只需要将Anaconda
的~/anaconda3/bin/可执行文件
软连接到/usr/local/bin
即可。
当需要重新使用Anaconda
的时候,只需要将Anaconda
的执行文件软连接到/usr/local/bin
里,注意这里要用绝对路径,否则不起作用,如:
1 | sudo ln -s /home/andy/anaconda3/bin/conda /usr/local/bin/conda |
首先注意usr
指 Unix System Resource
,而不是User
,
/usr/bin
下面的都是系统预装的可执行程序,会随着系统升级而改变/usr/local/bin
目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件
软连接后使用时:
首先用以下命令查看anaconda环境(自带为base):
1 | conda env list |
激活环境用:
1 | conda activate [env name] |
注意: 上面[env name]
用具体的环境名代替,如conda activate base
.
取消激活环境用:
1 | conda deactivate |
Anaconda虚拟环境
创建新的虚拟环境:
1 | conda create -n venv python=3.6 # select python version |
激活虚拟环境:
1 | source activate venv |
删除虚拟环境:
1 | conda env remove -n venv |
安装opencv
下载OpenCV
进入官网 : http://opencv.org/releases.html 或者 https://github.com/opencv/opencv/releases, 选择 需要的 x.x.x.zip
版本, 下载 opencv-x.x.x.zip
:
1 | cd |
编译OpenCV
随后解压到你要安装的位置,命令行进入已解压的文件夹 opencv-x.x.x
目录下,执行:
1 | cd opencv-x.x.x |
遇到一下报错信息有两种可能:
在编译
opencv3.4.0
源码的时候,会下载诸如ippicv_2017u3_lnx_intel64_20170822.tgz
的压缩包,如果下载失败,请下载离线包,解压该文件,会得到.cache
文件夹,用此文件夹覆盖opencv
源码文件夹下的.cache
文件夹,再重新编译即可。.cahce
文件夹为隐藏文件,可用ctrl+h
查看。若本机里安装了Anaconda,推荐屏蔽Anaconda,否则需要在
~/.bashrc
或~/.zshrc
中加入:1
2
3
4
5added by Anaconda3 installer
export PATH="/home/andy/anaconda3/bin:$PATH"
export LD_LIBRARY_PATH=~/anaconda3/lib:$LD_LIBRARY_PATH
export CPLUS_INCLUDE_PATH=~/anaconda3/include/python3.6m
export PATH="$PATH:$HOME/bin"
在98%
的时候会等很久很久,属于正常现象。
安装OpenCV
编译成功后安装:
1 | sudo make install #安装 |
运行以下命令刷新opencv
动态链接库:
1 | sudo ldconfig |
安装完成后通过查看 opencv
版本验证是否安装成功:
1 | pkg-config --modversion opencv |
若运行以上命令提示一下错误:
临时解决方法
1 | export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig |
在文件中加上一行:
1 | /usr/local/lib |
/user/local
是opencv
安装路径 就是makefile
中指定的安装路径。
再运行:
1 | sudo ldconfig |
bash
所有用户
修改/etc/bash.bashrc
文件:1
sudo vim /etc/bash.bashrc
在文件末尾加入:
1
2PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH运行
source /etc/bash.bashrc
使其生效。当前用户
修改~/.bashrc
文件:1
vim ~/.bashrc
在文件末尾加入:
1
2PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH运行
source ~/.bashrc
使其生效。
zsh
所有用户
1
vim /etc/zsh/zprofile
然后加入以下内容:
1
2PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH运行
source /etc/zsh/zprofile
使其生效。当前用户
1
vim ~/.zshrc
然后加入以下内容:
1
2PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH运行
source ~/.zshrc
使其生效。
卸载OpenCV
进入OpenCV
解压文件夹中的buid
文件夹:
1 | cd $HOME/opencv-x.x.x/build |
运行:
1 | sudo make uninstall |
然后把整个opencv-x.x.x
文件夹都删掉。随后再运行:
1 | sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv \ |
把一些残余的动态链接文件和空文件夹删掉。有些文件夹已经被删掉了所以会找不到路径。
TensorRT
安装TensorRT
TensorRT环境变量设置
首先下载tar版本的安装包,需要登陆NVIDIA账号。
安装TensorRT
前需要安装Cuda
和安装cudnn
,安装步骤可以参考上方。
打开下载的TensorRT
所在路径,解压下载的tar
文件:
1 | chmod 777 TensorRT-XXX.tar.gz |
将加压后的TensorRT-XXX
文件夹移动到HOME
目录下,并创建软连接,这样可以安装多个版本的TensorRT-XXX
,在切换的时候只需要将用到的TensorRT-XXX
版本软连接到TensorRT
上就可以了:
1 | mv TensorRT-XXX ~/TensorRT-XXX |
然后设置环境变量:
1 | bash |
1 | 将下面三个环境变量写入环境变量文件并保存 |
1 | bash |
安装Python的TensorRT包
进到解压后的TensorRT
的Python文件下:
非虚拟环境下
1 | cd ~/TensorRT/python/ |
或者:
1 | cd TensorRT/python/ |
虚拟环境下
1 | source activate venv |
如安装失败请参考安装过程中遇到的问题以及解决方法。
安装uff
转到uff目录下安装uff
文件夹下安装:
非虚拟环境下
1 | cd ~/TensorRT/uff/ |
或者:
1 | cd TensorRT/uff/ |
虚拟环境下
1 | source activate venv |
验证TensorRT是否安装成功
测试TensorRT是否安装成功:
1 | which tensorrt |
会输出TensorRT
的安装路径:
1 | /usr/local/bin/tensorrt |
测试uff是否安装成功:
1 | which convert-to-uff |
会输出uff
的安装路径:
1 | /usr/local/bin/convert-to-uff |
拷贝lenet5.uff
到python相关目录进行验证:
1 | sudo cp TensorRT/data/mnist/lenet5.uff TensorRT/python/data/mnist/lenet5.uff |
命令执行顺利即安装成功。
TensorRT安装过程中遇到的问题以及解决方法
在安装Python
的TensorRT
包时可能出现的错误
1 | In file included from src/cpp/cuda.cpp:1:0: |
原因
显示是找不到cuda.h,根据网上分析是因为用了sudo之后环境变量用的是root的环境变量。
解决方案
将cuda的安装路径添加到root的环境变量中,在root角色下安装Python的TensorRT包:
1 | sudo gedit /etc/profile.d/cuda.sh |
1 | sudo su - |
Python
导入tensorrt
或者tensorflow
的时候提示ImportError: numpy.core.multiarray failed to import
解决方法:
1 | pip install -U numpy |
TensorRT生成Engine
Caffe模型用TensorRT生成Engine
1 | ~/TensorRT/bin/giexec \ |
Tensorflow模型用TensorRT生成Engine
源码文件在src/tensorrt/tools
中。
首先将TensorFlow
模型生成uff
文件,然后再将uff
文件转为engine
:
将TensorFlow模型生成UFF文件
1 | # -*- coding: utf-8 -*- |
将UFF文件转为Engine
1 | # -*- coding: utf-8 -*- |
调用Engine进行推理
1 | import os |
TensorRT官方实例
资料在本仓库src/tensorrt
目录下:
参考资料
安装caffe
Python2下安装Cafe
安装依赖库
1 | sudo apt-get update |
配置CUDA
及 CUDNN
添加 CUDA 环境变量
1 | vim ~/.bashrc |
安装OpenCV
,方法同: 安装OpenCV
然后按照前面的方法屏蔽Anaconda
配置Caffe
首先cd 到你要安装的路径下运行:
1 | git clone https://github.com/BVLC/caffe.git |
这时候会出现一个 caffe
文件夹。命令行进入此文件夹,运行:
1 | cp Makefile.config.example Makefile.config |
修改 Makefile.config
文件内容
应用 cudnn
将:#USE_CUDNN := 1
修改为:USE_CUDNN := 1
应用 opencv 3 版本
将:#OPENCV_VERSION := 3
修改为:OPENCV_VERSION := 3
使用 python 接口
将:#WITH_PYTHON_LAYER := 1
修改为WITH_PYTHON_LAYER := 1
修改 python 路径
将:1
2INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib修改为:
1
2INCLUDE_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此python路径为系统自带python的路径,假如想使用
Anaconda
的python的话需要在其他地方修改。去掉compute_20
找到1
2
3
4
5
6
7
8
9
10
11
12
13CUDA architecture setting: going with all of them.
For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
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改为:
1
2
3
4
5
6
7
8
9
10
11CUDA architecture setting: going with all of them.
For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
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由于CUDA 9.x +并不支持compute_20,此处不修改的话编译
caffe
时会报错:1
nvcc fatal : Unsupported gpu architecture 'compute_20'
配置好的完整的Makefile.config
文件
在caffe源码目录中修改后的完整Makefile.config
文件,内容如下:
1 | # Refer to http://caffe.berkeleyvision.org/installation.html |
修改caffe 目录
下的Makefile
文件
修改的地方找起来比较困难的话可以复制到word里查找
将:
1 | NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS) |
替换为:
1 | NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) |
将:
1 | LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 |
改为:
1 | LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial |
至此caffe配置文件修改完毕,可以开始编译了。假如显卡不是feimi架构的可以输入如下命令防止出现Unsupported gpu architecture 'compute_20'
的问题:
1 | cmake -D CMAKE_BUILD_TYPE=RELEASE -D CUDA_GENERATION=Kepler .. |
编译安装Caffe
在 caffe
目录下执行:
1 | cd caffe |
runtest
之后成功成功的界面如下:
添加Caffe
环境变量
1 | vim ~/.bashrc |
常见问题
常见问题 1
在caffe源码目录中修改Makefile
文件中这一行如下:
1 | LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial |
上述中Makefile.config
和Makefile
文件都要添加hdf5
相关选项,否则会提示以下错误:
常见问题 2
在python
中导入caffe
库的时候会提示以下信息:
1 | /usr/local/lib/python2.7/dist-packages/scipy/sparse/lil.py:19: RuntimeWarning: numpy.dtype |
解决方法
将numpy
降版本:
1 | pip uninstall numpy |
常见问题 3
导入caffe
的时候还有一个错误:
原因是我在ubutnu
下用的linuxbrew
安装的Python2
设为默认Python
了,然后caffe
编译配置文件里用的是系统的Python2
路径,导致系统自带的Python
与linuxbrew
安装的Python
环境混乱。
解决方法是屏蔽掉linuxbrew
环境。只用系统自带的Python
,将~/.profile
文件中的eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
这一行屏蔽:
1 | linuxbrew |
然后重启电脑.
常见问题 4
导致上述原因是pip2
同时存在于/usr/bin/pip2
和/usr/local/bin/pip2
两个地方:
1 | 查看pip2位于哪里 |
解决方法是用/usr/local/bin/pip2
安装protobuf
:
1 | /usr/local/bin/pip2 install protobuf |
Importing caffe results in ImportError: “No module named google.protobuf.internal”
This is probably because you have two python environments in your machine, the one provided by your linux distribution(pip) and the other by the anaconda environment (/home/username/anaconda2/bin/pip).
Try installing protobuf for both environments to be surepip install protobuf
/home/username/anaconda2/bin/pip
install protobuf
Python3下安装Cafe
切换系统Python
版本到Python3
将系统Python切换到Python3版本:
1 | which python3 |
装依赖库
配置CUDA
及 CUDNN
pip 安装依赖模块
1 | pip install opencv-python==3.4.0.12 # OpenCV的Python版本要跟opencv源码安装的版本对应起来 |
安装OpenCV
,方法同: 安装OpenCV
然后按照前面的方法屏蔽Anaconda
配置Caffe
首先cd 到你要安装的路径下运行:
1 | git clone https://github.com/BVLC/caffe.git |
这时候会出现一个 caffe
文件夹。命令行进入此文件夹,运行:
1 | cp Makefile.config.example Makefile.config |
在caffe
源码目录中修改Makefile.config
内容如下:
1 | # Refer to http://caffe.berkeleyvision.org/installation.html |
替换为:
1 | NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) |
将:
1 | LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 |
改为:
1 | LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial |
至此caffe配置文件修改完毕,可以开始编译了。假如显卡不是feimi架构的可以输入如下命令防止出现Unsupported gpu architecture 'compute_20'
的问题:
1 | cmake -D CMAKE_BUILD_TYPE=RELEASE -D CUDA_GENERATION=Kepler .. |
编译安装Caffe
1 | cd caffe |
添加Caffe
环境变量
1 | vim ~/.bashrc |
常见问题
常见问题 1
解决方法
1 | git clone https://github.com/madler/zlib |
常见问题 3
/sbin/ldconfig.real: /usr/local/cuda-9.0/lib64/libcudnn.so.5 不是符号连接 |
解决:
在sudo ldconfig时遇到usr/local/cuda-9.0/lib64/libcudnn.so.5
不是符号连接的问题,解决办法也很简单,重新建立链接并删除原链接
首先找到usr/local/cuda-8.0/lib64/
目录,搜索libcudnn
然后发现两个文件libcudnn.so.5
和libcudnn.so.5.0.5
理论上只有一个libcudnn.so.5.0.5
终端执行:
1 | ln -sf /usr/local/cuda-9.0/lib64/libcudnn.so.5.0.5 /usr/local/cuda-9.0/lib64/libcudnn.so.5 |
再sudo ldconfig
时就可以了,这时候会发现usr/local/cuda-9.0/lib64/目录下只有libcudnn.so.5.0.5
文件了,libcudnn.so.5
消失了。
常见问题 4
.build_release/tools/caffe: error while loading shared libraries: libhdf5.so.10: cannot open shared object file: No such file or directory |
解决:
1 | echo "export LD_LIBRARY_PATH=/home/abc/anaconda2/lib:$LD_LIBRARY_PATH" >>~/.bashrc |
常见问题 5
错误:python/caffe/_caffe.cpp:1:52:致命错误:Python.h:没有那个文件或目录 编译中断。 make:*** [python/caffe/_caffe.so]错误1 |
解决:
执行:sudo find / -name 'Python.h'
找到他的路径,
在Makefile.config
的PYTHON_INCLUDE加上/home/abc/anaconda2/include/python2.7
(路径是自己的)
常见问题 6
错误:import caffe时:ImportError:No module named skimage.io |
解决:
可能是我们没有安装所谓的skimage.io模块,所以可以用以下的命令来安装:
1 | pip install scikit-image # you may need use sudo |
常见问题 7
import caffe
Traceback(most recent call last):
File" |
解决:
1 | echo'export PATH="/home/andy/caffe/python:$PATH"' >>~/.bashrc |
关掉终端,重新进入。
安装protobuf
protobuf是什么
protobuf(Protocol Buffer)它是google提供的一个开源库,是一种语言无关、平台无关、扩展性好的用于通信协议、数据存储的结构化数据串行化方法。有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。
protobuf-c 是什么
由于Protocol Buffer原生没有对C的支持,只能使用protobuf-c这个第三方库,它提供了支持C语言的API接口。
下面先安装protobuf,然后安装protobuf-c 。
安装protocbuf
下载源码安装包
https://developers.google.com/protocol-buffers/
在release下可以找到所有的版本,我这里用的是2.4.1版本,复制protobuf-2.4.1.tar.gz的链接然后用wget命令下载。
1 | wget https://github.com/google/protobuf/releases/download/v2.4.1/protobuf-2.4.1.tar.gz |
解压
1 | tar -zxvf protobuf-2.4.1.tar.gz |
编译/安装
1 | cd protobuf-2.4.1 |
(可以参考README思路来做。)
1 | ./configure |
(完了之后会在 /usr/local/bin 目录下生成一个可执行文件 protoc)
检查安装是否成功
1 | protoc --version |
如果成功,则会输出版本号信息。如果有问题,则会输出错误内容。
错误及解决方法
1 | protoc: error while loading shared libraries: libprotoc.so.8: cannot open shared |
错误原因:
protobuf的默认安装路径是/usr/local/lib,而/usr/local/lib 不在Ubuntu体系默认的 LD_LIBRARY_PATH 里,所以就找不到该lib
解决方法:
1). 创建文件sudo gedit /etc/ld.so.conf.d/libprotobuf.conf
,在该文件中输入如下内容:
1 | /usr/local/lib |
2). 执行命令
1 | sudo ldconfig |
这时,再运行protoc –version 就可以正常看到版本号了
安装protobuf-c
(这里使用的是protobuf-c-0.15版本,较高版本的安装类似)
进入下面的链接
https://code.google.com/p/protobuf-c/
进入Downloads界面
不知怎地,wget无法下载途中的protobuf-c-0.15.tar.gz
文件。
怎么办呢,我们可以点击上图中的Export to GitHub,将代码导入到GitHub(当然你得有并登录自己的github账号),不过只有源码,没有release版。我们先wget下载源码,解包。由于是源码,所以没有configure文件,但是可以通过执行autogen.sh
来生成configure文件,之后的操作就和安装protobuf类似了,这里就不细说了。
安装完成后会在/usr/local/bin
目录下便会生成一个可执行文件 protoc-c
在安装完protobuf-c后,我们来检验一下protobuf-c是否安装成功。到 protobuf-c-0.15/src/test 目录下,执行如下命令:
1 | protoc-c --c_out=. test.proto |
(c_out 标志是用来指定编译后所生成文件的输出路径,这里c_out指定的是当前目录。)
如果在c_out指定目录下能够生成 test.pb-c.c 和 test.pb-c.h 这两个文件则说明安装成功了。
Protobuf的使用示例
1 | touch person.proto |
输入如下内容:
1 | message Person { |
编译.proto文件
1 | protoc-c --c_out=. person.proto |
1 | touch main.c |
输入如下代码:
1 |
|
编译
1 | gcc person.pb-c.c main.c -lprotobuf-c |
执行./a.out
,输出结果如下:
1 | id = 1314 |
Linux MATLAB安装
安装前准备工作
下载MATLAB for Linux
文件, 这里用到的是@晨曦月下提供的百度网盘链接下载:
链接: https://pan.baidu.com/s/1W6jWkaXEMpMUEmIl8qmRwg
密码: igx6
进入下载后的文件夹(假如下载后的文件放在了/home/Download/
, 解压破解文件Matlab2018aLinux64Crack.tar.gz
文件, 创建一个文件夹Crack
来放置解压后的文件:
1 | cd ~/Download |
解压文件:
1 | cd ~/Download |
在/mnt
中创建一个文件夹用来挂载R2018a_glnxa64_dvd1.iso
和R2018a_glnxa64_dvd2.iso
:
1 | cd /mnt |
先挂载R2018a_glnxa64_dvd1.iso
:
1 | cd ~ |
如果这个时候提示/mnt/iso: WARNING:device write-protected, mounted read-only
,那就修改下/mnt
的权限:
1 | cd / |
Matlab安装过程
安装开始,从挂载的文件夹iso
中:
1 | cd ~ |
选择
Use a File Installation Key
:选择
Yes
,同意条约:选择默认安装目录,默认放在
/usr/local
中选择
I have the File Installation Key for my license
,输入:
09806-07443-53955-64350-21751-41297
安装到某个进度会提示插入
iso2
,这个时候挂载R2018a_glnxa64_dvd2.iso
1
2cd ~
sudo mount -t auto -o loop R2018a_glnxa64_dvd2.iso /mnt/iso最后安装完成选择
finsh
激活
复制破解文件
Crack
中license_standalone.lic
到安装目录中1
2cd ~/Crack
sudo cp license_standalone.lic /usr/loca/MATLAB/R2018a/licenses复制
Crack
中的R2018a
到安装目录
1
2cd ~/Crack
sudo cp -r R2018a /usr/local/MATLAB
至此激活完成!
收拾残局, 取消挂载,删除文件:
1 | sudo umunt /mnt/iso |
Matlab设置
创建命令方便在任何终端都可以打开matlab
,采用软链接的方式在/usr/local/bin
中创建启动命令matlab
:
1 | cd /usr/lcoal/bin |
参考资料