JetSon Orin Nano与Deepstream开荒

Jetson Orin NANO官网资料网址: https://www.yahboom.com/study/Jetson-Orin-Nano 密码:lguu

主机初始账号:jetson

初始密码:yahboom

一. 硬件

购买Jetson Orin Nano 8g版本,组装亚克力外壳(已完成),组装视频:

https://www.yahboom.com/study_module/NX-shell

1.1 固态256g

出厂镜像要压缩烧录导致固态硬盘没有显示实际的256g,需要安装后扩容。

扩充固态硬盘使用gparted软件,resize设置(已完成)。

1.2 摄像头

摄像头分三种,板载摄像头、usb摄像头、安防摄像头(网线连接),均连接成功且通过Deepstream测试。其中安防摄像头直连失败,可通过内网交换机连接。

赠送板载摄像头,通过引脚安装比较麻烦,请勿拆卸。

1.3 远程连接

远程桌面通过nomachine或vnc连接(需要dp接口接入显示器才可使用),但是北京内网网速慢导致分辨率、稳定性效果不好,建议显示器直连。

另外,可通过ssh连接,ifconfig查看内网ip后,使用账号密码登录,端口号默认22。

二. 软件

主板为亚博Sub版,出厂已安装相关深度学习框架,包括opencv、deepstream、pytorch、TensorRT、cuda、cudnn、jupyter lab等,文章开头的网址提供了很多应用示例,可直接运行。

请勿修改本机环境,因为后续需要购买多台部署,每台都修改环境会比较麻烦,尽量在现有环境下部署。

常用命令


2.1 Deepstream

Deepstream是一个基于 GStreamer 的完整流分析工具包,支持完整的视频流编解码、分析、推理流程,只需要通过配置文件配置或者python\c++的api配置。

开发文档找到6.2版本https://docs.nvidia.com/metropolis/index.html

https://docs.nvidia.com/metropolis/deepstream/6.2/dev-guide/index.html

C++ api(6.2版本)

https://docs.nvidia.com/metropolis/deepstream-nvaie31/sdk-api/index.html

Python api(6.2版本)

https://docs.nvidia.com/metropolis/deepstream-nvaie31/python-api/index.html

可以通过英伟达在线研讨会了解下deepstream:

https://www.nvidia.cn/webinars/sessions/?session_id=220715-24020-3

bilibili介绍视频:

https://www.bilibili.com/video/BV1p5411J7f2/?spm_id_from=333.337.search-card.all.click&vd_source=a4b42da3a54c7fbb87c2f9755d8c63ea

youtube优化方法:

https://www.youtube.com/watch?v=Or8vfydL69s

官方文档https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Quickstart.html

作为初学者,建议先学习配置文件设置,然后通过配置文件,直接运行deepstream。

2.2 deepstream-yolo

网上有各种现成的配置文件示例,deepstream源码中也有一些。因为我们用来部署yolo模型,可以直接使用deepstream-yolo这个代码库中的配置文件。单路测试识别框上显示标签,多路测试不显示,可能需要修改源码。

https://github.com/marcoslucianops/DeepStream-Yolo

通过亚博给出的教程23可以直接跑通,可以先熟悉一下。但是jetson自带的deepstream-yolo(cd ~/DeepStream-Yolo目录)比较老,可以下载最新的库(cd ~/inspur/helmet/DeepStream-Yolo)。下面为一些示例,建议测试前先把两个目录下的文件备份至本地。

yolov8参考教程:https://github.com/marcoslucianops/DeepStream-Yolo/blob/master/docs/YOLOv8.md

整个模型搭建部署流程为:

  1. 标注
  2. 训练
  3. pt转onnx

pt转onnx需要安装以下几个包,但是jetson安装onnxsim失败,所以这一步建议在自己电脑上操作。

环境安装完成后,将DeepStream-Yolo/utils里的export_yoloV8.py 拷贝到 ultralytics目录下。(yolov5同理,export_yoloV5.py拷贝到yolov5目录下)

  1. 通过sftp传输将onnx拷贝至jetson上deepstream-yolo目录下
  2. 修改deepstream配置文件
  3. 运行deepstream
  4. vlc测试视频流

1-4步在自己主机上操作,5-6步在jetson操作。

其中,第5步展开说,deepstream配置文件有三个,主配置文件deepstream_app_config.txt,配置deepstream整个处理流程,模型配置文件config_infer_primary_yoloV8.txt,配置模型;标签配置文件labels.txt。

主配置文件deepstream_app_config.txt,参考链接

https://blog.csdn.net/u013963960/article/details/129032242

https://blog.csdn.net/Yan_uuu/article/details/127389866

https://blog.csdn.net/weixin_38369492/article/details/104859567

模型配置文件config_infer_primary_yoloV8.txt,主要修改以下几行,重新生成TensorRT可以先删除engine,初次启动生成时间大概十分钟。

暂时无法在飞书文档外展示此内容

暂时无法在飞书文档外展示此内容

标签配置文件labels.txt按训练标签配置即可。

暂时无法在飞书文档外展示此内容

2.3 deepstream发送rtsp视频流

根据deepstream流程,sink组件支持多种输出,包括保存文件,前端展示,rtsp输出,消息队列,这里讲rtsp,设置type=4,其中enc-type是编码形式,该主机不支持硬件编码,所以设置为1。多个输出,可以配置多个sink,设置不同端口。Bitrate是编码比特率,设置跟输入相近。

注意,Jetson Orin Nano不支持硬件编码https://forums.developer.nvidia.com/t/gstreamer-h-264-rtsp/273652

接收端通过vlc或者代码接收,地址为rtsp://192.168.1.89:8554/ds-test

2.4 deepstream-test5-app

sink组件中的type=6是服务器收发消息组件,仅在deepstream-test5 app中支持:

https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_test5.html

deepstream安装目录有test5的示例:/opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test5/configs

但是通过deepstream-test5-app直接启动app,kafka未接收到消息,看来还需要通过python或c++定制api,见2.5-2.7

官方文档

https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_test5.html

通过编译deepstream-test5,可以成功发送消息

2.5 kafka

deepstream-test5将消息发送至kafka

https://blog.csdn.net/y393016244/article/details/126405864

https://kafka.apache.org/quickstart

2.6 deepstream-occupancy-analytics

官方给出的示例,写到了kafka,可以借鉴kafka的用法和电子围栏的用法:

https://github.com/NVIDIA-AI-IOT/deepstream-occupancy-analytics

将 repo 克隆到 $DS_SDK_ROOT/sources/apps/sample_apps/ (已完成,deepstream根目录需要sudo权限,先拷贝到其他目录后sudo cp至deepstream根目录)

可以对比官方给出的示例进行修改:

/opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test5

https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_C_Sample_Apps.html

另外python版本可以参考

https://github.com/bug-developer021/deepstream_python_nvdsanalytics_to_kafka

2.7 deepstream-python

https://github.com/NVIDIA-AI-IOT/deepstream_python_apps

https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Python_Sample_Apps.html

仍然通过官方给出的app进行测试(ssh连接不行,需要桌面终端操作):

下面这个示例提到了Jetson Orin Nano,可以用这个示例测试编码功能,但是由于Jetson Orin Nano不支持硬件编码,直接运行会报错,需要修改python文件

https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/tree/v1.1.6/apps/deepstream-test1-rtsp-out

img

通过文档

https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/tree/v1.1.6/apps/deepstream-preprocess-test

安装了下面两个包,但仍然不支持硬件编码

sudo apt-get install libgstrtspserver-1.0-0 gstreamer1.0-rtsp

2.8 window配置kafka

安装java环境,下载x64 Installer(exe版本)直接安装

https://www.oracle.com/java/technologies/downloads/#jdk22-windows

下载kafka压缩包(跟linux一样,版本 kafka_2.12-3.7.0.tgz)https://kafka.apache.org/downloads

kafka解压缩在D盘,不能放在太深的目录,否则会报错(https://blog.csdn.net/caoxuecheng001/article/details/102948941)

发表评论

邮箱地址不会被公开。 必填项已用*标注