【Jetson-Nano】2.Tensorflow object API和Pytorch的安装

文章目录

  • 1、Tensorflow多版本安装
    • 1.1 Protobuf 安装
    • 1.2 安装依赖包及tensorflow1.15
    • 1.3 安装其它常用库
    • 1.4 测试python包是否安装成功
    • 1.5 TensorRT和Opencv的安装
    • 1.6 pycuda和onnx安装
    • 1.7 Tensorflow2.3安装
  • 2、Pytorch安装
    • 2.1 安装pytroch和torchvision
    • 2.2 安装环境验证
  • 参考内容


首先按照我的其它 博客完成jetson nano 基础环境的配置。然后就可以对深度学习框架进行安装。要注意的是,nano每次断电再开机后,系统时间是错误的,要先手动进行设置。

1、Tensorflow多版本安装

创建虚拟环境并激活:

mkvirtualenv nano
workon nano

Tensorflow不同的版本将安装在不同的虚拟环境中。

1.1 Protobuf 安装

退出虚拟环境,在系统中安装Protobuf。
首先配置protobuf,这样可以使tensorflow运行更快。如果protobuflibprotobuf没有安装,Tensorflow的性能会被大打折扣。当然,使用pip来安装tensorflow 的时候,会自动安装一个protobuf的版本,但是可能不是很合适。关于这部分性能的影响参见Nvidia的论坛
安装命令脚本sh内容如下:

#!/bin/bashset -efolder=${HOME}/src
mkdir -p $folderecho "** Install requirements"
sudo apt-get install -y autoconf libtoolecho "** Download protobuf-3.8.0 sources"
cd $folder
if [ ! -f protobuf-python-3.8.0.zip ]; thenwget https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-python-3.8.0.zip
fi
if [ ! -f protoc-3.8.0-linux-aarch_64.zip ]; thenwget https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-aarch_64.zip
fiecho "** Install protoc"
unzip protobuf-python-3.8.0.zip
unzip protoc-3.8.0-linux-aarch_64.zip -d protoc-3.8.0
sudo cp protoc-3.8.0/bin/protoc /usr/local/bin/protocecho "** Build and install protobuf-3.8.0 libraries"
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
cd protobuf-3.8.0/
./autogen.sh
./configure --prefix=/usr/local
make -j$(nproc)
make check
sudo make install
sudo ldconfigecho "** Update python3 protobuf module"
# remove previous installation of python3 protobuf module
sudo pip uninstall -y protobuf
sudo pip install Cython
cd python/
python3 setup.py build --cpp_implementation
sudo python3 setup.py install --cpp_implementationecho "** Build protobuf-3.8.0 successfully"

也可以将命令逐行在终端中执行。

然后激活虚拟环境,装protobuf装到虚拟环境中:

workon nano
cd ~
cp -r ~/src/protobuf-3.8.0/python/ .
cd python
python setup.py install --cpp_implementation

1.2 安装依赖包及tensorflow1.15

安装好protobuf以后,在虚拟环境中安装numpy和cython:

pip install cython
pip install numpy==1.16.1

因为需要编译,用时大约20分钟。
同时安装numpy时可能会报错:
numpy/core/src/multiarray/numpyos.c:18:10: fatal error: xlocale.h: No such file or directory
在这里插入图片描述
需要退出虚拟环境,为系统安装numpy,然后将其通过软链接使虚拟环境可以使用:

sudo pip install numpy=1.16.1
cd ~/.virtualenvs/nano/lib/python3.6/site-packages/
ln -s /usr/local/lib/python3.6/dist-packages/numpy numpy

然后再进入虚拟环境中进行numpy安装

pip install numpy==1.16.1
sudo apt-get install libfreetype6-dev
pip3 uninstall -y pillow
pip3 install --no-cache-dir pillow

安装其它依赖包:

pip install -U testresources setuptools
pip install -U future mock h5py keras_preprocessing keras_applications gast futures pybind11

安装过程中建议那个包的安装报错时,可以先把不报错的安装完成,然后报错的单独安装,整个用时也较长。

在写本博客时(2020年11月11日),官方提供了1.15和2.3版本的安装。当前1.15的版本更加稳定,在这个虚拟环境中安装tensorflow1.15.2:

pip install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow==1.15.2

安装过程中有其它依赖会自动安装。
更多安装过程的理解请参考官方论坛和官方安装指导.
通过以上步骤,完成Tensorflow的安装。

安装时间较长,耐心等待。

1.3 安装其它常用库

每个包都很耗时,耐心等待,若不成功,多次尝试,考虑到安装太慢,可以多开几个shell来实现(keras还有scikit-learn jupyter是需要先安装scipy的,所以可以先安装时注意顺序;另外最新版本的keras要求tensorflow>2,所以要指定较早版本)

pip install scipy
pip install keras==2.3.0
pip install pillow
pip install matplotlib
pip install scikit-learn
pip install scikit-image
pip install jupyter 

1.4 测试python包是否安装成功

python -c 'import numpy; print(numpy.__version__)'
python -c 'import jupyter; print(jupyter.__version__)'
python -c 'import PIL; print(PIL.__version__)'
python -c 'import matplotlib; print(matplotlib.__version__)'
python -c 'import tensorflow; print(tensorflow.__version__)'
python -c 'import keras; print(keras.__version__)'
python -c 'import scipy; print(scipy.__version__)'

在这里插入图片描述
同时可以验证一下tensorflow是否支持GPU:
在这里插入图片描述

1.5 TensorRT和Opencv的安装

系统中已将tensorrt和opencv的相关组件安装完成,如下图:
在这里插入图片描述
可以看到有uff,tensorrt,graphsurgeon,cv2模块,只需要将这些包的路径填加到虚拟环境的环境变量中即可。

workon nano
add2virtualenv /usr/lib/python3.6/dist-packages
lssitepackages #列出所有的包

在这里插入图片描述

1.6 pycuda和onnx安装

要使用tensorrt对各种主流框架(tensorflow,pytorch,caffe)的模型时行转换和加速,还要安装pycuda和onnx

pip install pycuda
pip install onnx==1.4.1 

关于onnx的版本也选择了较低的,也可以安装最新的,可能会报错,这时也可以再降级。

1.7 Tensorflow2.3安装

tensorflow1.15.2己在nano虚拟环境中完成安装,大多数包也都是tensorflow2.3的安装依赖,所以进行如下操作。
复制nano环境:

cpvirtualenv nano nano_tf2

这样创建一个叫nano_tf2与nano一样的环境
安装tensorflow2.3

#先卸载tensorflow1.15及keras
pip uninstall keras
pip uninstall tensorflow
#然后再安装
pip install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow==2.3.1

验证安装:
在这里插入图片描述
到此,tensorflow的安装完成。随着jetson系列的更新,可以参照本文去官网查看命令来安装。

2、Pytorch安装

本节主要参考 https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-7-0-now-available/72048 内容。
在按照博客完成基础配置后可以执行以下安装步骤。

2.1 安装pytroch和torchvision

复制nano环境:

cpvirtualenv nano nano_ptch

这样创建一个叫nano_ptch与nano一样的环境

#先卸载tensorflow1.15及keras
pip uninstall keras
pip uninstall tensorflow

执行jtop命令,按6,查看当前jetpack版本,选择合适的pytorch版本进行安装。
在这里插入图片描述
可以看来系统版本是jetpack4.4.1,是当前(2020年11月13日)最新的。
下面列举几个版本的要求:
在这里插入图片描述
选择安装最新版本pytorch1.7

wget https://nvidia.box.com/shared/static/wa34qwrwtk9njtyarwt5nvo6imenfy26.whl -O torch-1.7.0-cp36-cp36m-linux_aarch64.whl #需要科学上网
workon nano_ptch
pip install torch-1.7.0-cp36-cp36m-linux_aarch64.whl

鉴于网络原因,我把pytorch1.7上传到CSDN中,免费下载。
接着安装torchvision,由于torchvision的版本要与pytorch的版本对应,所以要选择合适版本,版本对应关系如下:
PyTorch v1.0 - torchvision v0.2.2
PyTorch v1.1 - torchvision v0.3.0
PyTorch v1.2 - torchvision v0.4.0
PyTorch v1.3 - torchvision v0.4.2
PyTorch v1.4 - torchvision v0.5.0
PyTorch v1.5 - torchvision v0.6.0
PyTorch v1.6 - torchvision v0.7.0
PyTorch v1.7 - torchvision v0.8.1
安装命令为:

git clone --branch <version> https://github.com/pytorch/vision torchvision   # see below for version of torchvision to download
cd torchvision
export BUILD_VERSION=0.x.0  # where 0.x.0 is the torchvision version  
sudo python setup.py install     # use python3 if installing for Python 3.6
cd ../  # attempting to load torchvision from build dir will result in import error

具体对应pytorch1.7时:

git clone --branch v0.8.1 https://github.com/pytorch/vision torchvision   # see below for version of torchvision to download
cd torchvision
export BUILD_VERSION=0.8.1  # where 0.x.0 is the torchvision version  
sudo python setup.py install     # use python3 if installing for Python 3.6
cd ../  # attempting to load torchvision from build dir will result in import error

2.2 安装环境验证

要验证一下pytorch和torchvision是否安装成功,如下:
在这里插入图片描述
使用命令为如图4条:

import torch
print(torch.__version__)
print('cuda available:'+str(torch.cuda.is_available()))
print('cuDNN version:'+str(torch.backends.cudnn.version()))

到此,完成主流深度学习框架tensorflow和pytorch在jetson nano上的安装。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java核心(五)深入理解BIO、NIO、AIO

导读&#xff1a;本文你将获取到&#xff1a;同/异步 阻/非阻塞的性能区别&#xff1b;BIO、NIO、AIO 的区别&#xff1b;理解和实现 NIO 操作 Socket 时的多路复用&#xff1b;同时掌握 IO 最底层最核心的操作技巧。 BIO、NIO、AIO 的区别是什么&#xff1f; 同/异步、阻/非阻…

pyqt5让主窗口居中显示(显示在显示器的中间位置)

原文&#xff1a;https://blog.csdn.net/zzx188891020/article/details/105940024 课程重点&#xff1a; 就是让窗口居中显示 # QDesktopWidget import sys from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QApplication from PyQt5.QtGui import QIconclass Cente…

Basic4android v3.50 发布

这次发布的主要是debug 的增强。说实话&#xff0c;在这一方面B4a 比delphi做的要好。希望delphi 在新的版本里面 能进一步加强。 Im happy to release Basic4android v3.50. This update brings major improvements to the debugging features of Basic4android. With this up…

荔枝派 Nano 全志 F1C100s 编译运行 Linux ubuntu并升级gcc

首先是荔枝派的官方文档&#xff0c;写的不是很细&#xff0c;应当说我们必须明确几点&#xff1a; 出厂时 SPI Flash 自带了一个 U-BootLinux Kernel&#xff08;出厂的时候可能烧过了&#xff09;&#xff0c;可直接拿来用。如果希望自己烧固件&#xff0c;才需要后续步骤必…

Java提高班(六)反射和动态代理(JDK Proxy和Cglib)

反射和动态代理放有一定的相关性&#xff0c;但单纯的说动态代理是由反射机制实现的&#xff0c;其实是不够全面不准确的&#xff0c;动态代理是一种功能行为&#xff0c;而它的实现方法有很多。要怎么理解以上这句话&#xff0c;请看下文。 一、反射 反射机制是 Java 语言提…

C++ STL 四种智能指针

文章目录 0.前言1.unique_ptr2.auto_ptr3.shared_ptr 3.1 简介3.2 通过辅助类模拟实现 shared_ptr4.weak_ptr 4.1 简介4.2 用法4.3 作用5.如何选择智能指针参考文献0.前言 C 标准模板库 STL&#xff08;Standard Template Library&#xff09; 一共给我们提供了四种智能指针&…

快速傅里叶变换应用之二 hdu 4609 3-idiots

快速傅里叶变化有不同的应用场景&#xff0c;hdu4609就比较有意思。题目要求是给n个线段&#xff0c;随机从中选取三个&#xff0c;组成三角形的概率。 初始实在没发现这个怎么和FFT联系起来&#xff0c;后来看了下别人的题解才突然想起来&#xff1a;组合计数问题可以用多项式…

基于sympy的python实现三层BP神经网络算法

#!/usr/bin/python # -*- coding: utf-8 -*- """ 写一个三层的BP神经网络&#xff08;3&#xff0c;2&#xff0c;1&#xff09;,3是输入数据的维度&#xff0c;隐层设置节点数为2&#xff0c;1是因为每个观测的target都是一个标量即只有一个数&#xff1b; 1.随…

JVM(二)Java虚拟机组成详解

导读&#xff1a;详细而深入的总结&#xff0c;是对知识“豁然开朗”之后的“刻骨铭心”&#xff0c;想忘记都难。 Java虚拟机&#xff08;Java Virtual Machine&#xff09;下文简称jvm&#xff0c;上一篇我们对jvm有了大体的认识&#xff0c;进入本文之后我们将具体而详细的…

PyCharm pyqt5 python串口通信封装类SerialCommunication

""" pyqt5串口通信文件SerialCommunication.py """ import binascii import os import serial import serial.tools.list_ports from PyQt5.QtGui import QPixmap# 全局变量&#xff0c;串口是否创建成功标志 Ret False # 串口列表串口号 port_…

Fiddler利用Xposed框架+JustTrustMe抓取手机APP数据

文章目录 1. Xposed安装2. JustTrustMe安装3. 确保Fiddler在模拟器里配置 此文只是针对Fiddler抓取APP数据失败情况下的方案&#xff0c;主要想解决的是安卓手机APP抓包HTTPS报文通过MITM代理后证书不被信任的问题。网上搜索出这是使用了SSL Pinning技术&#xff0c;网上可以搜…

互动直播的视频录制与合成—支持多人离线重入

实现的效果图&#xff1a; 上图合成了2个人视频&#xff0c;中途有1个人先离开之后又重新加入了房间。 一、业务场景 业务场景是这样的&#xff1a;多个用户&#xff08;2-4人&#xff09;直播的视频&#xff0c;合成为一个视频&#xff0c;这期间要满足2个条件&#xff1a;首…

Python界面 PyQT可视化开发(python3+PyQt5+Qt Designer)

前言 以前制作一个Python窗体界面&#xff0c;我都是用GUI窗口视窗设计的模块Tkinter一点一点敲出来的&#xff0c;今天朋友问我有没有Python窗体的设计工具&#xff0c;“用鼠标拖拖”就能完成窗体设计&#xff0c;我查了查相关资料&#xff0c;果然有一款好用的工具——Qt De…

JVM(三)对象的生死判定和算法详解

好的文章是能把各个知识点&#xff0c;通过逻辑关系串连起来&#xff0c;让人豁然开朗的同时又记忆深刻。 导读&#xff1a;对象除了生死之外&#xff0c;还有其他状态吗&#xff1f;对象真正的死亡&#xff0c;难道只经历一次简单的判定&#xff1f;如何在垂死的边缘“拯救”一…

【STM32】修改芯片型号后报 Error 的解决方案

原文&#xff1a;https://blog.csdn.net/xiuhua_wu/article/details/85237418 背景 前几天有个新需求&#xff0c;使用 STM32 的标准库&#xff08;STD&#xff09;做个产品的例程。之前已经做了个 HAL 的&#xff0c;但人家客户不干&#xff0c;非要 STD 的。拖了一周&#xf…

Python手写神经网络实现3层感知机

一、BP神经网络结构模型 BP算法的基本思想是&#xff0c;学习过程由信号的正向传播和误差的反向传播俩个过程组成&#xff0c;输入从输入层输入&#xff0c;经隐层处理以后&#xff0c;传向输出层。如果输出层的实际输出和期望输出不符合&#xff0c;就进入误差的反向传…

JVM(四)垃圾回收的实现算法和执行细节

全文共 1890 个字&#xff0c;读完大约需要 6 分钟。 上一篇我们讲了垃圾标记的一些实现细节和经典算法&#xff0c;而本文将系统的讲解一下垃圾回收的经典算法&#xff0c;和Hotspot虚拟机执行垃圾回收的一些实现细节&#xff0c;比如安全点和安全区域等。 因为各个平台的虚拟…

python-cx_oracle报错“DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: “

问题的主要原因是python-cx_oracle加载的是32位的instantclient-basic&#xff0c;我们需要让他读到64位的。 弄清版本&#xff0c;最重要&#xff01;&#xff01;&#xff01; 首先安装配置时&#xff0c;必须把握一个点&#xff0c;就是版本一致&#xff01;包括&#xff1…

JVM(五)垃圾回收器的前世今生

全文共 2195 个字&#xff0c;读完大约需要 8 分钟。 如果垃圾回收的算法属于内存回收的方法论的话&#xff0c;那本文讨论的垃圾回收器就属于内存回收的具体实现。 因为不同的厂商&#xff08;IBM、Oracle&#xff09;&#xff0c;实现的垃圾回收器各不相同&#xff0c;而本文…

【SlowFast复现】SlowFast Networks for Video Recognition复现代码 使用自己的视频进行demo检测

目录 一&#xff0c;准备 1.1代码1.2 环境准备1.3 搭建镜像1.4 配置slowfast环境1.5 ava.json1.6 SLOWFAST_32x2_R101_50_50.yaml1.7 SLOWFAST_32x2_R101_50_50 .pkl二&#xff0c;代码运行三 错误解决复现过程视频&#xff1a;B站复现视频复现结果 一&#xff0c;准备 1.1代…