☰
具身智能端侧部署实战:Jetson与TensorRT模型量化加速指南
2026/10/31 3:33:09 网站建设 项目流程

1. 具身智能落地为什么卡在端侧这一关

过去两年,具身智能这个词从学术圈一路烧到产业圈。做机械臂的、做移动底盘的、做人形本体的团队都在讲同一个故事:大模型负责理解与决策,本体负责执行。但真正把一台设备推到客户现场之后,绝大多数团队都会撞上同一堵墙——模型在服务器上跑得好好的,一搬到设备上就卡成幻灯片,功耗飙升、发热严重、延迟高到没法做闭环控制。

我在几个机器人项目里反复验证过一件事:具身智能的落地瓶颈,从来不是模型不够聪明,而是端侧算力与工程部署这一环没打通。你在云端用A100跑一个7B的视觉语言模型,推理延迟200毫秒,看起来很美好;但把这套东西塞进一台靠电池供电、散热空间只有巴掌大的机器里,延迟直接变成2秒,机械臂抓取动作早就错过了时机。

这就是为什么2026年产业界逐渐形成一个共识:谁能在Jetson这类嵌入式平台上把模型压得够小、跑得够快、部署得够稳,谁才真正具备量产交付能力。招聘市场也在印证这一点,翻一翻今年机器人公司放出来的岗位JD,关键词高度集中——Jetson、TensorRT、模型量化、嵌入式部署、ROS2、实时推理。企业要的不是会调API的人,而是能把一个PyTorch模型从训练服务器一路搬到Orin Nano上、并且保证30帧稳定输出的人。

这篇内容我打算把这条链路完整走一遍。从硬件选型、模型量化、TensorRT加速,到实际部署时的踩坑记录,全部基于Jetson和嵌入式设备的真实场景。适合正在做具身智能产品、准备转行端侧部署、或者单纯想把模型跑快的朋友。不需要你是CUDA专家,但需要你愿意动手敲命令、看日志、调参数。

2. 硬件选型:Jetson家族到底怎么挑

2.1 从Nano到AGX Orin的算力梯队

Jetson这条产品线跨度非常大,选错了要么算力浪费、要么根本跑不动。我先把常见型号的关键参数摆出来,方便你对照自己的项目需求。

型号GPU架构AI算力(INT8)显存典型功耗适用场景
Jetson NanoMaxwell0.5 TOPS4GB5-10W教学、简单视觉
Jetson Xavier NXVolta21 TOPS8/16GB10-20W中型检测模型
Jetson Orin NanoAmpere40 TOPS4/8GB7-15W主流具身智能入门
Jetson Orin NXAmpere100 TOPS8/16GB10-25W多路视觉+小模型
Jetson AGX OrinAmpere275 TOPS32/64GB15-60W大模型端侧推理

这张表里最值得说的是Orin Nano。它现在是具身智能入门项目的性价比之王,40 TOPS的INT8算力足够跑YOLO系列检测加一个轻量级的策略网络。但要注意它有4GB和8GB两个版本,做具身智能我强烈建议直接上8GB,4GB版本跑一个YOLOv8s加上ROS2节点之后,内存基本就见底了,稍微加个视觉语言模型直接OOM。

2.2 选型时最容易忽略的三个坑

第一个坑是功耗墙和散热。Jetson的算力标称值都是在最高功耗模式下测出来的,Orin Nano标称40 TOPS是在15W模式下。如果你把它塞进一个密闭的机械臂关节里,散热跟不上,芯片会自动降频,实际算力可能只有标称的一半。我见过一个团队把Orin NX装进一个没有风扇的铝壳里,跑满载推理十分钟后帧率从30掉到12。所以选型时一定要把散热方案算进去,主动散热的风扇噪音在服务机器人场景里也要考虑。

第二个坑是存储和启动介质。很多开发板默认从microSD卡启动,SD卡的读写速度在持续推理场景下会成为瓶颈,尤其是模型加载和日志写入频繁的时候。Orin系列支持NVMe SSD,我建议直接上一条256GB以上的NVMe,系统盘和模型都放上面,启动速度和推理稳定性提升非常明显。

第三个坑是接口和扩展性。具身智能设备通常要接多个摄像头、IMU、力传感器、CAN总线。Orin Nano的MIPI CSI接口数量有限,如果你要接四路摄像头做环视,就得考虑用CSI扩展板或者走USB。这里有个经验:USB摄像头的延迟和稳定性普遍不如MIPI CSI,做实时闭环控制优先用CSI。

2.3 刷机与基础环境搭建

拿到板子第一件事是刷机。Jetson用NVIDIA的SDK Manager或者直接烧录镜像。我习惯用SDK Manager在Ubuntu主机上操作,它能一次性把JetPack、CUDA、cuDNN、TensorRT全部装好,省得自己配环境。

刷机完成后,第一件事是确认JetPack版本,因为它决定了你后面能用的TensorRT版本。

# 查看JetPack和L4T版本 cat /etc/nv_tegra_release # 查看CUDA版本 nvcc --version # 查看TensorRT版本 dpkg -l | grep tensorrt

JetPack 5.x对应TensorRT 8.x,JetPack 6.x对应TensorRT 8.6/10.x。这个对应关系很重要,因为不同版本的TensorRT API有差异,量化工具链也不一样。我建议新项目直接用JetPack 6.x,对Orin系列的支持最完善。

注意:刷机前一定要备份好eMMC里的数据,刷机会清空所有内容。另外Orin Nano有些版本需要先更新QSPI固件才能支持新的JetPack,如果刷机后无法启动,检查一下QSPI版本。

3. 模型量化:把模型塞进端侧的第一步

3.1 为什么必须量化

一个在服务器上训练的模型,权重通常是FP32格式。一个YOLOv8s大概22MB,看起来不大,但推理时的中间激活值、显存占用远不止这个数。FP32推理在Orin Nano上跑YOLOv8s,大概只能到15-20 FPS,而且功耗很高。

量化的本质是把FP32的权重和激活值用更低精度表示。常见的有FP16、INT8两种。FP16直接把显存占用和带宽需求砍半,精度损失几乎可以忽略;INT8把精度再砍一半,算力利用率能提升2-4倍,但需要校准来减少精度损失。

在Orin系列上,INT8推理是通过Tensor Core加速的,理论算力是FP16的两倍。所以如果你的模型对精度不是极度敏感,INT8是端侧部署的首选。

3.2 PTQ还是QAT:两条路线的取舍

量化分两条路线:训练后量化(PTQ)和量化感知训练(QAT)。

PTQ是拿一个训练好的FP32模型,用一批校准数据跑一遍,统计激活值的分布,然后确定量化参数。优点是快,几十分钟就能搞定;缺点是精度损失不可控,尤其是对量化敏感的层。

QAT是在训练阶段就模拟量化误差,让模型自己去适应低精度。优点是精度保持得好,缺点是需要在训练流程里改代码,还要重新训练。

我的经验是:检测、分类这类任务,PTQ基本够用;分割、深度估计、策略网络这类对数值敏感的任务,优先考虑QAT。具身智能里的视觉骨干网络大多可以用PTQ搞定,但如果你有一个输出连续动作值的策略网络,PTQ之后动作可能会抖动,这时候就得上QAT。

3.3 用TensorRT做PTQ的完整流程

TensorRT的PTQ流程分几步:导出ONNX、准备校准数据、构建engine。我以YOLOv8为例走一遍。

第一步,把PyTorch模型导出成ONNX。

from ultralytics import YOLO model = YOLO("yolov8s.pt") model.export(format="onnx", opset=12, simplify=True, dynamic=False, imgsz=640)

这里有几个参数要注意。opset建议用12或更高,低版本对某些算子支持不好。dynamic=False表示固定输入尺寸,端侧部署通常输入尺寸是固定的,固定尺寸能让TensorRT做更好的优化。simplify=True会调用onnx-simplifier做图优化,去掉冗余节点。

第二步,准备校准数据。校准数据不需要标注,只需要一批有代表性的输入图像,通常500-1000张就够。关键是这些图像要覆盖你实际部署场景的分布,比如你的机器人是在室内工作的,就别拿一堆户外图像去校准。

import numpy as np import os from PIL import Image def load_calibration_data(calib_dir, input_shape=(640, 640), num_samples=500): files = [f for f in os.listdir(calib_dir) if f.endswith(('.jpg', '.png'))][:num_samples] data = [] for f in files: img = Image.open(os.path.join(calib_dir, f)).convert('RGB') img = img.resize(input_shape) arr = np.asarray(img, dtype=np.float32) / 255.0 arr = arr.transpose(2, 0, 1) # HWC -> CHW arr = np.expand_dims(arr, axis=0) data.append(arr) return np.concatenate(data, axis=0)

第三步,用TensorRT的Python API构建INT8 engine。这里我用trtexec命令行工具,它比Python API更直观,也更容易复现。

trtexec --onnx=yolov8s.onnx \ --saveEngine=yolov8s_int8.engine \ --int8 \ --fp16 \ --calib=calibration.cache \ --workspace=4096 \ --minShapes=images:1x3x640x640 \ --optShapes=images:1x3x640x640 \ --maxShapes=images:1x3x640x640

第一次跑的时候没有calibration.cache,trtexec会自动生成。--workspace=4096表示给TensorRT 4GB的临时显存做优化,Orin Nano 8GB版本可以给到4096,4GB版本建议降到2048。

3.4 量化精度掉了怎么办

PTQ之后精度下降是常见问题。我遇到过的典型情况是:FP32下mAP 0.45,INT8之后掉到0.38。这时候有几个排查方向。

先看是哪一层掉得厉害。TensorRT可以输出每层的量化误差,用--dumpLayerInfo和--dumpProfile能看到。如果发现是某一层激活值分布特别不均匀,可以考虑把这层排除在量化之外,用FP16跑。

trtexec --onnx=yolov8s.onnx \ --int8 --fp16 \ --precisionConstraints=obey \ --layerPrecisions=Conv_123:fp16 \ --saveEngine=yolov8s_mixed.engine

另一个方向是换校准算法。TensorRT默认用熵校准(Entropy Calibration),对检测任务通常够用。如果效果不好,可以试试minmax校准,或者自己实现一个基于KL散度的校准器。

还有一个容易被忽略的点:预处理和后处理也要对齐。有时候精度下降不是量化本身的问题,而是你在Python里做的归一化、letterbox和TensorRT engine里做的对不上。我踩过一次坑,Python里用的是/255.0,engine里忘了加这个归一化,结果检测框全乱。

实操心得:量化之后一定要做端到端的精度验证,不要只看单层误差。用同一批测试图像,分别跑FP32和INT8,对比mAP、召回率、框的IoU。如果差异在1-2个百分点以内,基本可以接受。

4. TensorRT极致加速:从能跑到跑得快

4.1 TensorRT到底做了什么优化

很多人以为TensorRT只是把模型转成另一种格式,其实它做的事情远不止这些。TensorRT在构建engine的时候会做几类关键优化。

第一是层融合。把卷积、BN、激活函数融合成一个kernel,减少kernel启动次数和显存读写。一个典型的ResNet block原本有Conv、BN、ReLU三个操作,融合之后变成一个。这在端侧意义重大,因为kernel启动开销在嵌入式GPU上占比很高。

第二是精度校准和kernel自动调优。TensorRT会针对你的具体GPU架构,从多个候选kernel里选最快的那个。同一个卷积,在Orin和Xavier上的最优实现可能完全不同,TensorRT会自动适配。

第三是显存复用。通过分析计算图,TensorRT能算出每个tensor的生命周期,把不再需要的显存回收给后面的tensor用。这让显存占用大幅下降,也是为什么同一个模型TensorRT engine比PyTorch省显存。

4.2 构建engine时的关键参数

除了前面提到的精度和workspace,还有几个参数对性能影响很大。

输入shape。如果你的应用输入尺寸固定,一定要用固定shape,TensorRT能针对固定shape做更激进的优化。如果必须支持动态shape,把minShapes、optShapes、maxShapes都设好,optShapes是你最常用的尺寸,TensorRT会针对它优化。

builder优化等级。--builderOptimizationLevel从0到5,等级越高优化越激进,但构建时间越长。端侧部署我一般用3或4,5有时候会构建很久。

tactic来源。--tacticSources可以指定用哪些tactic,默认全开。如果构建时显存不够,可以关掉一些。

trtexec --onnx=yolov8s.onnx \ --saveEngine=yolov8s_opt.engine \ --int8 --fp16 \ --builderOptimizationLevel=4 \ --workspace=4096 \ --verbose

--verbose会打印详细的构建日志,包括每层的融合情况和最终选择的kernel。第一次构建时建议开着,能帮你发现哪些层没被优化。

4.3 推理时的性能调优

engine构建好之后,推理性能还有优化空间。

CUDA stream和异步推理。默认情况下推理是同步的,CPU要等GPU算完才能继续。用CUDA stream做异步推理,可以让数据预处理、推理、后处理重叠起来。在Orin上,这个优化能提升20-30%的吞吐。

import tensorrt as trt import pycuda.driver as cuda import pycuda.autoinit class TRTInference: def __init__(self, engine_path): logger = trt.Logger(trt.Logger.WARNING) with open(engine_path, 'rb') as f, trt.Runtime(logger) as runtime: self.engine = runtime.deserialize_cuda_engine(f.read()) self.context = self.engine.create_execution_context() self.stream = cuda.Stream() # 分配输入输出显存 self.bindings = [] for i in range(self.engine.num_bindings): size = trt.volume(self.engine.get_binding_shape(i)) dtype = trt.nptype(self.engine.get_binding_dtype(i)) host_mem = cuda.pagelocked_empty(size, dtype) device_mem = cuda.mem_alloc(host_mem.nbytes) self.bindings.append(int(device_mem)) def infer(self, input_data): cuda.memcpy_htod_async(self.bindings[0], input_data, self.stream) self.context.execute_async_v2(bindings=self.bindings, stream_handle=self.stream.handle) cuda.memcpy_dtoh_async(self.output_host, self.bindings[1], self.stream) self.stream.synchronize() return self.output_host

batch size的选择。端侧推理batch size通常设1,因为具身智能是实时闭环,等不了攒batch。但如果你的场景允许一定延迟,batch size 2或4能提升GPU利用率。Orin Nano上YOLOv8s batch 1大概25 FPS,batch 4能到40 FPS左右,但延迟从40ms涨到100ms。

DLA的使用。Orin系列有DLA(深度学习加速器),可以分担一部分推理任务。把不支持的层放到GPU上,支持的层放到DLA上,能进一步降低GPU负载。不过DLA对算子支持有限,配置起来比较麻烦,我一般只在GPU负载确实压不下来的时候才用。

4.4 实测数据:Orin Nano上的性能基线

我在Orin Nano 8GB上跑了一组测试,JetPack 6.0,MAXN功耗模式,主动散热。数据供参考。

模型精度输入尺寸延迟(ms)FPS功耗
YOLOv8nFP16640x640185512W
YOLOv8nINT8640x640119010W
YOLOv8sFP16640x640323114W
YOLOv8sINT8640x640195212W
YOLOv8mINT8640x640452215W

从这组数据能看出几个规律。INT8相比FP16,延迟降低约40%,FPS提升约60%。模型越大,INT8的收益越明显,因为大模型的显存带宽瓶颈更突出。YOLOv8s INT8在Orin Nano上能到52 FPS,对于大多数具身智能的视觉感知任务已经够用。

如果你要跑多路摄像头,比如四路环视,每路都要检测,那YOLOv8n INT8是更现实的选择,四路加起来大概能到20 FPS每路。这里要注意,多路推理时显存和带宽是共享的,实际FPS会比单路测试低一些。

5. 工程部署:从demo到产品的最后一公里

5.1 部署架构怎么设计

一个具身智能设备的软件架构通常分几层:传感器层、感知层、决策层、控制层。TensorRT推理属于感知层,它的输出要喂给决策层,决策层的指令再下发给控制层。

我推荐用ROS2做中间件,原因是它的节点通信机制天然适合这种分层架构,而且社区里有大量现成的包可以用。感知节点订阅摄像头话题,推理完发布检测结果话题,决策节点订阅检测结果,输出控制指令。

import rclpy from rclpy.node import Node from sensor_msgs.msg import Image from vision_msgs.msg import Detection2DArray import cv2 import numpy as np class PerceptionNode(Node): def __init__(self): super().__init__('perception_node') self.sub = self.create_subscription(Image, '/camera/image', self.callback, 10) self.pub = self.create_publisher(Detection2DArray, '/detections', 10) self.engine = TRTInference('yolov8s_int8.engine') def callback(self, msg): img = np.frombuffer(msg.data, dtype=np.uint8).reshape(msg.height, msg.width, -1) input_tensor = self.preprocess(img) output = self.engine.infer(input_tensor) detections = self.postprocess(output) self.pub.publish(detections)

这个架构的关键是节点间的数据流要尽量零拷贝。ROS2支持intra-process通信,如果感知节点和决策节点在同一个进程里,可以避免序列化和反序列化开销。对于高帧率场景,这个优化能省下几毫秒。

5.2 实时性保障的几个手段

具身智能对实时性要求很高,机械臂抓取、移动底盘避障都有硬性的延迟上限。保障实时性有几个手段。

线程优先级和CPU亲和性。把推理线程绑到特定CPU核心上,设成实时优先级,避免被其他任务抢占。Orin有6个或8个CPU核心,可以把推理线程绑到性能核上,把日志、网络等任务绑到能效核上。

# 把进程绑到CPU 4-5 taskset -cp 4-5 <pid> # 设置实时优先级 chrt -f -p 80 <pid>

避免内存分配。推理循环里不要动态分配内存,所有buffer提前分配好。Python的GC在实时场景下是灾难,能用C++写推理节点就用C++,或者至少把推理核心逻辑用C++扩展实现。

监控和降级。部署之后要有监控,实时看推理延迟、GPU利用率、温度。如果延迟超过阈值,要有降级策略,比如降低输入分辨率、跳帧、切换到更小的模型。

5.3 模型更新和OTA

产品部署到现场之后,模型更新是个绕不开的问题。你不能每次都派人去现场插U盘。

我的做法是把模型文件放在一个独立的目录,用版本号管理。设备启动时检查本地版本和服务器上的最新版本,如果服务器上有新版本,下载到临时目录,校验完整性,然后原子替换。

# 模型目录结构 /models/ yolov8s_int8_v1.2.engine yolov8s_int8_v1.3.engine current -> yolov8s_int8_v1.3.engine

用软链接指向当前版本,更新时先下载新engine,验证能正常加载,再切换软链接,最后重启推理节点。这样即使新模型有问题,回滚也很快。

注意:TensorRT engine是和GPU架构、TensorRT版本绑定的。你在Orin Nano上构建的engine,不能直接拿到Xavier上用。如果产品线有多个硬件型号,要为每个型号分别构建engine,或者用ONNX在设备上现场构建。

5.4 功耗和散热管理

Orin系列支持多种功耗模式,用nvpmodel切换。

# 查看当前功耗模式 nvpmodel -q # 切换到最大性能模式 sudo nvpmodel -m 0 # 切换到15W模式 sudo nvpmodel -m 1

MAXN模式性能最强但功耗最高,如果设备是电池供电,要根据续航要求选模式。我的经验是,如果推理负载不重,15W模式下的性能损失大概20%,但功耗降低40%,对续航提升很明显。

散热方面,Orin Nano的TDP是15W,被动散热在室温25度下满载会到80度以上,触发降频。主动散热用一个小风扇就能压到60度以下。风扇选型要注意噪音,服务机器人场景里风扇噪音超过35分贝用户就能感知到。

6. 常见问题与排查技巧实录

6.1 部署过程中的高频问题

问题现象可能原因排查方法解决方案
engine加载失败TensorRT版本不匹配检查构建和运行的TRT版本在目标设备上重新构建
推理结果全错预处理不一致对比Python和engine的输入对齐归一化和layout
FPS远低于预期功耗模式限制nvpmodel -q查看切到MAXN模式
运行一段时间后卡顿散热降频监控温度加散热或降功耗模式
显存OOMworkspace太大减小workspace4GB版用2048
多路推理互相干扰共享stream每路独立stream用多stream并行
开机没有WiFi驱动或固件问题dmesg看网卡日志重刷固件或换模块

6.2 几个我踩过的坑

坑一:ONNX导出时的动态维度。YOLOv8默认导出是动态batch,如果你没指定dynamic=False,TensorRT构建时会按动态shape处理,性能会差一截。我第一次部署时没注意,engine比预期慢了30%。

坑二:校准数据的分布。我做过一个室内巡检机器人,校准数据用的是公开数据集,结果现场部署时检测精度掉得厉害。后来换成现场采集的500张图重新校准,精度恢复了。校准数据一定要贴近实际场景。

坑三:Python后处理的瓶颈。YOLO的后处理(NMS)在Python里做很慢,尤其是检测框多的时候。我后来把NMS用CUDA实现,或者用TensorRT的EfficientNMS插件,后处理时间从15ms降到2ms。

坑四:ROS2的QoS配置。默认QoS是reliable,图像话题用reliable会导致丢帧和延迟累积。图像话题应该用best_effort,检测结果话题可以用reliable。

from rclpy.qos import QoSProfile, ReliabilityPolicy image_qos = QoSProfile(depth=1, reliability=ReliabilityPolicy.BEST_EFFORT) self.sub = self.create_subscription(Image, '/camera/image', self.callback, image_qos)

6.3 性能调优的检查清单

部署完成后,按这个清单过一遍,基本能覆盖大部分性能问题。

  1. 确认功耗模式是MAXN或适合场景的模式
  2. 确认散热正常,满载温度低于75度
  3. 确认engine是用固定shape构建的
  4. 确认预处理和后处理与训练时一致
  5. 确认推理用了CUDA stream异步
  6. 确认没有在推理循环里动态分配内存
  7. 确认ROS2 QoS配置合理
  8. 确认多路推理时stream独立
  9. 确认模型文件在NVMe上而不是SD卡
  10. 确认有延迟和温度的运行时监控

7. 对标2026企业招聘的能力地图

7.1 岗位JD里的高频要求拆解

翻了几十份机器人公司的端侧部署岗位JD,要求高度集中在几个方向。

Jetson平台经验是硬门槛。几乎每份JD都要求熟悉Jetson系列,有Orin或Xavier的实际部署经验。面试时会问你刷机流程、功耗模式、散热方案这些细节。

TensorRT和模型量化是核心技能。要求能独立完成从PyTorch到TensorRT engine的转换,理解PTQ和QAT的区别,能处理量化精度下降的问题。

CUDA编程基础是加分项。不要求你写复杂的kernel,但要能看懂CUDA代码,会用stream、event,能定位GPU瓶颈。

ROS2和实时系统是工程能力体现。要求熟悉ROS2的节点通信、QoS配置,理解实时系统的调度和优先级。

C++和Python双语言是标配。推理核心用C++,脚本和工具用Python。

7.2 学习路线建议

如果你现在还在学校或者刚转行,我建议按这个顺序走。

第一阶段,把Jetson板子玩熟。刷机、装JetPack、跑通官方示例、切换功耗模式、接摄像头。这一阶段目标是能独立把一块Orin Nano从裸板变成能跑推理的开发环境。

第二阶段,吃透TensorRT。从ONNX导出开始,手动用trtexec构建engine,理解每个参数的含义。然后学Python API,能自己写推理脚本。再深入学量化,做PTQ,分析精度损失。

第三阶段,做完整项目。找一个开源模型,比如YOLOv8或者一个轻量级的视觉语言模型,完整走一遍量化、加速、部署到ROS2节点的流程。把延迟、FPS、功耗都测出来,写成文档。

第四阶段,深入底层。学CUDA编程,学TensorRT的plugin开发,学DLA的使用。这一阶段是拉开差距的地方,能自己写plugin解决TensorRT不支持的算子,是很强的竞争力。

7.3 面试中容易被问到的实操问题

根据我和同行交流的经验,端侧部署岗位的面试很看重实操细节。几个高频问题:

  • 你部署过最大的模型是多大?在什么硬件上?延迟多少?
  • INT8量化之后精度掉了多少?你怎么解决的?
  • TensorRT engine构建时workspace设多大?为什么?
  • 多路摄像头推理时怎么保证实时性?
  • 设备在现场跑一段时间后变慢,你怎么排查?
  • 模型更新怎么做?怎么保证更新失败能回滚?

这些问题没有标准答案,面试官想看的是你有没有真正动过手。如果你能把踩过的坑和解决过程讲清楚,比背八股文有用得多。

8. 具身智能端侧部署的下一步

端侧算力这条线还在快速演进。Orin之后,NVIDIA的下一代嵌入式平台已经在路上,算力会再上一个台阶。但硬件升级不会自动解决工程问题,模型量化、TensorRT加速、实时调度这些技能,在可见的未来依然是稀缺的。

我个人的判断是,具身智能的竞争会从算法创新逐渐转向工程落地。谁的设备更稳定、延迟更低、功耗更小,谁就能先拿到订单。而这一切的基础,就是把模型在端侧跑好。

如果你正在做这方面的项目,或者准备往这个方向转,我建议尽早动手。买一块Orin Nano,从跑通一个YOLO开始,一步步往深处走。这个过程里踩的每一个坑,都会变成你简历上实打实的能力。

最后分享一个我常用的调试技巧:在设备上部署新模型时,先用trtexec单独测engine的纯推理性能,排除掉预处理、后处理、ROS2通信的干扰。如果纯推理就慢,那是engine的问题;如果纯推理快但端到端慢,那就是工程链路的问题。这个二分法能帮你快速定位瓶颈在哪一层。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询