NVIDIA Jetson Xavier NX 实现官方Jeston-inference深度学习样例

2023-05-16

一、jetson-inference相关项目组件的下载

首先附上官方提供的jetson_inference项目文件的Github仓库地址,大家可以自行前往下载
jetson-inference下载地址:https://github.com/dusty-nv/jetson-inference
另外,在该地址下包含详细的官方关于这个项目文件的相关介绍和使用方法,大家如果觉得我说的啰嗦,可直接前往该地址一步一步的安装调试。
还要多说一点的是,很多人也会选择直接在终端执行git操作进行克隆jetson-inference repo。但是因为同样的某些原因,我直接git操作,下载极其缓慢而且还会中断好多次,导致下载失败,所以我是选择自己单独将整个jetson-inference项目下载到本地进行解压。在这里给大家推荐一个可以加速下载GitHub上面文件(尤其是大文件)的方法----“码云”----,直接将要下载的GitHub文件fork到自己的仓库下,然后进入码云网站登录账号选择导入仓库,然后进行下载,可以到达正常的网线带宽下载速度,具体的操作流程大家可以去找一下相关的教程,总体来说操作还是比较简单的。

二、编译

1、在编译jetson-inference项目时需要用到 cmake,请确认系统上已安装 gitcmake,或者执行以下指令:

sudo apt install -y git cmake

之前提前下载好的此步可省略)然后将 git 的代码复制一份到设备上

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

2、接着进入该jetson-inference目录并取得代码更新版本

cd jetson-inference
git submodule update --init

3、然后创建build目录并进入,然后cmake

mkdir build 
cd build
cmake ../

此时,按步骤执行到这一步的时候,问题就来了,由于这里的 cmake 会调用 CMakePreBuild.sh去下载很多预训练好的模型,但这些模型放在 nvidia.app.box.com 上面,同样的因为某些原因,我们下载这些东西会失败,在这里提供两种解决办法
PLAN A
预先将相应的与预训练模型提前下载好,并放入到jetson-inference/data/networks目录下,同时将jetson-inference目录下的CMakePreBuild.sh里的关于下载模型 model downloader注释掉即可。关于下载预训练模型的方式,官方虽然想到了我们国内的原因给了我们镜像下载方式,链接如下:
https://github.com/dusty-nv/jetson-inference/releases
但是无解的是,仍然无法下载,所以我只能到处搜集了一些科学上网人士自己下载下来并贡献出来的模型文件,在此我也分享出来,但是模型文件并不是很全,就当给大家做一个参考吧,某盘下载链接如下:

链接:https://pan.baidu.com/s/1kjA4zj43szttZWkhDTMP6Q 
提取码:kwhw

PLAN B
针对某些原因我们不能直接下载官网模型的问题,有一些服务支持做的比较好的某宝Jetson板卡销售商家,会为购买过板卡的客户提供他们自己搭建的国内镜像下载网站,可以完美下载安装,我就是通过这种方式搞定的,简直爽歪歪,但是我也不好给大家公布出来,大家还是自己找找资源吧。

如果以上环境配置正确的话,cmake最后会出现下图最后一行“Build files have been written to: xxxxx/build” 的信息,否则就会出现错误信息。如果出现错误,建议把 build 目录产生的内容全部清空(在 build 目录下执行 rm -rf *),然后重新 cmake …/
在这里插入图片描述
4、接着就可以继续往下执行

# 这里的 make 不用 sudo  ,后面 -j4 使用 4 个 CPU 核同时编译,缩短时间
make -j4

5、如果编译正确的话,就可以继续往下执行

# 这里 make install 因为要写入系统目录去,因此需要 sudo
sudo make install
sudo ldconfig

如果以上的各部分编译都正确的话,在jetson-inference/build/aarch64目录下的文件结构如下

|-build
   \aarch64
      \bin             where the sample binaries are built to
         \networks     where the network models are stored
         \images       where the test images are stored
      \include         where the headers reside
      \lib             where the libraries are build to

到此,整个的jetson-inference就算完美的配置完成了。

三、测试

在这里我以image recognition做详细的步骤介绍,其他的Object Detection、Semantic Segmentation都与此类似,操作步骤不做详细介绍。
1、图片检测
首先,必须确保你的终端是在aarch64/bin目录下打开的,否则你需要切换到该目录下

cd jetson-inference/build/aarch64/bin

接着,官方为大家提供了C++版和python版的操作样例,针对想要使用不同的版本的终端输入指令如下
C++版:

./imagenet-console --network=googlenet images/orange_0.jpg output_0.jpg     # --network flag is optional

python版:

./imagenet-console.py --network=googlenet images/orange_0.jpg output_0.jpg  # --network flag is optional

这里默认调用的网络模型是 googlenet,如果想要换成其他的模型,需要更改指令中开始部分的imagenetdetectnet或者segnet,以及其后包含的的--network=后的网络名称即可(前提是你已经下载好这些模型),官方样例给出的一些image recognition预训练模型如下
在这里插入图片描述
Object Detection的一些预训练模型如下
在这里插入图片描述
Semantic Segmentation的一些预训练模型如下
在这里插入图片描述
此外,输入要检测的图片也可根据自己想法进行更改,不做更多说明。另外当你第一次运行上述指令的时候,TensorRT需要花费一些时间对网络进行优化,因此整个执行过程可能时间比较长,之后再执行的时候时间相对会比较短,我们可以在bin目录下查看输出的结果图片。在这里插入图片描述在这里插入图片描述
2、摄像头实时视频检测
在进行视频检测之前,需要确定一下自己的视频输入的方式,是通过USB视频输入还是MIPI CSI的输入方式,还要通过以下指令确定一下摄像头的设备号

ls /dev/video*

另外还要了解以下视频输入的分辨率大小,通过安装V4L2可以确定USB摄像头的视频输入参数,终端输入指令如下

sudo apt-get install v4l-utils

终端输入以下指令即可看到摄像头输入视频的相关信息

v4l2-ctl --list-formats-ext

在这里插入图片描述
接着,类似检测图片一样的操作,官方也为大家提供了C++版和python版的操作样例,针对想要使用不同的版本的终端输入指令如下
C++版:

./imagenet-camera --network=resnet-18 --camera=/dev/video0 --width=640 --height=480  

python版:

./imagenet-camera.py --network=resnet-18 --camera=/dev/video0 --width=640 --height=480  

默认情况下是使用的googlenet,输出的分辨率默认情况下,USB摄像头为640x480,MIPI CSI为1280x720。指令后面的参数也可以根据自己的情况进行更改。
在这里插入图片描述
最后,给大家附上,python代码脚本完美运行ssd_mobilenet_v2进行实时视频检测

import jetson.inference
import jetson.utils

net = jetson.inference.detectNet("ssd-mobilenet-v2",threshold=0.5)
camera = jetson.utils.gstCamera(640,480,"/dev/video0")
display = jetson.utils.glDisplay()

while display.IsOpen():
	img,width,height = camera.CaptureRGBA()
	detections = net.Detect(img,width,height)
	display.RenderOnce(img,width,height)
	display.SetTitle("Obeject Detection | Network {:.0f} FPS".format(net.GetNetworkFPS()))

直接在终端执行 python3 my_object_detection #后面为脚本文件名 即可运行。
到此,这个官方的jeston-inference算时介绍完了,大家可以根据自己的情况做进一步的探索。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NVIDIA Jetson Xavier NX 实现官方Jeston-inference深度学习样例 的相关文章

  • [转] 用WWW-Authenticate实现登录验证

    用WWW Authenticate实现登录验证 文章来源 xff1a http www keakon cn bbs thread 1989 1 1 html 今天在研究HTTP协议时发现一个叫WWW Authenticate的头字段 xff
  • ROS--坐标理解

    北东地坐标系 NED north east down 东北天 ENU east north up 机体坐标系 body frame 载体坐标系 是以载体为中心 xff0c 主要作用是处理与传感器直接测得的物理量 导航坐标系 可以是地固坐标系
  • qt 编译qgc常见问题

    qt LINK warning LNK4098 默认库 MSVCRT 与其他库的使用冲突 xff1b 请使用 NODEFAU 如果以前没有问题 xff0c 突然出现的这个问题 xff0c 绝大可能是中间编译过程太多造成的 清理项目 重新构建
  • VINS-FUSION-GPU在jetson nx上的实现

    需要安装经过修改的Ubuntu18系统 https span class token operator span span class token comment developer nvidia com zh cn embedded do
  • 主机ping通虚拟机,虚拟机ping通主机解决方法(NAT模式)

    主机ping通虚拟机 xff0c 虚拟机ping通主机解决方法 xff08 NAT模式 xff09 有时候需要用虚拟机和宿主机模拟做数据交互 xff0c ping不通是件很烦人的事 xff0c 本文以net模式解决这一问题 宿主机系统 xf
  • 一个基于Matlab的简单Gui设计

    前几日浩子说要编一个基于Matlab的用户图像界面 xff0c 他用GUIDE搭了一个大概的框架 xff0c 大概要实现数据读入 做图分析 图像清除 关闭界面的功能 xff0c 我用函数形式给改编了一个 xff0c 虽然问题比较简单 xff
  • 关于N步相移中相位噪声仿真分析的一点说明

    在条纹投影的三维测量中 xff0c 有这么一个经典的结论 xff1a 假设光强的噪声为方差为 2 xff0c 那么 xff0c 经过N步标准相移求得的相位的方差为2 2 N B 2 xff08 xff09 xff0c 其中 xff0c B为
  • 如何给MFC对话框添加背景图片

    一 创建项目 文件 新建项目 MFC应用程序 该页面使用 基于对话框 完成即可 注意 取消 使用Unicode库 否则在使用AfxMessageBox会报错 xff0c 没有一个可以转换的参数类型 xff0c 要加AfxMessageBox
  • 如何检测应用程序调用了哪些DLL文件?

    之前所用的检测工具是Dllshow xff0c 后来突然不能用了 xff0c VS以前有Depends xff0c 后来高级版本也没了 最近找到一种简单方便的方法 xff0c 利用windowsx系统自带的功能 运行你想知道的应用程序 xf
  • 网络编程懒人入门(一):快速理解网络通信协议(上篇)

    1 写在前面 论坛和群里常会有技术同行打算自已开发IM或者消息推送系统 xff0c 很多时候连基本的网络编程理论 xff08 如网络协议等 xff09 都不了解 xff0c 就贸然定方案 写代码 xff0c 显得非常盲目且充满技术风险 即时
  • Matlab中调用C++dll

    利用mex技术可以实现这个功能 xff0c 但是必须例外写一个接口函数 xff0c 比较麻烦 利用dll调用的方法 xff0c 简单方便 下面就以实现加法函数add 为例 xff0c 来详细介绍具体过程 一 利用VS生成dll文件 利用VS
  • 大小端序与端序转换

    最近在做客户项目的时候 xff0c 遇到了不同厂家的安防相机输出的数据大小端序不一致的情况 xff0c 导致在使用同一种方式处理时 xff0c 出现了错误 虽然问题已经解决 xff0c 还是顺手把大小端序的知识简单梳理一下 1 大端序和小端
  • debian ware source

    deb http ftp cn debian org debian jessie main non free contrib deb http ftp cn debian org debian jessie proposed updates
  • debian中文输入法——拼音和五笔的解决方法

    最近安装Debian操作系统 xff0c 但遇到一个重大的困惑 xff0c 那就是为什么Debian菜单里面有一个Fcitx的选项 xff0c 但是为什么就是无法调出前端来实现输入 xff0c 这是个大问题 xff0c 于是就研究 xff0
  • YOLOv5图像分割中的NMS处理

    在上一篇文章YOLOv5图像分割 SegmentationModel类代码详解有讲到图像经过YOLOv5网络后得到的输出形式 xff0c 主要是调用了BaseModel类下的forward得到的输出 xff0c 输出的shape为 batc
  • YOLO之trt推理+Diou/iou目标跟踪以及计数【附代码】

    本篇文章是对之前YOLOv4 tensorrt推理项目的更新 xff0c 在trt推理 xff0c 多进程语音报警的功能中又新添加了目标跟踪 可用于目标计数 采用IOU进行跟踪 也可以选用DIOU yolov4 43 deepsort可以参
  • yolov5_reid【附代码,行人重识别,可做跨视频人员检测】

    该项目利用yolov5 43 reid实现的行人重识别功能 xff0c 可做跨视频人员检测 应用场景 xff1a 可根据行人的穿着 体貌等特征在视频中进行检索 xff0c 可以把这个人在各个不同摄像头出现时检测出来 可应用于犯罪嫌疑人检索
  • src目录和项目路径的联系

    code src目录里面的东西会被eclipse编译 xff0c 编译完了就放到了 bin目录下 xff0c 而bin目录就是我们项目的classPath code
  • 逆向加固分析

    34 libsecexe so 34 34 梆梆加固免费版 34 34 libsecmain so 34 34 梆梆加固免费版 34 34 libSecShell so 34 34 梆梆加固免费版 34 34 secData0 jar 34
  • android之visibility的三个属性

    android visibility 61 34 34 其有三个属性 xff1a visible显示 xff1b invisible显示黑背景条 xff0c 在这种情况下它会占据空间 xff1b gone不显示 在类中 xff0c 可以设置

随机推荐

  • android中的Application类

    在2011年做的一个iptv项目中就接触了这个Application类 xff0c 虽用起来简单 xff0c 但还是有些需要注意的地方 空闲之余 xff0c 总结如下 xff1a android 系统为每个程序运行时创建一个Applicat
  • android混淆

    首先要说的话 xff1a 本文是对好几个博文的摘录再加上我自己的理解 xff0c 以尊重原创为原则 xff0c 下面贴出相关博文的链接 Android有效地减少方法数 http blog csdn net lihenair article
  • ROS通信

    1 话题通信 话题通信是ROS中使用频率最高的一种通信模式 xff0c 话题通信是基于发布订阅模式的 xff0c 也即 一个节点发布消息 xff0c 另一个节点订阅该消息 用于不断更新的 少逻辑处理的数据传输场景 ROS Master 管理
  • 解决C&C++头文件互相包含问题

    案例说明 xff1a test1中需要调用test2中的go test2 xff0c test2中需要调用test1中的go test1 main cpp span class token macro property span class
  • C++类库开发详解

    前言 xff1a 这是一篇总结性的文章 xff0c 需要有一点C 43 43 和dll基本知识的基础 xff0c 在网上查阅了很多资料感觉没有一篇详细 具体 全面的dll开发介绍 xff0c 我这是根据最近项目和网上资料整理出来的 xff0
  • ROS下建立工作空间以及编译一个包

    在ROS层面上编写软件 xff0c 需要有相关的工作空间 xff08 workspace xff09 生成工作控件并不复杂 xff0c 首先 xff0c 我们打开一个控制台 xff08 Ctrl 43 Alt 43 T xff09 xff0
  • python socket小结

    Python socket 简单编程小结 首先创建服务器端的socket socket server import socket 定义变量 HOST 61 34 localhost 34 PORT 61 是数字类型 xff0c 不是字符串类
  • STM32 IO口模拟I2C+驱动MPU6050

    一年前写的博客 xff0c 没有把驱动代码分享出来是我疏忽了 xff0c 可以到网盘下载驱动代码 链接 xff1a https pan baidu com s 1SDVQfyoOoycCY 6eSXamlQ 密码 xff1a ipj7 之后
  • git常用操作(branch tag)

    git日常总结 1 初次在本地下载分支代码操作2 初次下载远程代码3 创建分支3 1 创建本地分支3 2创建远程分支 4 删除分支4 1 删除本地分支4 2删除远程分支 5 删除文件5 1 删除本地文件5 2 删除远程文件 6 删除提交6
  • openwrt出现md5sum mismatch错误

    原文地址 xff1a http catinmay com openwrt E5 87 BA E7 8E B0md5sum mismatch E9 94 99 E8 AF AF 刚刚帮人搞路由器一运行安装命令就会出现此错误 xff0c 错误提
  • python——系统交互subprocess

    目录 一 os与commands模块 1 os system 函数实例 2 os popen 函数实例 3 commands getstatusoutput 函数实例 二 subprocess模块 1 subprocess模块中的常用函数
  • strcat 你真的懂吗?

    http blog chinaunix net uid 26914516 id 4215338 html 声明 xff1a 使用GCC编译 strcat xff08 连接两字符串 xff09 函数定义 xff1a char strcat c
  • HTTP超全详解

    HTTP协议简介 超文本传输协议 xff08 英文 xff1a HyperText Transfer Protocol xff0c 缩写 xff1a HTTP xff09 是一种用于分布式 协作式和超媒体信息系统的应用层协议 HTTP是一个
  • 【Linux】三次握手和四次挥手详解

    三次握手和四次挥手 TCP 协议提供的是 xff1a 面向连接 可靠的 字节流服务 使用 TCP 协议通信的双发必须先建立连接 xff0c 然后才能开始数据的读写 双方都必须为该连接分配必要的内核资源 xff0c 以管理连接的状态和连接上数
  • Sion 450行的c++ HttpClient

    Sion Sion是一个轻量级的c 43 43 http客户端 xff0c 仅单头文件450行 xff0c 自带std string的扩展Sion is a lightweight C 43 43 HTTP Client with only
  • bluerov软件调试教程(一 )

    bluerov是目前最流行的一款消费级ROV xff0c 其架构简单 xff0c 可操作性强 xff0c 比同类型的ROV体验感要高很多 xff0c 本系列教程将从bluerov的软件调试 xff0c 硬件调试 xff0c 装舱等三个方面去
  • 安装完成Ubuntu20.04之后要做的事:基础配置、界面美化、异常处理与常用软件的安装

    文章目录 一 换源1 1 通过软件更新1 2 通过修改源文件 二 安裝显卡驱动2 1 解决显卡驱动安装的错误 三 设置新建文件模板四 卸载系统软件五 安裝中文输入法5 1 安装5 2 解决键盘短暂失灵和延迟的问题 六 双系统时间同步七 修改
  • 【C++】Windows客户端与Ubuntu服务器基于socket的简易网络编程

    C 43 43 Windows客户端与Ubuntu服务器基于socket的简易网络编程 服务器端 本人使用的clion远程连接的ubuntu服务器来运行以下代码 xff0c 理论上也可以直接放在服务器上 创建项目后 xff0c 先运行以下代
  • Python中pyusb的开发及使用

    Python中pyusb的开发及使用 因为项目的需求 xff0c 需要将FPGA端的图像像素数据经过USB2 0协议传输到PC端 xff0c 因此需要使用python的pyusb库来进行数据的发送和接收 以下纪录在使用pyusb库的方法和所
  • NVIDIA Jetson Xavier NX 实现官方Jeston-inference深度学习样例

    一 jetson inference相关项目组件的下载 首先附上官方提供的jetson inference项目文件的Github仓库地址 xff0c 大家可以自行前往下载 jetson inference下载地址 xff1a https g