项目地址:Github
Jetson-inference 是一个 Nvidia 官方推出的用于 Jetson 开发板的深度学习快速上手项目。通过这一项目,可以快速在 Jetson 上部署图像分类、目标识别、语义分割等计算机视觉任务。最近我在 Jetson Orin Nano 8GB 开发板上部署时,遇到了如下一些问题,记录一下以防忘记。
编译安装问题
根据官方的 编译安装文档,可以正常在系统的 Python 环境下安装 Jetson-inference,问题主要发生在 conda 虚拟环境下安装 Jetson-inference,我还在 GitHub 上提了个 issue,后来通过自己的尝试解决了。
- 使用文档中的方法,修改
Cmakelists.txt
,将 Python 路径修改为 conda 环境的所在路径。或者直接将已经在本机 Python 环境安装好的 Jetson-inference 相关包拷贝到 conda 环境下。主要涉及jetson
Jetson
jetson_inference
jetson_utils
四个目录和jetson_utils_python.so
jetson_inference_python.so
两个文件。 - 设置环境变量。
export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libffi.so.7
- 可正常
import jetson_inference
和import jetson_utils
。
无显示器运行问题
Jetson-inference 默认使用 OpenGL 窗口作为视频输出,导致在 Jetson 开发板不连接显示器时即会报错,无法正常完成推理。
解决方案是在命令后附上 --headless
参数即可,这样在运行时不会弹出 OpenGL 窗口,通过 WebRTC 等方式即可在远程查看视频流内容。
远程显示问题
根据 官方文档,Jetson-inference 支持 WebRTC、RTP、RTSP、保存为视频、保存为图片(序列)、OpenGL 窗口等显示输出方式。其中,OpenGL 方式为默认显示方式,需要 Jetson 连接显示器才可使用,具体问题见上一节。
对于远程显示,先后尝试了 RTP、WebRTC 方法。使用 RTP 方式首先需要安装 G-Streamer 或者 VLC,实测在 mac mini 上延迟惨不忍睹。而 WebRTC 方式仅需要 Web 浏览器即可浏览 Jetson 发出的视频流,以后应首选该方案进行远程视频显示。
根据官方对于 WebRTC 方法的 介绍,首先需要开启 SSL,开启方法如下:
|
|
在通过命令向远程输出图像时,有两种方式。第一是设置环境变量 SSL_KEY
SSL_CERT
,方法如下:
|
|
第二是直接在 video-viewer
命令后使用 --ssl-key
和 ssl-cert
附上公钥、证书的文件路径。一个具体的例子如下:
|
|
在远程终端上,在浏览器上访问 https://<jetson-IP>:8554
即可查看视频输出,同时下方还有视频的各项参数。