尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

用 DIGITS 重训练 jetson-inference 识别网络:从 ILSVRC12 数据采集到 GoogleNet-12 自定义模型部署

发布时间:2026/9/25 6:08:26

资讯中心
01
ARTICLE

用 DIGITS 重训练 jetson-inference 识别网络:从 ILSVRC12 数据采集到 GoogleNet-12 自定义模型部署

用 DIGITS 重训练 jetson-inference 识别网络:从 ILSVRC12 数据采集到 GoogleNet-12 自定义模型部署
人工智能计算机视觉深度学习微调【免费下载链接】jetson-inferenceHello 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点击查看免费下载本文是一份面向 NVIDIA Jetson 开发者的完整实战指南讲解如何在 jetson-inference 项目中通过 DIGITS 对图像识别网络进行重训练从下载 ILSVRC12 大规模数据集、把 1000 个细粒度类别合并为 12 个实用大类到在 DIGITS 中导入数据集、训练 GoogleNet 模型、验证推理效果最后把训练快照部署回 Jetson 并用 TensorRT 加载自定义模型。读完本文你将掌握一套可复制的采集数据 → 组织类别 → 云端训练 → 边缘部署识别网络定制流水线并能直接运行文中给出的每一条命令。一、为什么需要重训练识别网络仓库随附的 GoogleNet、AlexNet 等识别模型是在 ImageNet ILSVRC12 基准的1000 个物体类别上预训练好的。这 1000 个类别非常细粒度例如犬类细分出了 122 个品种、猫类细分出了 13 个亚种。实际业务往往并不需要如此细的粒度而是想要识别全新的物体类别预训练模型中没有的类重新组织已有的类别把多个细分子类合并成一个实用的超类。本文教程采用第二种思路从 1000 类中选取 230 类合并为 12 个大类然后重训练网络。这样每个大类拥有远超单个 synset 的训练数据量分类置信度更强也更贴近真实应用例如不再输出Chihuahua吉娃娃而是统一输出dog。重训练本身在DIGITSNVIDIA 的深度学习训练 Web 平台上完成训练产物再回到 Jetson 上用 TensorRT 加速推理整个流程如下图所示二、端到端重训练流水线总览阶段操作载体1下载 ILSVRC12 图像数据集约 100GBDIGITS 服务器 tools/imagenet-download.py2自定义类别把 synset 分组归并tools/imagenet-subset.sh3导入分类数据集DIGITS Datasets 页4创建并训练分类模型DIGITS Models 页5在 DIGITS 内验证推理DIGITS 单图测试6下载模型快照到 Jetson浏览器 / SCP7用 TensorRT 加载自定义模型imagenet-console/imagenet-camera三、下载 ILSVRC12 图像识别数据集3.1 数据集概况与磁盘准备识别数据集的形态是大量按类别目录归档的图像。ILSVRC12 正是默认 GoogleNet / AlexNet 模型的训练数据约100GB体积100 万张图片覆盖1000 个不同类别。DIGITS 服务器上请预留120GB以上磁盘空间数据集 100GB 解压与转换余量。随后在存放数据集的目录执行$ wget --no-check-certificate https://nvidia.box.com/shared/static/gzr5iewf5aouhc5exhp3higw6lzhcysj.gz -O ilsvrc12_urls.tar.gz $ tar -xzvf ilsvrc12_urls.tar.gz $ python imagenet-download.py ilsvrc12_urls.txt . --jobs 100 --retry 3 --sleep 0上述命令先在服务器上拿到图片 URL 清单ilsvrc12_urls.txt和采集脚本再启动爬虫批量下载。脚本本体在仓库中为 tools/imagenet-download.py可以直接从仓库拷贝到 DIGITS 服务器使用。注意在办公/企业网络环境中运行图片爬虫时请注意对网络资源的占用IT 部门可能会标记这类高频抓取行为。以正常的带宽条件下载完 1000 个 ILSVRC12 类别的约 100GB 数据通常需要一整晚。3.2 爬虫参数详解与源码级原理imagenet-download.py是典型的生产者-消费者多线程爬虫仓库源码 tools/imagenet-download.py 中的download_imagenet()函数实现了一个 producer 线程逐行读取 URL 清单入队N 个 consumer 线程并发下载写盘另有一个 message 线程持续输出进度百分比与成功率。可调参数如下参数默认值说明--jobs/-j1并行下载线程数教程示例为 100--timeout/-t10单张图片下载超时秒--retry/-r10每张图片最大重试次数--sleep/-s1每下载一张后的休眠秒数教程示例--sleep 0表示不休眠提速用--verbose/-v关输出逐条错误详情--offset/-o0从清单第 N 行开始下载支持分段续传--msg/-m1进度日志刷新间隔秒从源码可以印证几个实用行为断点续传consumer 线程在下载前先用glob检查synset/image.*是否已存在命中即跳过skipping: already have ...因此中断后重新运行不会重复下载图片类型校验下载后用imghdr.what()检测真实格式按jpg/png/...自动决定扩展名容错重试对 HTTP 5xx 服务端错误和socket.gaierror网络错误按--retry次数重试其它错误直接记录后继续目录组织每个图片按name.split(_)[0]提取 synset ID 作为子目录out_dir/synset/name.ext。3.3 输出目录与 synset 概念爬虫会把每个类别放进独立的目录ILSVRC12 共 1000 个目录命名形如n01440764/ n01443537/ n01484850/ n01491361/ n01494475/ ...这些n开头的 8 位 ID 就是该类的synset ID。synset ID 与人类可读名称的对应关系可以在仓库 data/networks/ilsvrc12_synset_words.txt 中查到例如n01484850 great white shark, white shark, ... n01498041 stingray四、自定义目标类别把 1000 类合并成 12 类4.1 分组设计下载到的数据集正是默认 AlexNet / GoogleNet 模型的训练数据覆盖鸟类、植物、水果、鱼类、犬猫品种、交通工具等核心组。教程为 GoogleNet 设计了一个12 个核心大类的伴生模型例如不再区分 122 个犬种而是统一合并为一个dog类。合并的价值在于——每个大类获得更多训练样本分类更强、更稳且更贴合实际使用。DIGITS 要求数据按目录层级组织因此可以创建大类目录、再用符号链接指向上面下载的 ILSVRC12 synsetDIGITS 会自动把大类目录下所有子目录即被链接的 synset的图像合并训练。目标目录结构如下括号内是该大类包含的 synset 个数箭头指向被链接的 synset ID‣ ball/ (7) • baseball (→n02799071) • basketball (→n02802426) • soccer ball (→n04254680) • tennis ball (→n04409515) • ... ‣ bear/ (4) • brown bear (→n02132136) • black bear (→n02133161) • polar bear (→n02134084) • sloth bear (→n02134418) • bike/ (3) • bird/ (17) • bottle/ (7) • cat/ (13) • dog/ (122) • fish/ (5) • fruit/ (12) • turtle/ (5) • vehicle/ (14) • sign/ (2)4.2 用 imagenet-subset.sh 一键生成目录与链接由于要从 ILSVRC12 链接的 synset 很多仓库提供了现成脚本 tools/imagenet-subset.sh在 DIGITS 服务器上执行$ mkdir 12_classes $ ./imagenet-subset.sh /opt/datasets/imagenet/ilsvrc12 12_classes第一个参数是上一步下载的 ILSVRC12 路径第二个参数是输出目录本例12_classes脚本会生成全部 12 个大类目录并逐条ln -s建立软链接。源码层面脚本为每个大类内的每个子类执行ln -s $DATASET_PATH/synset $OUTPUT_PATH/group/subclass例如mkdir $OUTPUT_PATH/ball ln -s $DATASET_PATH/n02799071 $OUTPUT_PATH/ball/baseball ln -s $DATASET_PATH/n02802426 $OUTPUT_PATH/ball/basketball ln -s $DATASET_PATH/n04254680 $OUTPUT_PATH/ball/soccer_ball ln -s $DATASET_PATH/n04409515 $OUTPUT_PATH/ball/tennis_ballbear组则链接n02132136棕熊、n02133161黑熊、n02134084北极熊、n02134418懒熊。注意ln -s只是软链接不复制数据因此不会额外占用 100GB 磁盘所有大类共享同一份 ILSVRC12 数据。五、在 DIGITS 中导入分类数据集浏览器打开 DIGITS 实例在Datasets标签页的下拉菜单中选择新建Classification Dataset将Training Images路径设为上一步生成的12_classes文件夹并填写表单项值% for validation验证集比例10Group Name分组名ImageNetDataset Name数据集名ImageNet-ILSVRC12-subset点击页面底部Create按钮启动导入任务。该数据子集约20GB取决于服务器磁盘 I/O通常耗时10–15 分钟。完成后即可进入下一步创建模型。六、创建分类模型并开始训练6.1 DIGITS 表单配置数据导入完成后返回 DIGITS 首页选择Models标签页从下拉菜单新建Classification Model填写以下配置表单项值Select Dataset选择数据集ImageNet-ILSVRC12-subsetSubtract Mean均值减除方式PixelStandard Networks标准网络GoogleNetGroup Name分组名ImageNetModel Name模型名GoogleNet-ILSVRC12-subset勾选一块可用 GPU点击底部Create开始训练。训练运行 30 个 epoch 后完成。6.2 训练产物的仓库证据训练出的模型与仓库预置的googlenet-12模型形态一致。在 data/networks/models.json 中可以看到该模型的预置条目googlenet-12: { url: ..., tar: GoogleNet-ILSVRC12-subset.tar.gz, dir: GoogleNet-ILSVRC12-subset, model: snapshot_iter_184080.caffemodel, prototxt: deploy.prototxt, labels: labels.txt, description: GoogleNet trained on 12-class subset of ImageNet ILSVRC12 }它正好对应本文训练出的12 类 GoogleNet网络结构描述文件deploy.prototxt、权重快照snapshot_iter_184080.caffemodel、类别名文件labels.txt。这也说明把 1000 类重训练为 12 类后可以直接复用仓库的模型加载与部署链路。七、在 DIGITS 中验证新模型的推理效果训练完成后在模型页的Trained Models区域向下滚动在Test a Single Image下选择一张图片试测例如/ilsvrc12/n02127052/n02127052_1203.jpg这是一张猞猁/山猫照片点击Classify One得到类似下面的结果关键验证点在于该图在新模型GoogleNet-12中被分类为cat而原GoogleNet-1000中它是Lynx猞猁。这正是预期行为——Lynx类别已被归并进 GoogleNet-12 的cat大类说明新模型训练正确。八、把模型快照下载到 Jetson在 Jetson 的浏览器中访问 DIGITS 服务器上的GoogleNet-ILSVRC12-subset模型在Trained Models区域的快照下拉框中选择目标快照通常选epoch 数最高的那个点击Download Model按钮如果 Jetson 与 DIGITS 服务器不在同一网络可以先用上述步骤把快照下载到中间机器再通过 SCP 或 U 盘拷贝到 Jetson。解压快照cd directory where you downloaded the snapshot tar -xzvf 20170524-140310-8c0b_epoch_30.0.tar.gz解压后得到deploy.prototxt、snapshot_iter_*.caffemodel、labels.txt等文件与 data/networks/models.json 中googlenet-12的目录结构一致。九、在 Jetson 上用 TensorRT 加载自定义模型9.1 命令行加载方式此前使用的imagenet-console与imagenet-camera都支持扩展命令行参数来加载自定义快照。把$NET变量设为解压后的快照路径$ NETnetworks/GoogleNet-ILSVRC12-subset $ ./imagenet-console bird_0.jpg output_0.jpg \ --prototxt$NET/deploy.prototxt \ --model$NET/snapshot_iter_184080.caffemodel \ --labels$NET/labels.txt \ --input_blobdata \ --output_blobsoftmax运行后分类结果与置信度会叠加绘制到输出图上。与原始网络相比重训练后的 GoogleNet-12 输出的是我们定义的元类别meta-class而不是原始 1000 个细分类别9.2 参数语义与源码佐证以上扩展参数正是 c/imageNet.h 中imageNet::Create()解析的命令行选项源码里通过宏IMAGENET_USAGE_STRING完整声明参数默认值含义--prototxt无自定义网络结构文件路径仅.caffemodel需要--model无自定义模型权重路径caffemodel / uff / onnx--labels无各类别名称的文本文件路径--input-blobdataIMAGENET_DEFAULT_INPUT输入层 blob 名--output-blobprobIMAGENET_DEFAULT_OUTPUT输出层 blob 名示例中的softmax因 DIGITS 导出而异--threshold0.01分类最低置信度阈值低于该值的类会被忽略--smoothing关时序平滑权重[0,1]或帧数降低视频流抖动源码中Classify()的语义是返回满足阈值的最大似然类别 ID若无类别达到阈值返回-1运行错误返回-2GetClassLabel(index)/GetNumClasses()分别用于取类别名与类别总数。这意味着 12 类模型在 Jetson 上的输出空间就是 12 个(classID, confidence)对后续可自由接入自己的应用逻辑。十、后续步骤想先熟悉默认模型的命令行用法参见 docs/imagenet-console.md含全部可用预训练模型及其--network参数表想验证自定义模型在实时摄像头上的效果参见 docs/imagenet-camera.md--camera、--width、--height等参数想阅读完整教程流程可回到 README.md 的 Two Days to a Demo 目录重训练检测网络目标定位的流程与本文分类任务互补参见 docs/detectnet-training.md。至此你已经完整走通了ILSVRC12 数据采集 → 12 类目录归并 → DIGITS 数据集导入 → GoogleNet 重训练 → 快照下载 → TensorRT 自定义加载的识别网络定制闭环可以把这套流程迁移到自己的数据集与类别设计上。赞分享人工智能计算机视觉深度学习微调【免费下载链接】jetson-inferenceHello 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 模型快照下载指南从 DIGITS 导出自定义分类网络到 Jetson 并加载入 TensorRTjetson inference 模型快照下载指南从 DIGITS 导出自定义分类网络到 Jetson 并加载入 TensorRT 本指南聚焦 jetson人工智能计算机视觉深度学习微调生成 FCN-Alexnet 预训练分割模型jetson-inference 的 DIGITS 工作流从模型转换到 TensorRT 部署生成 FCN Alexnet 预训练分割模型jetson inference 的 DIGITS 工作流从模型转换到 TensorRT 部署 导读 本指南聚焦人工智能计算机视觉深度学习微调用 DIGITS 训练 FCN-Alexnet 语义分割模型jetson-inference 端到端实操指南用 DIGITS 训练 FCN Alexnet 语义分割模型jetson inference 端到端实操指南 本文是 jetson inference 仓库语人工智能计算机视觉深度学习微调上一篇如何使用React Styleguidist Slugger类生成文档ID完整指南下一篇iOS项目模板使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。