Jetson SDK 使用方式与典型场景:两个可运行示例
四、使用方式与典型场景:两个可运行示例
示例一:ONNX 构建 TensorRT engine 并推理
# 用 trtexec 快速验证模型能否构建与跑通
/usr/src/tensorrt/bin/trtexec \
--onnx=model.onnx \
--saveEngine=model_fp16.engine \
--fp16 \
--workspace=2048
# 指定输入形状(动态 shape 时需要)
/usr/src/tensorrt/bin/trtexec \
--onnx=model.onnx \
--saveEngine=model_dyn.engine \
--minShapes=input:1x3x640x640 \
--optShapes=input:4x3x640x640 \
--maxShapes=input:8x3x640x640
Python 侧加载并推理:
import tensorrt as trt
import pycuda.driver as cuda
import pycuda.autoinit
logger = trt.Logger(trt.Logger.WARNING)
with open("model_fp16.engine", "rb") as f, trt.Runtime(logger) as runtime:
engine = runtime.deserialize_cuda_engine(f.read())
context = engine.create_execution_context()
for i in range(engine.num_bindings):
name = engine.get_binding_name(i)
shape = engine.get_binding_shape(i)
dtype = engine.get_binding_dtype(i)
print(i, name, tuple(shape), dtype)
要点:先用 trtexec 做可行性验证,再写业务代码;trtexec 还会打印每层的耗时与整体吞吐,是定位瓶颈的第一手工具。
示例二:DeepStream 跑多路 RTSP 视频分析
# 用官方 sample 配置快速起一条流水线(路径以实际安装为准)
deepstream-app -c /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
典型的自定义方式是改配置文件:把 source 段换成多路 RTSP 地址、把 infer 段换成自己的 engine、调整 batch-size 与 interval。多路场景下要重点关注:解码是否走硬件单元、batch 是否凑满、显存是否够、以及上报逻辑是否成为瓶颈。
适合与不适合的场景
- 适合:多路高清视频分析、需要 CUDA 生态与成熟框架、需要在边缘跑较复杂模型、对精度要求高(可用 FP16/FP32)。
- 不太适合:功耗与散热极度受限的场景、成本敏感的规模化部署、只有极小模型且用不上 GPU 的场景。
- 要谨慎:把训练框架整套塞到板端;Jetson 上更适合「PC 训练、板端只用 TensorRT 推理」的分工。

