Jetson nano 之 ROS入门 - - 深度学习环境配置

news2024/9/20 14:31:17

文章目录

  • 前言
  • 一、Anaconda安装
  • 二、Pytorch 与 TensorFlow 环境配置
  • 三、TensorRT 推理引擎配置
  • 总结


前言

在这里插入图片描述

Jetson Nano是一款由NVIDIA推出的小型计算机,其性能优异、功耗低、体积小巧,非常适合用于嵌入式系统和边缘设备的深度学习应用。Jetson Nano搭载了NVIDIA的Tegra X1处理器,拥有4个ARM Cortex-A57 CPU核心和128个NVIDIA Maxwell GPU核心,可以提供高达472GFLOPS的运算能力,能够实现实时的深度学习推理。
Jetson Nano支持多种深度学习框架,如TensorFlow、PyTorch、Caffe和MXNet等,可以通过安装相应的软件包来进行深度学习模型训练和推理。Jetson Nano还提供了丰富的硬件接口,如GPIO、I2C、SPI、UART和CSI等,可以方便地连接各种传感器和执行器,实现智能化控制和数据采集。


一、Anaconda安装

在这里插入图片描述

首先安装Anaconda是为了解决一个环境冲突的问题,因为ROS的功能包都是基于Python2.7去开发的,而目前主流的深度学习框架都是基于Python3去开发的,不同的Python版本间会导致兼容性问题引来一堆报错,所以最好的解决办法是在Anaconda里面创建一个Python3的虚拟环境,里面运行深度学习的主流框架,这样才不会和ROS冲突

有很多博客说需要先安装ROS,再安装Anaconda,刚好我也是先安装了ROS Melodic,还没装Anaconda3

Anaconda的官网:https://www.anaconda.com/products/individual
其他版本:https://repo.anaconda.com/archive/

下载Anaconda3-2022.05-Linux-aarch64.sh,下载到的目录为/home/nvidia/,在此目录下打开终端,运行.sh文件

bash Anaconda3-2022.05-Linux-aarch64.sh

接下来就是一路回车确认,遇到需要 yes/no 的地方选择 yes。安装完成后,编辑 ~/.bashrc里面配置conda的环境变量,在 ~/.bashrc 文件后面加入下面的东西

sudo vim ~/.bashrc

在这里插入图片描述
再source一下环境变量

source ~/.bashrc

打开终端,检查conda版本,如果成功显示conda版本信息,就说明Anaconda已经安装好了

conda --version

但是这样的话会和ROS冲突,因为Anaconda3也是基于Python3的开发环境,所以还要把之前在~/.bashrc 文件里面配置的注释掉

sudo vim ~/.bashrc

在这里插入图片描述

source ~/.bashrc

重新打开终端,然后启动Anaconda3环境,查看Python版本,不管在终端输入Python和Python3的版本,环境里只会出现Python3版本号,这个虚拟环境不会受到Python2.7的影响

source ~/anaconda3/bin/activate

运行下面命令可以关闭Anaconda虚拟环境

conda deactivate

二、Pytorch 与 TensorFlow 环境配置

在这里插入图片描述

TensorFlow和PyTorch都是目前非常流行的深度学习框架,它们都提供了丰富的工具和API来帮助开发者快速构建、训练和部署深度学习模型。

TensorFlow是由Google开发的开源深度学习框架,它具有广泛的应用和社区支持。TensorFlow主要基于静态计算图的方式进行计算,可以在多个设备上进行分布式计算,支持GPU加速,使得它非常适合大规模的深度学习任务。TensorFlow还提供了高级API,如Keras,以及可视化工具TensorBoard等,使得模型的构建和调试变得更加简单。

PyTorch是由Facebook开发的开源深度学习框架,它是一种动态计算图框架,可以更加灵活地构建和调试深度学习模型。PyTorch也支持GPU加速和分布式计算,并且提供了许多高级API和工具,如torchvision和torchaudio等,使得模型的构建和训练变得更加简单。

相比之下,TensorFlow更适合于大规模的深度学习任务,例如图像分类和自然语言处理。而PyTorch则更适合于研究型的深度学习任务,例如新模型的探索和实验。

首先安装TensorFlow之前,要先创建一个Python3的虚拟环境,打开终端

conda create -n mydl python=3.6

激活刚刚创建的虚拟环境

conda activate mydl

按照英伟达官方教程来,我的Jetson Nano 的 JetPack版本为4.6.3,Python版本为3.6,先安装一些工具和依赖项
https://forums.developer.nvidia.com/t/official-tensorflow-for-jetson-agx-xavier/65523

pip3 install -U pip testresources setuptools

安装numpy、keras等常用的数据分析、机器学习库

pip3 install -U numpy==1.19.4 future mock keras_preprocessing keras_applications gast==0.2.1 protobuf pybind11 cython pkgconfig packaging

从英伟达官网下载优化过的TensorFlow框架

pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v461 tensorflow

接着创建Pytorch环境(1.10版本)

conda install pytorch torchvision cudatoolkit=10.2 -c pytorch

安装好后,测试一下有没有安装成功,在终端打开python3输入界面

python3

导入tensorflow包,如果没有报错那就说明tensorflow安装成功

import tensorflow as tf

导入pytorch包,如果没有报错那就说明pytorch安装成功

import torch
import torchvision

# 该指令显示pytorch版本
print(torch.__version__)

# 若cuda已安装,将显示true
torch.cuda.is_available()

若cuda已安装且配置好,将显示true

三、TensorRT 推理引擎配置

在这里插入图片描述
NVIDIA TensorRT是一种深度学习推理引擎,可优化和加速用于生产环境的深度学习推理应用程序。它使用深度学习模型优化和加速推理,从而提高模型的推理性能和效率。

TensorRT可以自动分析深度学习模型,并对其进行优化,以提高推理性能。这些优化包括网络剪枝、层融合、内存优化和精度混合等技术。此外,TensorRT还支持将深度学习模型转换为高度优化的TensorRT引擎格式,以便在生产环境中进行部署。

TensorRT还提供了一组用于编程和性能调优的API,以及与TensorFlow、Caffe和ONNX等流行的深度学习框架的集成。TensorRT优化后的模型可以实现更快的推理速度,减少延迟,提高吞吐量;TensorRT自动进行优化和加速的过程,减少了手动优化的工作量和时间;TensorRT具有高度可靠性和稳定性,已经被广泛应用于各种计算机视觉和自然语言处理应用程序中;TensorRT提供了易于使用的API和集成,以便开发人员轻松地将其应用于现有的深度学习应用程序中。

Jetson Nano的官方文档中给我们推荐了二个例子,其中一个使用Tensor RT做物品识别的例子。具体的可以参考英伟达jetson-inference例子。存放这些模型的服务器被墙了,所以只能将之前下载好的包远程传输到对应的下载目录下。
首先如果您没有安装git和cmake,先安装它们

sudo apt-get install git cmake

接着从git上克隆jetson-inference 库

git clone https://github.com/dusty-nv/jetson-inference

进入文件夹jetson-inference

cd jetson-inference

这里我没有用科学上网的方式下载模型,我直接把模型远程传入Jetson Nano。操作如下:
1)编辑jetson-inference/CMakePrebuild.sh。把./download-models.sh注释掉,(前面加个#注释)

在这里插入图片描述
2)把模型远程传输到data/networks目录

新建build文件夹,用来存放编译文件

mkdir build    #创建build文件夹

进入文件夹

cd build       #进入build

运行cmake

cmake ../      #运行cmake,它会自动执行上一级目录下面的 CMakePrebuild.sh

然后在此目录执行解压:

for tar in *.tar.gz; do tar xvf $tar; done

cmake成功后,就需要编译了,进入build文件夹

cd jetson-inference/build	

开始编译

make (或者make -j4)    //注意:(在build目录下)
// 这里的 make 不用 sudo
// 后面 -j4 使用 4 个 CPU 核同时编译,缩短时间

如果编译成功,会生成下列文件夹结构
在这里插入图片描述
开始测试,测试图像识别结果

cd jetson-inference/build/aarch64/bin

导入图片进行识别

./imagenet-console ./images/bird_0.jpg output_wyk.jpg

总结

以上就是本篇笔记的全部内容。深度学习是当今最热门的技术之一,已经被广泛应用于计算机视觉、自然语言处理、语音识别等领域。在深度学习应用中,通常需要大量的计算资源和算法支持,这就需要配置适当的深度学习环境。

深度学习环境的配置包括安装各种深度学习框架、GPU驱动程序、CUDA和cuDNN等库和工具。正确配置深度学习环境可以使得深度学习算法的开发和调试变得更加方便和高效。同时,在使用GPU加速深度学习时,合适的深度学习环境也可以提高计算速度和资源利用率,加快算法的训练和推理速度。

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

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

相关文章

【Git原理与使用】-- 基本操作

目录 添加文件 查看objects中的文件 小结 修改文件 版本回退 回退的回退 小结 撤销修改 情况一:对于工作区的代码,还没有 add 情况二:已经 add ,但没有 commit 情况三:已经 add ,并且也 commit …

Cordic IP核使用说明以及避坑记录

Cordic IP核使用说明以及避坑记录 参考文章:(140条消息) Vivado cordic IP核rotate和translate使用详解(附有代码)_cordic ip核 rotate_迎风打盹儿的博客-CSDN博客 (140条消息) VIVADO cordic IP核_卡布奇诺加勺糖的博客-CSDN博客 文章目录 Cordic IP核使用说明以及…

面试题:推排序是一种稳定排序吗?

面试题:推排序是一种稳定排序吗? 在回答该问题前,首先需要了解什么是稳定排序。 稳定性就是指对于两个关键字相等的记录,它们在序列中的相对位置,在排序之前和排序之后没有发生改变。通俗地讲就是有两个关键字相等的…

Node.js---菜鸟教程

文章目录 创建第一个应用创建 Node.js 应用 NPM 使用介绍使用 npm 命令安装模块本地安装使用 package.json模块的操作 回调函数阻塞代码实例非阻塞代码 事件循环事件驱动程序 EventEmitterEventEmitter 类方法实例error 事件继承 EventEmitter Buffer(缓冲区&#x…

Redis-缓存

新增或者更新数据时,创建以后顺便存到redis中去【维护缓存】 获取的时候先从redis缓存中拿数据 如果拿数据的时候为空,则到数据库中拿数据,后再存到redis缓存中去 大量的商品【包括冷门商品】都进行上面的缓存,那么就很耗内存 针对每个数据进行缓存的时候 维护一个过期时间…

MQTT(一)

MQTT(一) 1.背景 学习目标:经过了解,Netty占用服务器资源内存大、远距离传感器在极端条件下数据处理兼容较差(网络条件差,需要反复重连等)。从同行业了解到,现在主流工业传输使用M…

【博学谷学习记录】超强总结,用心分享 | 架构师 zabbix学习总结

文章目录 一、介绍zabbix zabbix专有词汇 二、zabbix zabbix实践修改zabbix zabbix语⾔服务器可视化指标解决zabbix zabbix乱码问题查看监控内容可视化监控agent agent的cpu cpu动态查看模板--监控项⾃定义监控项语法 一、介绍 Zabbix 是由 Alexei Vladishev 开发的⼀种⽹络监…

达梦数据库介绍

文章目录 前言一、达梦数据库的定位二、达梦有哪些工具1、达梦管理工具2、达梦数据迁移工具3、 达梦数据库配置助手4、其它工具 三、Linux下的工具1、数据库初始化工具2、数据库迁移工具3、其它工具 四、其它连接工具总结 前言 近几年由于各种原因,国内开启了一波国…

【Android】-- 如何对APP版本控制/更新?

目录 一、 前提准备 1、获取服务器 2、使用工具操作云服务器 二、Json格式网页 三、创建file_paths.xml及修改AndroidManifest.xml 四、在java代码加入更新检测代码 效果如图: 可以强制更新和非强制更新,和浏览器下载安装包。 一、 前提准备 1、获取…

0001-TIPS-2020-hxp-kernel-rop : ret2user

目的 理解系统调用的过程:从用户态进入内核态,再从内核态返回用户态。细节见文末的参考了解一般性提权方法commit_creds(prepare_kernel_cred (0)); 环境搭建 下载 pwn 2020-kernel-rop wget https://2020.ctf.link/assets/files/kernel-rop-bf9c106…

说精神力量的词,愿力很神奇

说精神力量的词,愿力最神奇! ​愿力,心力,精神,精 气 神,气 ,能量 【能量】是个外来词 趣讲大白话:200天了,布道的愿力推动我 【趣讲信息科技200期】 ******************…

【换根DP】生活在树上

换根DP板子题 D-生活在树上_牛客小白月赛46 (nowcoder.com) 题意: 思路: 看数据范围是1e6且是统计问题,求的是对于每一个点的统计问题,那就逃不出是换根DP了 首先dfs1一次把树形DP求出来,然后再考虑换根 设dp[u]…

Wireshark抓包分析(ARP TCP DNS HTTP)

目录 一、ARP 二、DNS 三、TCP TCP的总过程: ​TCP三次握手: TCP四次挥手: 四、HTTP 一、ARP 1.ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。 我们要抓ARP 同网段内…

(学习日记)2023.06.15

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

0003-TIPS-2020-hxp-kernel-rop : bypass-KPTI-with-trampoline

KPTI KPTI描述内容摘录自ctf wiki KPTI 机制最初的主要目的是为了缓解 KASLR 的绕过以及 CPU 侧信道攻击。 在 KPTI 机制中,内核态空间的内存和用户态空间的内存的隔离进一步得到了增强。 内核态中的页表包括用户空间内存的页表和内核空间内存的页表。 用户态的页…

minikube 试炼

点我进入 minikube 试炼 今天我们先来尝试使用一下 minikube ,可以进入到 https://kubernetes.io/zh/docs/tutorials/hello-minikube/ 页面上直接感受,或者通过如下指令,将 minikube 放入我们的服务器上面进行使用 简单安装 minikube Linu…

在Centos Stream 9上Docker的实操教程(六) - Docker Compose容器编排详解

在Centos Stream 9上Docker的实操教程 - Docker Compose容器编排详解 前言什么是Docker-Compose下载安装和卸载使用仓库安装手动安装卸载 docker compose常用命令项目实战构建SpringBoot项目编写Dockerfile文件编写Docker-Compose.yml文件 运行测试相关注意事项结语 前言 在了…

使用Pyinstall将PyQT5工程打包成.exe应用程序(包含图标一同打包)

1.首先安装pyinstaller。 pip install pyinstaller 2.PyQT5制作程序中使用到的ico等一系列图标文件&#xff0c;要先经过.qrc文件转成.py文件后&#xff0c;才可跟随打包文件一同打包。 首先创建一个.qrc文件&#xff0c;将图片文件全部写进去&#xff0c;例如: <RCC>&…

selenium 调用本地浏览器插件

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!selenium 使用本地浏览器插件 环境 win10Python3.9selenium 4.10查看chrome配置文件路径 地址栏输入 ​​…

Python 请求分页

文章目录 什么是 Python 中的分页带有下一个按钮的 Python 分页没有下一个按钮的 Python 分页无限滚动的 Python 分页带有加载更多按钮的分页 在本文中&#xff0c;我们将了解分页以及如何克服 Python 中与分页相关的问题。 读完本文后&#xff0c;我们将能够了解 Python 分页以…