¶概述
本文详细介绍了几种算法库在Linux环境(本文以Ubuntu为例)的安装过程以及常见问题的解决方法,包括OpenCV、Caffe、TensorFlow和PyTorch。
¶OpenCV源码安装
¶1、更新软件库
1 | sudo apt-get update |
¶2、安装依赖项
复制执行以下命令:
1 | sudo apt-get install --assume-yes build-essential cmake git |
¶3、安装Cuda和CuDNN
参考网上的教程The GPU support prerequisites
¶4、下载源码
去到自己指定的目录下,下载OpenCV3.2的源码:
1 | cd ~ |
¶5、编译源码
首先解压源码:
1 | unzip 3.2.0.zip |
进入OpenCV目录,创建build文件夹,并开始编译:
1 | cd opencv-3.2.0 |
¶6、编译安装
编译完成后即可安装
1 | sudo make install -j$(nproc) |
¶7、常见问题
- 编译过程中如果ippicv文件下载失败,可以自行下载,拷贝到
opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e
目录下
¶Caffe源码安装
¶1、下载Caffe源码
1 | cd ~ |
¶2、安装依赖项
1 | sudo apt-get install --assume-yes libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler |
¶3、安装BLAS
1 | sudo apt-get install --assume-yes libatlas-base-dev |
¶4、CMake编译
若未安装vim,则先安装vim:
1 | sudo apt-get install --assume-yes vim |
进入caffe目录,复制配置文件,并修改配置文件:
1 | cd caffe |
注意,Caffe的配置信息需要进行一定修改,否则会造成编译出错。
- 如果需要使用CuDNN,则取消
USE_CUDNN := 1
的注释 - 如果需要使用OpenCV3,则取消
OPENCV_VERSION := 3
的注释 - 如果需要使用Python,则取消
WITH_PYTHON_LAYER := 1
的注释 - 在Makefile.config的94行,需要进行如下修改,否则会有hdf5无法找到的错误:
1 | --- INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include |
其中`---`代表删除本行,`+++`代表增加本行。
另外,Makefile也需要修改181行:
1 | vim Makefile |
1 | --- LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 |
修改完后即可用CMake编译:
1 | mkdir build |
若需要在Python中调用,则执行:
1 | make pycaffe -j$(nproc) |
最后还需要添加路径到PYTHONPATH中,打开.bashrc文件:
1 | vim ~/.bashrc |
在.bashrc的最后一行添加实际的caffe/python的路径,(注意:需要按照实际情况修改路径):
1 | export PYTHONPATH="$PYTHONPATH:/<your/path>/caffe/python" |
并让其生效:
1 | source ~/.bashrc |
现在便可以在Python中import caffe,测试能否成功。
1 | python |
¶5、常见问题
-
ImportError: dynamic module does not define init function (init_caffe)
当前Python版本和编译时Python版本不一致,需要一致使用Python2或者Python3
-
F0108 20:21:26.907105 15849 pooling_layer.cu:212] Check failed: error == cudaSuccess (8 vs. 0) invalid device function
编译配置中算力选择与当前设备算力不一致,参考官方显卡算力表
¶TensorFlow虚拟环境安装
¶1、下载指定版本源码
在自定义目录中下载源码
1 | cd ~ |
选择指定版本,比如r1.0:
1 | cd tensorflow |
¶2、安装依赖项
1 | sudo apt-get install python-pip python-dev python-virtualenv # for Python 2.7 |
¶3、创建虚拟环境
1 | virtualenv --system-site-packages ~/virtual-env/tensorflow # for Python 2.7 |
¶4、激活虚拟环境
1 | source ~/virtual-env/tensorflow/bin/activate |
¶5、安装TensorFlow
- Python2.7 CPU only
1 | pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp27-none-linux_x86_64.whl |
- Python2.7 GPU
1 | pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.1-cp27-none-linux_x86_64.whl |
- Python3.4 CPU only
1 | pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp34-cp34m-linux_x86_64.whl |
- Python3.4 GPU
1 | pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.1-cp34-cp34m-linux_x86_64.whl |
- Python3.5 CPU only
1 | pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp35-cp35m-linux_x86_64.whl |
- Python3.5 GPU
1 | pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.1-cp35-cp35m-linux_x86_64.whl |
¶6、验证安装结果
TensorFlow已经安装完毕,现在可以测试安装是否成功。
首先要注意退出tensorflow的目录,否则会出现ImportError: cannot import name pywrap_tensorflow
的错误。
1 | cd ~ |
输入以下Python代码:
1 | import tensorflow as tf |
¶TensorFlow源码安装
¶1、下载指定版本源码
1 | git clone https://github.com/tensorflow/tensorflow |
选择指定版本,比如r1.0:
1 | cd tensorflow |
¶2、安装Bazel
安装JDK8
1 | sudo apt-get install --assume-yes openjdk-8-jdk |
若未安装curl,则先安装
1 | sudo apt-get install --assume-yes curl |
添加包源
1 | echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list |
更新并安装Bazel
1 | sudo apt-get update && sudo apt-get install --assume-yes bazel |
¶3、安装Python依赖项
1 | sudo apt-get install --assume-yes python-numpy python-dev python-pip python-wheel |
¶4、安装GPU依赖项
1 | sudo apt-get install --assume-yes libcupti-dev |
¶5、配置安装选项
假设目前还在tensorflow目录下,执行:
1 | ./configure |
即可开始配置参数,常见的配置例子如下:
1 | Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python2.7 |
注意CUDA默认为否,需要用CUDA时,请输入Y。
¶6、生成.whl包
- CPU版本:
1 | bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package |
- GPU版本:
1 | bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package |
执行如下命令,即可在/tmp/tensorflow_pkg目录下生成.whl
文件
1 | bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg |
¶7、使用pip安装.whl包
假设安装的是1.0.1版本:(注意:如果版本不一样,如下命令需要修改相应文件名)
1 | sudo pip install /tmp/tensorflow_pkg/tensorflow-1.0.1-cp27-cp27mu-linux_x86_64.whl |
¶8、验证安装结果
TensorFlow已经安装完毕,现在可以测试安装是否成功。
首先要注意退出tensorflow的目录,否则会出现ImportError: cannot import name pywrap_tensorflow
的错误。
1 | cd ~ |
输入以下Python代码:
1 | import tensorflow as tf |
如果能输出Hello, TensorFlow!
,则说明安装成功!
¶9、常见问题
错误信息:
1 | ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory |
-
临时解决办法:
原因是找不到cuda库,需要指定目录:1
2export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
sudo ldconfig -
永久解决办法
打开~/.bashrc1
vim ~/.bashrc
在最后一行添加:
1
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
保存后,让其生效:
1
source ~/.bashrc
以后每次登陆都会自动执行一次export指令,保证路径永久有效。
¶PyTorch在线安装
¶1、安装指令获取
安装命令可以在官网根据需要选择不同的安装方式
¶2、常见问题
-
如果
import torch
时报错
F0822 15:58:51.328765 31898 cudnn.hpp:113] Check failed: status == CUDNN_STATUS_SUCCESS (3 vs. 0) CUDNN_STATUS_BAD_PARAM
安装如下软件可能可以解决问题:
1
sudo apt-get install libtcmalloc-minimal4
并设置好路径:
1
vim ~/.bashrc
在.bashrc最后一行添加:
1
export LD_PRELOAD="$LD_PRELOAD:/usr/lib/libtcmalloc_minimal.so.4"
-
***/torch/lib/libtorch.so.1: undefined symbol: _ZTIN2at10TensorImplE
可能是和caffe2版本不一致,删除/usr/local/lib下的libcaffe*文件即可