DJI ManiFold-2G(Nvidia Jetson TX2)源码安装Tensorflow-1.12.0
Dji ManiFold-2G(Nivida Jetson TX2)源码安装Tensorflow-1.12.0
- Cuda 9.0
- Jetpack 3.3
- Python 3.5
- 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所提供的相关内容。
如果你已经安装了tensorflow、tensorboard,需要先讲其卸载
$ sudo pip3 uninstall -y tensorflow tensorboard
从Github上下载安装源码,这里直接使用JK Jung的Github的jetson_nano仓库
$ cd /project $ git clone https://github.com/jkjung-avt/jetson_nano.git $ cd jetson_nano
安装libprotobuf-3.6.1,安装该版本的libprotobuf主要是由于在使用TensorRt加速模型时大幅度提升对模型文件(xx.pd)载入的时间。
$ ./install_protobuf-3.6.1.sh
在安装protobuf过程中比较顺利没有出现问题,但是编译时间较长。如编译中遇到问题可以交流。
安装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目录中,编译正确执行。(上述问题的出现用着两种方法可以解决,但是笔者总觉得这不是最合适的方法,没有从根本解决这个问题,如果大家有更好的解决方法,欢迎交流!!)
源码安装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版本,在确认版本之前更改这个文件即可。
- 源码编译结束后安装wheel文件即可。脚本中已写好,无需自己安装。这里给大家提供一下我编译安装好的wheel文件。
tensorflow-1.12.2-cp35-cp35m-linux_arrach64.whl
4. 常见问题
在成功安装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相关推荐
- centos7源码安装mysql报错_CentOS7 下源码安装MySQL数据库 8.0.11
本文主要向大家介绍了CentOS7 下源码安装MySQL数据库 8.0.11,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. CentOS7 下源码安装MySQL 8.0.11 系 ...
- 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 ...
- 源码安装tensorflow
因为官网上的源码安装教程基本也是使用的Python2,所以我这里使用Python3来安装 操作系统:xubuntu17.04 64位 下载bazel,下载页面为https://github.com/b ...
- centos 6.8 源码安装 erlang/otp 19.0.2
2019独角兽企业重金招聘Python工程师标准>>> 最近一直都是在debian jessie下开发erlang代码,但部署环境一直都是在centos 6上面,发现centos 6 ...
- 在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 ...
- 在Debian64环境下源码安装newLisp v10.6.0
为什么80%的码农都做不了架构师?>>> 起因:官方网站上没有适合Debian64的二进制安装包,用源码包直接make时会失败,这里给出解决方法. 1,从官网(http://w ...
- 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 ...
- 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 ...
- NVIDIA Jetson Xavier NX上导入tensorflow报错:AttributeError: module ‘wrapt‘ has no attribute ‘ObjectProxy‘
欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 在Jetson Xavier NX上导入tensorflow报错:AttributeError: module 'wra ...
最新文章
- ASP.NET MVC 过滤器(一)
- html5图片加载不了,webView加载html图片遇到的问题解决
- Set_uid set_gid stick_bit 软链接 硬链接
- leetcode 470. 用 Rand7() 实现 Rand10()
- rpm打包的流程包括以下哪些_卖房流程包括哪些
- 网游云上网络优化方案
- 【NOIP2014】子矩阵
- 什么?物联网方向也能发论文了?
- python的基本语法if语句_Python基础之条件控制操作示例【if语句】
- 时间安排还是很不合理
- easyexcell导出专题
- TcpSocket的Qt串口实现与QtSocket接收数据不完整处理方法
- 如何应对项目现场EasyNVR视频平台内ini配置文件丢失的现象?
- linuxcan接口测试
- GSWiFi校园网路由器设置方法最新版
- egret 实战教程之跳一跳(一)
- DCloud旗下的uni-app如何判断是否安装腾讯QQ微信微博支付宝淘宝客户端
- 使用python玩阴阳师,自动抽到SSR
- Flutter Decoration背景设定(边框、圆角、阴影、形状、渐变、背景图像等)
- mysql导出nb3文件_MySQL导入导出.sql文件
热门文章
- 学三维动画要用数位板吗?
- java同步和异步的区别_java中同步与异步区别是什么
- Best practices for knowing your LIMIT and kicking %NOTFOUND
- 论Java多线程如何引发OOM—多线程开发知识点
- [电脑问题]如何把3.5英寸的硬盘安装到没有硬盘架的新电脑
- App Store上架细化指南
- Central Similarity Quantization for Efficient Image and Video Retrieval
- 30.2℃ “中国最冷小镇”呼中迎来五年来最暖“腊八节”
- minixml的安装教程
- gradle学习入门:Gradle是什么?Gradle有什么用?