初学JetsonTX2之安装Tensorflow-gpu、keras

本文参考:

https://blog.csdn.net/dhaduce/article/details/80155121

https://www.jianshu.com/p/56c85e29523d

 关于TX2:

在安装Tensorflow-gpu、keras之前,我们需要了解TX2是什么,比如它的cpu是什么,gpu是什么(Tegra X2)。最重要的一点是:它用的arm结构,是aarch-linux,不是x86_64-linux,也不是i386-linux。这里附官方简介:

http://www.nvidia.cn/object/embedded-systems-dev-kits-modules-cn.html

之前的博客有简短的介绍:https://blog.csdn.net/alphonse2017/article/details/84348103


开始安装

1. 安装各种包以及依赖

sudo apt-get update   
sudo apt-get upgrade
sudo apt-get install build-essential cmake git pkg-config
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install libatlas-base-dev
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-de

Tips:如果遇到安装包的时候,出现error :package can not located

解决办法:

sudo apt-key update  # maybe no need
sudo apt-get update  # just need this order

2. 安装python3的pip(刷完机已经自带python2.7、python3.5,但是都没有安徽在那个对应的pip):这里主要以python3.5使用为主,也就是python3,对应的pip为pip3

sudo apt-get install python3-pip # 安装pip 

如果以上不成功,可以使用下面的方法:

mkdir pip_dir 
cd pip_dir
wget https://bootstrap.pypa.io/get-pip -o get-pip.py  #会下载2个py文件,get-pip.py get-pip.py.1
rm get-pip.py                     # 删除get-pip.py,这个是下载日志,可以删掉
move get-pip.py.1 get-pip.py      # 把真正要用的py文件改名为get-pip.py
sudo python3 get-pip.py           # 用python3运行

linux安装命令总结(供参考):在多版本python的环境下关于apt-get、pip安装与删除的命令:

#######################
## 安装到python2下
#######################
# apt-get安装
sudo apt-get install python-xxx            # apt安装python2的xxx包
sudo apt-get install python-numpy=1.15.4   # apt安装python2的指定版本numpy包

# apt-get 卸载包
sudo apt-get purge python-numpy=1.15.4

# pip安装,pip默认是对应python2;pip3是对应python3
sudo pip install xxx                       # pip安装python2的xxx包

# 用不同的python去指定对应的pip安装
sudo python -m pip install xxx             # pip安装python2的xxx包

# 用python去更新或安装指定版本的包;eg:安装或者更新numpy的版本
sudo python -m pip install --upgrade numpy==1.15.4
--------------------------------------------------------------------------
#######################
## 安装到python3下
#######################
# apt-get安装
sudo apt-get install python3-xxx  # apt安装python3的xxx包
sudo apt-get install python3-numpy=1.15.4   # apt安装python3的指定版本numpy包

# pip安装,pip默认是对应python2;pip3是对应python3
sudo pip3 install xxx             # pip安装python3的xxx包

# 用不同的python去指定对应的pip安装
sudo python3 -m pip install xxx   # pip安装python3的xxx包

# 用python去更新或安装指定版本的包;eg:安装或者更新numpy的版本
sudo python3 -m pip install --upgrade numpy==1.15.4

3. 安装Opencv(TX2刷机得到的opencv3.3是python2的版本;所以需要手动源码安装opencv3.4.0,从而使得python3可以使用opencv)

下载opencv3.4.0:

wget https://github.com/opencv/opencv/archive/3.4.0.zip
unzip 3.4.0.zip
或
wget https://github.com/opencv/opencv/archive/3.4.0.tar.gz
tar -xvf 3.4.0.tar.gz 

编译OpenCV 官方参考:https://docs.opencv.org/3.4.0/d6/d15/tutorial_building_tegra_cuda.html
这个文档搭建的环境,软件版本偏老。主要参考其流程。

安装依赖包:

$ sudo apt-get install \
    libglew-dev \
    libtiff5-dev \
    zlib1g-dev \
    libjpeg-dev \
    libpng12-dev \
    libjasper-dev \
    libavcodec-dev \
    libavformat-dev \
    libavutil-dev \
    libpostproc-dev \
    libswscale-dev \
    libeigen3-dev \
    libtbb-dev \
    libgtk2.0-dev \
    pkg-config

编译OpenCV (注意,相对OpenCV官方参考,做了一点修改):

$ cd opencv-3.4.0
$ mkdir build
$ cd build
$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DBUILD_PNG=OFF \
    -DBUILD_TIFF=OFF \
    -DBUILD_TBB=OFF \
    -DBUILD_JPEG=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_ZLIB=OFF \
    -DBUILD_EXAMPLES=ON \
    -DBUILD_opencv_java=OFF \
    -DBUILD_opencv_python2=OFF \
    -DBUILD_opencv_python3=ON \
    -DENABLE_PRECOMPILED_HEADERS=OFF \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENMP=OFF \
    -DWITH_FFMPEG=ON \
    -DWITH_GSTREAMER=OFF \
    -DWITH_GSTREAMER_0_10=OFF \
    -DWITH_CUDA=ON \
    -DWITH_GTK=ON \
    -DWITH_VTK=OFF \
    -DWITH_TBB=OFF \
    -DWITH_1394=OFF \
    -DWITH_OPENEXR=OFF \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
    -DCUDA_ARCH_BIN=6.2 \
    -DCUDA_ARCH_PTX="" \
    -DINSTALL_C_EXAMPLES=OFF \
    -DINSTALL_TESTS=OFF \
    ..
# 参考OpenCV官方文档,我做了些修改
# -DBUILD_TBB=OFF 起初编译报错,在调用tbb动态库的时候。关掉它,干脆不使用tbb了。
# -DINSTALL_C_EXAMPLES=OFF 想快点,这个就不装了
# -DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata TEST 和 TEST DATA 都不装了

$ sudo make -j4
# 如果开了TX2 6核模式,可以用-j6 
# 让TX2 6核火力全看,参考:http://www.gpus.cn/qianduan/front/getNewsArc?articleid=133&from=timeline&isappinstalled=0
$ sudo make install

查看opencv版本:

pkg-config --modversion opencv

卸载opencv:

找到当初安装 opencv3.4.0 的 build 目录,进入 build 目录

cd /home/***/opencv3.4.0/build
sudo make uninstall
cd  ..
sudo rm -r build

4. 安装Cuda(TX2已经自带,检查后可跳过这一步)

查看cuda版本:

cat /usr/local/cuda/version.txt

若没有跳出cuda的版本,则需手动安装cuda:

这里附安装连接:https://blog.csdn.net/jonms/article/details/79318566

5. 安装Cudnn(如果运行import tensorflow as tf没有报错,就直接跳过这第5步,否则需要手动安装)

A. 确定已经安装的Cuda版本,以Cuda9.0为例,到官网https://developer.nvidia.com/rdp/cudnn-download下载相应的库文件(下载前需要登录网站,因此需要进行注册)PS:一定要去官网下载对应的版本,不要图省事去什么网盘之类的,只有自己下载才是最安全的,以后也有很多东西要下载,多熟悉一下。

cudnn下载链接:http://developer.download.nvidia.com/compute/redist/cudnn/v7.1.1/cudnn-9.0-linux-x64-v7.1.tgz

B. 进入下载目录并解压

cd /home/nvidia/Downloads
sudo tar xvf cudnn-9.0-linux-x64-v7.1.tgz

C. 复制头文件和动态链接库

cd cuda
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/* /usr/local/cuda/lib64/
cd /usr/local/cuda/lib64/
ls -a(查看libcudnn版本;很多地方需要根据文件的版本然后操作,后面不再提示)
sudo chmod +r libcudnn.so.7.1.1
后面很多地方需要查看文件名称。学会使用 ls -a(查看当前目录下所有文件)

D. 创建软连接

sudo rm -rf libcudnn.so libcudnn.so.7
sudo ln -s libcudnn.so.7.1.1 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so
sudo ldconfig

5.安装numpy、scipy:

pip3 install numpy==1.16.2
pip3 install scipy==1.2.1

6. 在线安装tensorflow-gpu:

sudo pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp33 tensorflow-gpu

7. 在线安装Keras:

sudo pip3 install keras

8.在此贴出安装成功的所有package:

nvidia@tegra-ubuntu:~$ pip3 list
Package                       Version               
----------------------------- ----------------------
absl-py                       0.7.1                 
altgraph                      0.16.1                
apturl                        0.5.2                 
astor                         0.7.1                 
backcall                      0.1.0                 
beautifulsoup4                4.4.1                 
blinker                       1.3                   
Brlapi                        0.6.4                 
chardet                       2.3.0                 
checkbox-support              0.22                  
command-not-found             0.3                   
cryptography                  1.2.3                 
cycler                        0.10.0                
decorator                     4.4.0                 
defer                         1.0.6                 
feedparser                    5.1.3                 
future                        0.17.1                
gast                          0.2.2                 
grpcio                        1.19.0                
guacamole                     0.9.2                 
h5py                          2.9.0                 
html5lib                      0.999                 
httplib2                      0.9.1                 
idna                          2.0                   
imageio                       2.5.0                 
ipython                       7.4.0                 
ipython-genutils              0.2.0                 
jedi                          0.13.3                
Jinja2                        2.8                   
Keras                         2.2.4                 
Keras-Applications            1.0.7                 
Keras-Preprocessing           1.0.9                 
kiwisolver                    1.0.1                 
language-selector             0.1                   
louis                         2.6.4                 
lxml                          3.5.0                 
macholib                      1.11                  
Mako                          1.0.3                 
Markdown                      3.1                   
MarkupSafe                    0.23                  
matplotlib                    3.0.3                 
networkx                      2.3                   
numpy                         1.16.2                
nvidia-ml-py3                 7.352.0               
oauthlib                      1.0.3                 
onboard                       1.2.0                 
padme                         1.1.1                 
pandas                        0.24.2                
parso                         0.4.0                 
pefile                        2019.4.14             
pexpect                       4.0.1                 
pickleshare                   0.7.5                 
Pillow                        6.0.0                 
pip                           19.0.3                
plainbox                      0.25                  
prompt-toolkit                2.0.9                 
protobuf                      3.7.1                 
psutil                        5.6.1                 
psycopg2                      2.6.1                 
ptyprocess                    0.5                   
pyasn1                        0.1.9                 
pycups                        1.9.73                
pycurl                        7.43.0                
Pygments                      2.3.1                 
pygobject                     3.20.0                
PyInstaller                   3.4                   
PyJWT                         1.3.0                 
pyparsing                     2.4.0                 
python-apt                    1.1.0b1+ubuntu0.16.4.2
python-dateutil               2.8.0                 
python-debian                 0.1.27                
python-systemd                231                   
pytz                          2018.9                
PyWavelets                    1.0.3                 
pyxdg                         0.25                  
PyYAML                        5.1                   
reportlab                     3.3.0                 
requests                      2.9.1                 
scikit-image                  0.15.0                
scikit-learn                  0.20.3                
scipy                         1.2.1                 
sessioninstaller              0.0.0                 
setuptools                    41.0.0                
six                           1.12.0                
ssh-import-id                 5.5                   
system-service                0.3                   
tensorboard                   1.9.0                 
tensorflow-gpu                1.9.0+nv18.8          
termcolor                     1.1.0                 
traitlets                     4.3.2                 
ubuntu-drivers-common         0.0.0                 
unattended-upgrades           0.1                   
unity-scope-calculator        0.1                   
unity-scope-chromiumbookmarks 0.1                   
unity-scope-colourlovers      0.1                   
unity-scope-devhelp           0.1                   
unity-scope-firefoxbookmarks  0.1                   
unity-scope-gdrive            0.7                   
unity-scope-manpages          0.1                   
unity-scope-openclipart       0.1                   
unity-scope-texdoc            0.1                   
unity-scope-tomboy            0.1                   
unity-scope-virtualbox        0.1                   
unity-scope-yelp              0.1                   
unity-scope-zotero            0.1                   
urllib3                       1.13.1                
wcwidth                       0.1.7                 
Werkzeug                      0.15.2                
wheel                         0.33.1                
xdiagnose                     3.8.4.1               
xkit                          0.0.0                 
XlsxWriter                    0.7.3  
nvidia@tegra-ubuntu:~$ 

9.让TX2火力全开:

# 查看 cpu 使用情况
$ cat /proc/cpuinfo
# 查看 cpu 使用配置
$ sudo nvpmodel -q –verbose
# 配置 6 cpu 模式
$ sudo nvpmodel -m 0

最后

欢迎评论交流,感谢 成都—图像算法—周文龙

上篇文章:初学Jetson TX2之刷机跑demo

你可能感兴趣的:(初学Jetson,TX2)