Dji ManiFold-2G(Nivida Jetson TX2)源码安装Tensorflow-1.12.0

  1. Cuda 9.0
  2. Jetpack 3.3
  3. Python 3.5
  4. cuDNN 7.4.1(严格匹配!其他版本会出现问题!)

1. 使用背景:

使用TensortRt在DJI MANIFOLD-2G 部署加速目标检测模型。Nivida 提供了一些版本的tensorflow wheel安装。

由于Dji ManiFold-2G内置的Jetpack 3.3,Cuda9.0,Jetpack和Cuda版本不可随便变更,所以在安装tensorflow时需要注意按照版本进行匹配。在TX2上安装tensorflow-0.8.0经过测试是可以正常使用的,但是在转换和加载目标检测模型是会出现一些问题,因此尝试更高版本的tensoflow。

2. 准备工作:

2.1 创建虚拟内存空间

由于MANIFOLD-2G 的内存只有8G,在源码编译tensorflow这种大型项目时需要足够的内存,因此建议在硬盘上创建8G虚拟内存(按照自己实际需求创建虚拟内存)。

$ sudo fallocate -l 8G /swapPath/8GB.swap
$ sudo mkswap /swapPath/8GB.swap
$ sudo swapon /swapPath/8GB.swap

此时可以使用free-m看到已经新建了8GB的虚拟内存,为了保证该虚拟内存在计算机重启后仍有效,需要将下面语句添加到/etc/fstab后并重启计算机:

$ /swapPath/8GB.swap none swap sw 0 0

注: 在TX-2这种开发板上创建虚拟内存空间十分重要,这保证一些大型程序的编译有足够的内存空间,如果不建立这样的内存空间在编译TF时会出现内存不足的错误。

3. 安装步骤:

作者在安装学习的过程中主要参考JK Jung blog,该博客给作者的工作提供了极大的帮助,因此这里也主要借鉴JK Jung所提供的相关内容。

  1. 如果你已经安装了tensorflow、tensorboard,需要先讲其卸载

     $ sudo pip3 uninstall -y tensorflow tensorboard
    
  2. 从Github上下载安装源码,这里直接使用JK Jung的Github的jetson_nano仓库

    $ cd /project
    $ git clone https://github.com/jkjung-avt/jetson_nano.git
    $ cd jetson_nano
    
  3. 安装libprotobuf-3.6.1,安装该版本的libprotobuf主要是由于在使用TensorRt加速模型时大幅度提升对模型文件(xx.pd)载入的时间。

    $ ./install_protobuf-3.6.1.sh
    

    在安装protobuf过程中比较顺利没有出现问题,但是编译时间较长。如编译中遇到问题可以交流。

  4. 安装bazel-0.15.2,bazel主要是tensorflow的源码编译工具。

    ./install_bazel-0.15.2.sh
    

    bazel编译中出现的问题:

    Q1. 无法解压tensorflow/third_party/asm/asm-6.0.jar

    该问题主要是由于使用unzip对.jar文件解压失败造成的,笔者没有找到更合适的方法解决这个问题,但是尝试了一种比较笨拙的方式解决了该问题。

    首先,进入到出现问题的文件夹:
    cd /src/tensorflow/third_party/asm

    其次,将asm中.jar文件加上.zip后缀后变成xxx.jar.zip,再使用unzip解压时发现是正确的,按照此方法可以解决该问题。

    Q2. 解压正确,但是后面运行时仍提示无xxx.jar文件

    出现这个问题很迷惑,笔者尝试解压完文件后将原来的xxx.jar文件又放回到 /src/tensorflow/third_party/asm目录中,编译正确执行。(上述问题的出现用着两种方法可以解决,但是笔者总觉得这不是最合适的方法,没有从根本解决这个问题,如果大家有更好的解决方法,欢迎交流!!)

  5. 源码安装tensorflow-1.12.2,执行安装脚本,包括下载tensorflow所依赖的环境。

    ./install_tensorflow-1.12.2.sh
    

    编译中出现的问题:

    Q3. bazel构建文件出现的release-62-1.tar.gz错误解决

    该问题主要是由于下载release-62-1.tar.gz的错误,搭建一个本地的http服务,自己下载release-62-1.tar.gz并将其放到相应的位置。具体步骤如下:

    ① 搭建本地http服务:

    $ sudo apt-get install httpd
    $ sudo apt-get install apache2
    $ sudo apt-get install apache2-dev
    

    安装成功后使用sudo systemctl status apache2查看状态,在浏览器中输入localhost出现下面界面即为成功。

    ② 安装release-62-1.tar.gz

    下载地址,将下载好的文件复制到/var/www/html目录下,并将https://localhost/release-62-1.tar.gz添加到tensorflow/third_party/icu/workspace.bzl的url中。继续执行会出现下面的问题,需要在进行一处修改:
    tensorflow/third_party/icu/workspace.bzl中的Checksum改成报错内容中出现的序列,即86b85…这一行序列

    ③ 注意

    在完成上述步骤后,记得要copy一个workspace.bzl文件,因为在编译tensorflow是会更新这个文件,注意当编译时更新文件之后,迅速将更新的文件改成重新写好的workspace.bzl,这里源码编译会让你确认cuda版本,在确认版本之前更改这个文件即可。

  1. 源码编译结束后安装wheel文件即可。脚本中已写好,无需自己安装。这里给大家提供一下我编译安装好的wheel文件。

tensorflow-1.12.2-cp35-cp35m-linux_arrach64.whl

4. 常见问题

  1. 在成功安装tensoflow-1.12.2后,在测试程序的时候出现如下问题

    Error : Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.

    查阅了一些解决办法,最后发现是因为我的cuDnn版本不匹配导致的,之前我将Manifold-2G的cuDNN版本更新了一次,更改成了7.6.5版本,但是这个版本与编译的tensoflow不匹配,所以导致该错误发生。建议读者严格按照文章开始提到的环境安装。

    问题解决来源 https://github.com/tensorflow/tensorflow/issues/24828

才疏学浅,如有问题请多指教!

DJI ManiFold-2G(Nvidia Jetson TX2)源码安装Tensorflow-1.12.0相关推荐

  1. centos7源码安装mysql报错_CentOS7 下源码安装MySQL数据库 8.0.11

    本文主要向大家介绍了CentOS7 下源码安装MySQL数据库 8.0.11,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. CentOS7 下源码安装MySQL 8.0.11 系 ...

  2. linux7squid编译安装,CentOS 7.3 源码安装squid 4.12 及安装过程遇到的一些问题

    CentOS 7.3 源码安装squid 4.12 及安装过程遇到的一些问题 一.源码安装squid 4.12 1.下载squid-4.12源码包 wget http://www.squid-cach ...

  3. 源码安装tensorflow

    因为官网上的源码安装教程基本也是使用的Python2,所以我这里使用Python3来安装 操作系统:xubuntu17.04 64位 下载bazel,下载页面为https://github.com/b ...

  4. centos 6.8 源码安装 erlang/otp 19.0.2

    2019独角兽企业重金招聘Python工程师标准>>> 最近一直都是在debian jessie下开发erlang代码,但部署环境一直都是在centos 6上面,发现centos 6 ...

  5. 在CentOS 6.3/6.6 64bit上源码安装cmake 3.4.0

    CMake主页是 https://cmake.org/download/ 1.安装必备包 yum install -y gcc gcc-c++ make automake ncurses-devel ...

  6. 在Debian64环境下源码安装newLisp v10.6.0

    为什么80%的码农都做不了架构师?>>>    起因:官方网站上没有适合Debian64的二进制安装包,用源码包直接make时会失败,这里给出解决方法. 1,从官网(http://w ...

  7. mysql5.0源码安装_linux小白 mysql5.0源码安装配置

    安装mysql-5.0.45.tar.gz(该软件包下载地址:http://www.filewatcher.com/m/mysql-5.0.45.tar.gz.24433261-0.html) # g ...

  8. centos6.5 nginx1.8 php mysql,CentOS6.5 源码安装Nginx1.8 + PHP7.0.6 + MySQL5.7.12

    准备工作 使用yum安装相关依赖 yum install -y gcc gcc-c++ autoconf automake libtool make cmake libjpeg libjpeg-dev ...

  9. NVIDIA Jetson Xavier NX上导入tensorflow报错:AttributeError: module ‘wrapt‘ has no attribute ‘ObjectProxy‘

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 在Jetson Xavier NX上导入tensorflow报错:AttributeError: module 'wra ...

最新文章

  1. ASP.NET MVC 过滤器(一)
  2. html5图片加载不了,webView加载html图片遇到的问题解决
  3. Set_uid set_gid stick_bit 软链接 硬链接
  4. leetcode 470. 用 Rand7() 实现 Rand10()
  5. rpm打包的流程包括以下哪些_卖房流程包括哪些
  6. 网游云上网络优化方案
  7. 【NOIP2014】子矩阵
  8. 什么?物联网方向也能发论文了?
  9. python的基本语法if语句_Python基础之条件控制操作示例【if语句】
  10. 时间安排还是很不合理
  11. easyexcell导出专题
  12. TcpSocket的Qt串口实现与QtSocket接收数据不完整处理方法
  13. 如何应对项目现场EasyNVR视频平台内ini配置文件丢失的现象?
  14. linuxcan接口测试
  15. GSWiFi校园网路由器设置方法最新版
  16. egret 实战教程之跳一跳(一)
  17. DCloud旗下的uni-app如何判断是否安装腾讯QQ微信微博支付宝淘宝客户端
  18. 使用python玩阴阳师,自动抽到SSR
  19. Flutter Decoration背景设定(边框、圆角、阴影、形状、渐变、背景图像等)
  20. mysql导出nb3文件_MySQL导入导出.sql文件

热门文章

  1. 学三维动画要用数位板吗?
  2. java同步和异步的区别_java中同步与异步区别是什么
  3. Best practices for knowing your LIMIT and kicking %NOTFOUND
  4. 论Java多线程如何引发OOM—多线程开发知识点
  5. [电脑问题]如何把3.5英寸的硬盘安装到没有硬盘架的新电脑
  6. App Store上架细化指南
  7. Central Similarity Quantization for Efficient Image and Video Retrieval
  8. 30.2℃ “中国最冷小镇”呼中迎来五年来最暖“腊八节”
  9. minixml的安装教程
  10. gradle学习入门:Gradle是什么?Gradle有什么用?