厨房里的温柔陷阱:当宁秋婉遇上那一场意外的亲密

核心内容摘要

东方神韵的觉醒
当酷盖遇上甜妹:拆解轮滑鞋的奇妙冒险,一场双向奔赴的乐趣狂欢!

探索“胡桃脚法”的奥秘:从入门到精通的视觉盛宴

将训练好的 YOLOv8 模型轻量化并导出为 ONNX/TensorRT 格式最终部署到 Jetson Nano 这类嵌入式设备上加速推理这是实际落地中非常关键的一步能显著提升模型在边缘设备上的运行速度。

下面我会从模型导出、TensorRT 优化、Jetson Nano 部署三个核心环节给出完整的可执行步骤和代码确保你能一步步落地。

核心原理ONNX是一种跨框架的模型格式作为中间桥梁能实现 PyTorch/TensorFlow 等框架到 TensorRT 的转换。

TensorRTNVIDIA 推出的高性能推理引擎通过层融合、精度校准FP16/INT

内核自动调优等方式优化模型大幅提升 NVIDIA 设备如 Jetson Nano的推理速度。

轻量化核心除了格式转换还包括精度降低从 FP32 到 FP16/INT

模型裁剪等在精度损失可控的前提下提升速度。

完整实现步骤前置条件Jetson Nano 环境准备刷入 JetPack 系统推荐 JetPack

0自带 TensorRT、CUDA。

确认已安装ultralytics、onnx、tensorrtbash运行# Jetson Nano 安装 ultralytics pip3 install ultralytics onnx # TensorRT 随 JetPack 自带无需额外安装验证是否安装成功 python3 -c import tensorrt; print(tensorrt.__version__)准备好训练好的 YOLOv8 模型best.pt。

步骤 1导出 YOLOv8 模型为 ONNX 格式YOLOv8 内置了一键导出功能无需手动编写转换代码直接导出 ONNX 格式兼容 TensorRT。

python运行from ultralytics import YOLO # 加载训练好的 YOLOv8 模型 model YOLO(best.pt) # 导出为 ONNX 格式关键参数说明 # format: 导出格式指定为 onnx # imgsz: 输入图像尺寸需和训练时一致如 640 # opset: ONNX 算子版本推荐 12兼容 TensorRT # dynamic: 动态输入尺寸可选嵌入式设备建议固定尺寸以提升速度 # half: 导出 FP16 精度轻量化核心减少显存占用 model.export( formatonnx, imgsz640, opset12, dynamicFalse, halfTrue # 导出 FP16 精度Jetson Nano 支持 )执行后会在模型同目录生成best.onnx文件这是中间格式模型。

步骤 2将 ONNX 转为 TensorRT 引擎核心加速TensorRT 引擎.engine文件是针对 NVIDIA 硬件优化后的模型推理速度最快。

有两种方式实现方式 1使用 YOLOv8 内置的 TensorRT 导出最简单python运行# 直接从 YOLOv8 模型导出 TensorRT 引擎 model.export( formatengine, imgsz640, device0, # Jetson Nano 的 GPU 设备号 halfTrue # FP16 精度 )执行后生成best.engine文件直接用于推理。

方式 2手动用 TensorRT API 转换更灵活适合自定义优化python运行import tensorrt as trt import os # TensorRT 日志设置 TRT_LOGGER trt.Logger(trt.Logger.INFO) EXPLICIT_BATCH 1 (int)(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH) def build_engine(onnx_file_path, engine_file_path): # 构建 TensorRT 引擎 builder trt.Builder(TRT_LOGGER) network builder.create_network(EXPLICIT_BATCH) parser trt.OnnxParser(network, TRT_LOGGER) config builder.create_builder_config() # 设置最大工作空间Jetson Nano 建议 1GB 以内 config.max_workspace_size 1 30 # 1GB # 启用 FP16 精度Jetson Nano 支持 config.set_flag(trt.BuilderFlag.FP

# 解析 ONNX 文件 with open(onnx_file_path, rb) as f: if not parser.parse(f.read()): for error in range(parser.num_errors): print(parser.get_error(error)) return None # 构建并保存引擎 serialized_engine builder.build_serialized_network(network, config) with open(engine_file_path, wb) as f: f.write(serialized_engine) return engine_file_path # 转换 ONNX 到 TensorRT 引擎 onnx_file best.onnx engine_file best.engine if not os.path.exists(engine_file): build_engine(onnx_file, engine_file) print(fTensorRT 引擎已生成{engine_file}) else: print(f引擎文件已存在{engine_file})步骤 3在 Jetson Nano 上用 TensorRT 引擎推理使用生成的.engine文件进行推理速度远快于原始.pt模型python运行from ultralytics import YOLO # 加载 TensorRT 引擎模型 model YOLO(best.engine) # 推理单张图像Jetson Nano 上实测速度比 PT 模型快

倍 results model(test.jpg, imgsz

# 解析位置结果和之前 PT 模型推理代码完全兼容 for r in results: boxes r.boxes for box in boxes: x1, y1, x2, y2 box.xyxy[0].tolist() cls_name model.names[box.cls[0].item()] conf box.conf[0].item() print(f类别{cls_name}, 置信度{conf:.2f}, 位置({x1:.1f},{y1:.1f})-({x2:.1f},{y2:.1f})) # 可视化结果 results[0].save(result_trt.jpg)步骤 4进阶优化INT8 精度极致轻量化如果追求更快速度可将模型转为 INT8 精度需准备校准数据集python运行# YOLOv8 导出 INT8 精度的 TensorRT 引擎 model.export( formatengine, imgsz640, device0, int8True, # 启用 INT8 精度 datadata.yaml # 校准数据集配置文件用于 INT8 量化 )注意INT8 精度会有轻微精度损失但速度比 FP16 再提升 30%-50%适合对精度要求不极致的场景。

Jetson Nano 部署

注意事项显存限制Jetson Nano 只有 4GB 显存建议使用 YOLOv8n轻量版、imgsz640 或更小如 480。

电源供电必须用 5V/3A 电源否则会因供电不足导致推理卡顿或设备重启。

散热Jetson Nano 推理时发热明显需加装散热风扇避免因过热降频。

推理速度参考YOLOv8n FP32PT 模型~5 FPSYOLOv8n FP16TensorRT~15 FPSYOLOv8n INT8TensorRT~20 FPS

总结模型轻量化到 Jetson Nano 部署的核心流程YOLOv8 PT 模型 → ONNX 中间格式 → TensorRT 引擎其中 TensorRT 是嵌入式设备加速的关键。

优先选择FP16 精度导出 TensorRT 引擎在精度损失可控的前提下能让推理速度提升

倍。

Jetson Nano 部署需注意显存、供电和散热建议使用轻量版模型YOLOv8n和固定输入尺寸。

星空乌鸦mv免费播放-星空乌鸦mv免费播放应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123