☰
jetson-inference 模型快照下载指南:从 DIGITS 导出自定义分类网络到 Jetson 并加载入 TensorRT
2026/9/25 5:20:54 网站建设 项目流程
  • 人工智能
  • 计算机视觉
  • 深度学习
  • 微调

【免费下载链接】jetson-inference

Hello AI World guide to deploying deep-learning inference networks and deep vision primitives with TensorRT and NVIDIA Jetson.

项目地址:https://gitcode.com/gh_mirrors/je/jetson-inference
点击查看免费下载

本指南聚焦 jetson-inference 项目 "Hello AI World" 系列中的关键一环:把在 DIGITS 服务器上训练完成的 GoogleNet-12 等自定义分类网络,以模型快照(snapshot)的形式下载、解压到 Jetson 设备,再通过imagenet示例程序的扩展命令行参数将其加载进 TensorRT 进行推理。读完本文,你将掌握快照下载/传输的标准流程、快照包的文件结构,以及如何用--prototxt/--model/--labels等参数把自定义网络跑在 Jetson 上,并看到对应的源码级依据。

1. 前置脉络:快照从哪来

模型快照是整个 "Training → Snapshot → TensorRT" 流程的中间产物。在此之前,你需要在 DIGITS 服务器上完成两件事:

  • 准备数据集:用 tools/imagenet-download.py 这类爬虫下载 ILSVRC12 的 1000 类图片(约 100GB),或用 tools/imagenet-subset.sh 把其中 230 个细分类软链接合并成ball、bear、bike、bird、bottle、cat、dog、fish、fruit、turtle、vehicle、sign共 12 个大类;
  • 在 DIGITS 中训练:创建GoogleNet-ILSVRC12-subset分类模型,通常跑满 30 个 epoch。

完整的重训练步骤见 docs/imagenet-training.md。当 DIGITS 训练任务完成、并在界面上用单张图片(如/ilsvrc12/n02127052/n02127052_1203.jpg)验证过推理结果(例如把原 GoogleNet-1000 判为Lynx的图片,被新模型正确判为cat)之后,就可以进入本指南的快照下载环节。

2. 从 DIGITS 服务器下载模型快照

2.1 浏览器下载(同一网络)

在 Jetson 的浏览器中打开 DIGITS 服务器页面,进入GoogleNet-ILSVRC12-subset模型。操作要点:

  1. 在Trained Models(已训练模型)区域,从下拉框中选择想要的快照——通常选择 epoch 数最高的那个,因为训练收敛更充分、分类精度通常更好;
  2. 点击Download Model按钮,浏览器即开始下载该快照的压缩包。

DIGITS 生成的快照文件名形如20170524-140310-8c0b_epoch_30.0.tar.gz,其中20170524-140310-8c0b是训练任务的唯一 ID,epoch_30.0表明这是第 30 个 epoch 保存的权重。

2.2 跨网络传输(SCP / U 盘)

如果 Jetson 与 DIGITS 服务器不在同一个网络、无法直接访问,可以按上述步骤把快照先下载到一台中间机器,再通过以下任一方式拷贝到 Jetson:

  • SCP:在中间机器上执行scp 20170524-140310-8c0b_epoch_30.0.tar.gz <jetson用户>@<jetson-ip>:<目标目录>;
  • USB 存储:把压缩包拷入 U 盘,再插到 Jetson 上复制。

这一方式与直接下载的唯一区别是文件传输通道不同,快照内容本身没有差异,后续解压与加载步骤完全一致。

3. 解压快照

把压缩包放到 Jetson 的合适目录(教程惯例放在仓库的networks/目录下,例如networks/GoogleNet-ILSVRC12-subset),然后在下载目录中执行解压:

cd <directory where you downloaded the snapshot> tar -xzvf 20170524-140310-8c0b_epoch_30.0.tar.gz

tar -xzvf会解压并显示文件清单(z表示 gzip 压缩、v表示 verbose、x解压、f指定归档文件)。解压后得到的是 DIGITS 导出的一套 Caffe 格式部署文件,通常包含:

文件作用
deploy.prototxt部署用网络结构描述(去掉了训练层的推理版 prototxt)
snapshot_iter_184080.caffemodel训练好的权重文件(文件名随迭代数变化)
labels.txt每行一个类别名的标签文件(对应 12 个重训练类别)
mean.binaryproto(可选)训练时使用的像素均值文件

注:DIGITS 导出的文件名中的迭代数(如184080)与任务训练步数相关,实际以你下载的快照为准。后续加载时--model参数要指向这个.caffemodel文件。

4. 将自定义快照加载进 TensorRT

解压完成后,即可用仓库中的imagenet示例程序把该快照编译进 TensorRT 并跑推理。仓库中对应的示例源码是 examples/imagenet/imagenet.cpp,它同时支持静态图片/视频流输入(imagenet程序可同时充当教程旧版imagenet-console/imagenet-camera的角色,通过输入/输出 URI 区分)。

先设置环境变量指向快照目录,再执行加载命令:

$ NET=networks/GoogleNet-ILSVRC12-subset $ ./imagenet bird_0.jpg output_0.jpg \ --prototxt=$NET/deploy.prototxt \ --model=$NET/snapshot_iter_184080.caffemodel \ --labels=$NET/labels.txt \ --input_blob=data \ --output_blob=softmax

其中bird_0.jpg位于仓库的 data/images/bird_0.jpg。各参数含义如下:

参数含义默认值
--prototxt自定义网络的 deploy prototxt 路径(仅 Caffe.caffemodel需要)无
--model自定义模型路径,支持 caffemodel / uff / onnx无(未指定时回退到googlenet等预训练模型)
--labels类别标签文本文件路径(每行一类)无
--input_blob输入层 blob 名称data
--output_blob输出层 blob 名称prob
--threshold分类最低置信度阈值0.01
--topK返回的 Top-K 预测数量(imagenet程序参数)1

这些参数的解析逻辑在 c/imageNet.cpp 中可以看到:imageNet::Create(const commandLine&)先读取--network,若找不到预训练模型(FindModel失败),则读取--prototxt、--labels、--input_blob、--output_blob,并默认input="data"、output="prob",再调用imageNet::Create(prototxt, model, ...)走自定义模型加载路径。完整的参数帮助串定义在 c/imageNet.h 的IMAGENET_USAGE_STRING中。

注意:原教程此处输出 blob 写为softmax,而代码中的默认值是prob。如果你的 DIGITS 导出 prototxt 的最终层名不同,请以deploy.prototxt里的实际层名为准——这就是为什么--output_blob需要显式指定。

5. 验证推理结果与参数生效

加载成功后,程序进入与预训练模型一致的推理循环(examples/imagenet/imagenet.cpp):从输入流Capture一帧,调用net->Classify(image, width, height, classifications, topK)得到(classID, confidence)列表,再通过cudaFont把"95.00% bird"这样的结果叠加到输出图像上,并实时显示 TensorRT 版本与网络 FPS。

与原始 GoogleNet-1000 相比,重训练后的 GoogleNet-12 对同样的图片会输出元类别(meta-class):例如把猫科动物统一判为cat、把 122 种犬种统一判为dog。这正验证了快照内容正确加载、TensorRT 引擎构建成功。

imagenet程序同样支持视频流/摄像头输入(把输入 URI 换成摄像头或视频文件即可,见 examples/imagenet/imagenet.cpp 中videoSource::Create的用法),因此自定义快照也能直接用于 imagenet-camera 场景 的实时识别。

6. 流程闭环与下一步

至此,一条完整的自定义识别链路已经打通:

  1. imagenet-subset.sh构建 12 类数据集 → DIGITS 训练GoogleNet-ILSVRC12-subset;
  2. 从 DIGITSTrained Models下载最高 epoch 快照(跨网络用 SCP/USB);
  3. tar -xzvf解压得到deploy.prototxt+.caffemodel+labels.txt;
  4. imagenet加--prototxt/--model/--labels/--input_blob/--output_blob参数编译进 TensorRT 并推理验证。

下一步可以阅读 docs/imagenet-custom.md 深入了解自定义模型的更多加载细节,或转向 docs/detectnet-training.md 学习目标检测网络的训练与快照部署。若希望回看训练环节,可参考 docs/imagenet-training.md。

  • 人工智能
  • 计算机视觉
  • 深度学习
  • 微调

【免费下载链接】jetson-inference

Hello AI World guide to deploying deep-learning inference networks and deep vision primitives with TensorRT and NVIDIA Jetson.

项目地址:https://gitcode.com/gh_mirrors/je/jetson-inference
点击查看免费下载

相关推荐

上一篇:Cannon.js 常见问题解决方案
下一篇:Viz.js 开源项目入门指南与问题解决方案

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询