为了加快环境所需依赖的下载速度,首先更新 apt-get 源Ubuntu16.04[清华大学映像]
如何修改默认的更新源呢:
首先备份:$sudo cp /etc/apt/sources.list etc/apt/sources.list_backup
修改:$sudo gedit /etc/apt/sources.list
清空并替换为
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
执行
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install python3-pip #安装pip
更新pip源
#在 ~/.config 下新建pip文件夹
#$cd ~/.config/pip
#$vim pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
保存退出
安装 numpy,是编译 tensorflow 和 opencv3 的依赖
$sudo pip3 install numpy
驱动版本查询Nvidia驱动程序
执行以下步骤
$sudo apt-get purge nvidia* #卸载所有显卡驱动
$sudo add-apt-repository ppa:graphics-drivers/ppa #Personal Package Archives,也就是个人软件包集,添加驱动程序下载源
$sudo apt-get update && sudo apt-get install nvidia-384 nvidia-settings
重启
$ nvidia-smi #输入命令,输出显卡信息及驱动程序版本
选择CUDA9.0 ubuntu16.04 deb(local)
下载完成后执行
$sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
$sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
$sudo apt-get update
$sudo apt-get install cuda
测试CUDA9.0
$nvcc -V #输出CUDA版本信息
测试Samples
$mkdir test
$cd test
$cp -r /usr/local/cuda-9.0/samples/ .
$cd samples/
$make -j16
$cd ./1_Utilities/bandwidthTest
$./bandwidthTest
查看最后结果,如果是Result = PASS,那就ok。
接着cd到根目录。编辑.bashrc文件
$sudo gedit .bashrc
在最后加上
#cuda9.0
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
保存退出。接着在命令窗口输入
$source .bashrc
让文件生效。
(请勿选择9.1,否则编译Tensorflow会出现问题)
如果误装了其他版本可通过以下方法卸载并重装
$sudo apt-get --purge remove cuda
$sudo apt autoremove
$sudo apt-get clean
$sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
$sudo apt-get update
$sudo apt-get install cuda-9-0
注意自己的路径及cudnn版本
tar -zxvf cudnn-9.0-linux-x64-v7.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
注意上面第二条指令,这里多加了一个-a,在官方给的方案里面没有,我建议你这样做,否则会出现连接出错的问题。如果你忘记了,可以参考下面做法
#软链接至关重要
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7.0
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7.0
sudo ln -s libcudnn.so.7.0 libcudnn.so
获取源码
$git clone --recurse-submodules https://github.com/tensorflow/tensorflow
$cd tensorflow/
下面是我配置tensorflow的log,默认python3.5
注意:python和cuda的路径
$ ./configure
You have bazel 0.8.1 installed.
Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python3
Found possible Python library paths:
/home/shengchun/tensorflow/models/
/bin
/usr/local/cuda/bin
/sbin
/home/shengchun/tensorflow/models/slim
/usr/bin
/usr/local/sbin
/usr/local/games
/usr/lib/python3/dist-packages
/usr/games
/home/shengchun/mxnet-ssd/mxnet/python
/usr/sbin
/usr/local/bin
/usr/local/lib/python3.5/dist-packages
Please input the desired Python library path to use. Default is [/home/shengchun/tensorflow/models/]/usr/local/lib/python3.5/dist-packages
Do you wish to build TensorFlow with jemalloc as malloc support? [Y/n]: [Enter]
jemalloc as malloc support will be enabled for TensorFlow.
Do you wish to build TensorFlow with Google Cloud Platform support? [Y/n]: [Enter]
Google Cloud Platform support will be enabled for TensorFlow.
Do you wish to build TensorFlow with Hadoop File System support? [Y/n]: [Enter]
Hadoop File System support will be enabled for TensorFlow.
Do you wish to build TensorFlow with XLA JIT support? [y/N]: [Enter]
No XLA JIT support will be enabled for TensorFlow.
Do you wish to build TensorFlow with GDR support? [y/N]: [Enter]
No GDR support will be enabled for TensorFlow.
Do you wish to build TensorFlow with VERBS support? [y/N]: [Enter]
No VERBS support will be enabled for TensorFlow.
Do you wish to build TensorFlow with OpenCL support? [y/N]: [Enter]
No OpenCL support will be enabled for TensorFlow.
Do you wish to build TensorFlow with CUDA support? [y/N]: y
CUDA support will be enabled for TensorFlow.
Please specify the CUDA SDK version you want to use, e.g. 7.0. [Leave empty to default to CUDA 8.0]: 9.0
Please specify the location where CUDA 9.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: [Enter]
Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 6.0]: 7.0.5
Please specify the location where cuDNN 7.0.3 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:[Enter]
**Please specify a list of comma-separated Cuda compute capabilities you want to build with.
You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.
Please note that each additional compute capability significantly increases your build time and binary size. [Default is: 5.0]**[Enter]
Do you want to use clang as CUDA compiler? [y/N]: [Enter]
nvcc will be used as CUDA compiler.
Please specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]:
Do you wish to build TensorFlow with MPI support? [y/N]: [Enter]
No MPI support will be enabled for TensorFlow.
Please specify optimization flags to use during compilation when bazel option “–config=opt” is specified [Default is -march=native]: [Enter]
Add “–config=mkl” to your bazel command to build with MKL support.
Please note that MKL on MacOS or windows is still not supported.
If you would like to use a local MKL instead of downloading, please set the environment variable “TF_MKL_ROOT” every time before build.
Configuration finished
使用Bazel编译
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
编译时间有点儿长。
bazel编译命令建立了一个名为build_pip_package的脚本。运行如下的命令将会在 /tmp/tensorflow_pkg路径下生成一个.whl文件。
$bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
pip安装tensorflow
$sudo pip3 install /tmp/tensorflow_pkg/tensorflow-1.4.0-cp35-cp35m-linux_x86_64.whl
安装完毕 import tensorflow 进行验证。
CUDA9.0只支持opencv3.3以上版本
1、下载opencv源码:https://github.com/opencv/opencv
2、下载 opencv_contrib 源程序https://github.com/opencv/opencv_contrib
下面开始安装
1、先将opencv和opencv_contrib解压到某个目录下,我的是在 /usr/opencv
2、依次执行下面的命令
$sudo apt-get update
$sudo apt-get upgrade
#opencv3.3的依赖
$sudo apt-get install build-essential cmake pkg-config
$sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
$sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$sudo apt-get install libxvidcore-dev libx264-dev
$sudo apt-get install libgtk-3-dev
$sudo apt-get install libatlas-base-dev gfortran
$sudo apt-get install python3.5-dev python-numpy libtbb2 libtbb-dev libdc1394-22-dev
进入opencv源代目录(如:/usr/opencv/opencv-master),创建build目录
mkdir build
cd build
执行编译命令
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D PYTHON3_EXECUTABLE=/usr/bin/python3 -D PYTHON_INCLUDE_DIR=/usr/include/python3.5 -D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/dist-packages/numpy/core/include -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=/usr/opencv/opencv_contrib-master/modules -D PYTHON_EXECUTABLE=/usr/lib/python3 -D BUILD_EXAMPLES=ON ..
注意:在执行上面命令时,正常来说会到ippicv处时执行不下去,编译会退出,因为需要依赖 ippicv 的包编译时下载很慢,出现网络异常下载不下来。解决方法是建议先手动下载
ippicv_2017u2_lnx_intel64_20170828.tgz(github下载链接)
同时用该文件覆盖 /usr/opencv/opencv-master/ .cache(注意有“.”)目录下的 ippicv文件(文件名这里注意是一个很长的通过guid生成的名字,不能改变)。
如果编译通过当我没说 :)
$sudo make -j16
$sudo make clean
$sudo make install
$sudo ldconfig
如果没有问题的话就大功告成了。
配置完成之后,我们可以用搭建好的环境进行各种各样的视频Tracking.