人工智能计算机视觉深度学习微调【免费下载链接】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 仓库语义分割Semantic Segmentation训练链路的实操指南核心讲解如何在 NVIDIA DIGITS 中创建并训练 FCN-Alexnet 分割模型覆盖从预训练模型生成、训练参数配置、训练收敛观察、DIGITS 内推理测试到将模型快照迁移至 Jetson 并经 TensorRT 兼容化后部署运行的全流程。读完本文你将掌握在 DIGITS 中基于自建分割数据集以航拍无人机 FPV 数据集为例完成 FCN-Alexnet 训练的全部关键步骤并能将训练产物无缝接入本仓库的segNet推理管线。一、训练前的完整准备链路本仓库的语义分割教程是一条三步走的技术链路docs/segnet-training.md是其中的第三步训练前两步缺一不可导入分割数据集参考 docs/segnet-dataset.md在 DIGITS 中创建Segmentation Dataset把航拍无人机数据集NVIDIA-Aerial-Drone-Dataset/FPV/SFWA的720p/images与720p/labels分别指定为特征图与标签图文件夹% for validation设为 1%Class labels 指向fpv-labels.txtColor map 选择From text fileFeature/Label Encoding 均选None生成 FCN-Alexnet 预训练模型参考 docs/segnet-pretrained.md通过 DIGITS 语义分割示例自带的net_surgery脚本把 ImageNet 预训练 Alexnet“卷积化”为全卷积网络FCN形态在 DIGITS 中训练分割模型即本文主体基于上一步生成的fcn_alexnet.caffemodel与导入的数据集训练出可用的航拍分割模型随后经 docs/segnet-patches.md 的 TensorRT 补丁处理后在 Jetson 上由segNet完成推理部署docs/segnet-console.md。关于语义分割的定位与整图分类imageNet不同语义分割在像素级进行分类。做法是把预训练图像识别模型如 Alexnet卷积化转成可逐像素标注的全卷积分割模型适合环境感知与避障等场景。在本仓库中c/segNet.h 的segNet类接收 2D 图像输入输出带有逐像素分类掩码叠加的第二张图像每个掩码像素对应一个被分类的物体类别。二、生成 FCN-Alexnet 预训练模型net_surgery训练之前必须先拿到 FCN-Alexnet 的预训练权重。FCN 的关键在于“卷积化”把 Alexnet 末端的全连接层改写为卷积层使网络能接受任意尺寸输入并输出与空间位置对应的逐像素分类图。DIGITS 5 新增了对分割数据集与分割模型训练的支持并在其语义分割示例DIGITS/examples/semantic-segmentation中附带了把 Alexnet 转换为 FCN-Alexnet 的脚本。在运行 DIGITS 服务器的主机上打开终端进入 DIGITS 示例目录并执行$ cd DIGITS/examples/semantic-segmentation $ ./net_surgery.py Downloading files (this might take a few minutes)... Downloading https://raw.githubusercontent.com/BVLC/caffe/rc3/models/bvlc_alexnet/deploy.prototxt... Downloading http://dl.caffe.berkeleyvision.org/bvlc_alexnet.caffemodel... Loading Alexnet model... ... Saving FCN-Alexnet model to fcn_alexnet.caffemodel脚本会自动下载 BVLC 发布的 Alexnet 原始模型deploy.prototxt 与 bvlc_alexnet.caffemodel执行网络结构转换后保存为fcn_alexnet.caffemodel。这个文件将作为后续在 DIGITS 中训练航拍分割模型时的预训练起点Pretrained Model其路径为DIGITS/examples/semantic-segmentation/fcn_alexnet.caffemodel。三、在 DIGITS 中创建分割模型训练核心步骤当上一节的数据导入任务完成后回到 DIGITS 首页进入Models选项卡从下拉菜单中选择新建Segmentation Model。3.1 模型创建表单的关键配置在模型创建表单中核心配置项如下配置项取值说明数据集上一步创建的航拍分割数据集训练样本来自已导入 DIGITS 的 FPV/SFWA 数据Subtract MeanNone不做均值减除避免引入与训练数据不匹配的像素偏移Base Learning Rate0.0001基学习率从预训练模型继续微调时使用较小的学习率Custom Network → Caffe粘贴 FCN-Alexnet prototxt指定网络拓扑fcn_alexnet.prototxt来自 DIGITS 语义分割示例Pretrained ModelDIGITS/examples/semantic-segmentation/fcn_alexnet.caffemodel上一步 net_surgery 生成的全卷积预训练权重设置网络拓扑时选择Custom Network选项卡并确保Caffe子选项卡处于选中状态然后把 DIGITS 语义分割示例提供的FCN-Alexnet prototxtfcn_alexnet.prototxt完整复制粘贴到文本框中Pretrained Model一栏则填入第二节生成的fcn_alexnet.caffemodel路径。3.2 启动训练并观察收敛为模型命名后点击页面底部的Create按钮即启动训练任务。训练约5 个 epoch后Accuracy曲线橙色应开始明显爬升此时模型已具备可用性源码侧印证训练出的分割模型类别数量、输出网格分辨率与segNet的接口直接对应。查看 c/segNet.hGetNumClasses()返回输出 blob 的通道数DIMS_C(mOutputs[0].dims)GetGridWidth()/GetGridHeight()返回原始分割输出的空间分辨率DIMS_W/DIMS_HGetClassLabel(id)与GetClassColor(id)分别按索引取类别名与可视化颜色。这解释了为什么训练数据集必须同时提供类别标签文件fpv-labels.txt与颜色映射文件——segNet::loadClassLabels()/loadClassColors()见 c/segNet.cpp正是消费这些文件的入口。四、在 DIGITS 中测试推理模型在把训练好的模型迁移到 Jetson 之前先在 DIGITS 内做一次推理验证。在训练结果页面即上文 Accuracy 曲线的同一页面向下滚动到Trained Models区域将Visualization Model设置为Image Segmentation在Test a Single Image下选择一张测试图例如/NVIDIA-Aerial-Drone-Dataset/FPV/SFWA/720p/images/0428.png点击Test One页面会显示类似如下的逐像素分割可视化结果。验证通过后下载并解压训练模型快照snapshot到 Jetson即可进入下一步 TensorRT 兼容化与部署。五、模型快照的 TensorRT 兼容化迁移前必须执行的补丁训练得到的 snapshot 中的deploy.prototxt包含两个 TensorRT 不支持的层需要按 docs/segnet-patches.md 的说明手工删除并做一处参数修正删除deploy.prototxt末尾的 deconv 与 crop 层即upscoreDeconvolutionkernel_size: 63、group: 21、stride: 32、权重填充bilinear和scoreCropaxis: 2、offset: 18。这两层是训练阶段用于把低分辨率分数图上采样回输入尺寸的后处理层推理侧由segNet的Overlay/Mask例程替代因此必须从部署图中移除将deploy.prototxt第 24 行的pad: 100改为pad: 0——FCN-Alexnet 输入层的 100 像素填充同样不属于 TensorRT 支持的推理路径把航拍数据集的fpv-labels.txt与fpv-deploy-colors.txt复制到 Jetson 上的模型快照文件夹供segNet加载类别名与可视化颜色。完成这三步后模型快照即可被 TensorRT 解析并加载。六、在 Jetson 上运行分割模型落地验证部署侧使用本仓库的segnet命令行示例。需要说明的是当前仓库中该示例位于 examples/segnet/segnet.cpp示例目录为examples/segnet编译产物segnet读取一个输入流图片/视频/摄像头输出叠加了分割掩码的渲染结果。为方便起见先把解压后的快照路径存入环境变量$ NET20170421-122956-f7c0_epoch_5.0然后对单张图片运行推理$ ./segnet drone_0428.png output_0428.png \ --prototxt$NET/deploy.prototxt \ --model$NET/snapshot_iter_22610.caffemodel \ --labels$NET/fpv-labels.txt \ --colors$NET/fpv-deploy-colors.txt \ --input_blobdata \ --output_blobscore_fr各参数含义如下参数含义--prototxt补丁处理后的部署网络定义deploy.prototxt仅对 .caffemodel 生效--model训练得到的权重快照snapshot_iter_22610.caffemodel--labels类别标签文件fpv-labels.txt--colors类别可视化颜色文件fpv-deploy-colors.txt--input_blob网络输入 blob 名FCN-Alexnet 为data--output_blob网络输出 blob 名FCN-Alexnet 为score_fr补丁删除 upscore/score 后的最后一层上述参数与 c/segNet.h 中SEGNET_USAGE_STRING定义的命令行选项一一对应segNet::Create(cmdLine)见 c/segNet.cpp会据此加载 prototxt/caffemodel 并解析--input-blob/--output-blob指定的张量名。此外还可选用--alphaoverlay 透明度0-255默认 150、--visualizeoverlay/mask/overlay|mask、--filter-modepoint/linear与--ignore-class默认忽略void类等参数详见 examples/segnet/segnet.cpp 主循环对SetOverlayAlpha、VisualizationFlagsFromStr、FilterModeFromStr的调用c/segNet.cpp。除了本文训练的航拍模型仓库还提供了 Cityscapes、SYNTHIA、Pascal-VOC 等数据集的预训练分割模型可直接通过segNet::Create(network)加载从源码结构看fcn-resnet18-voc是默认网络见 c/segNet.hSEGNET_USAGE_STRING列出的 fcn-resnet18 系列模型。七、深入源码segNet 推理与可视化管线理解训练产物的消费方式能帮你更好地判断训练配置是否合理。segNet的推理主流程以 examples/segnet/segnet.cpp 为参考为videoSource捕获一帧图像input-Capturenet-Process(imgInput, width, height, ignoreClass)执行 TensorRT 推理对输出网格做 argmax 分类得到每块的类别索引对应 c/segNet.h 中classify()与mClassMap运行时缓冲按需生成可视化结果net-Overlay(...)把类别颜色按 alpha 混合叠加到原图VISUALIZE_OVERLAYnet-Mask(...)输出纯色化的分割掩码VISUALIZE_MASK两者同时启用时通过cudaOverlay拼成左右并排的 composite 图videoOutput-Render渲染输出状态栏显示 TensorRT 版本、网络名与实时 FPS。Overlay/Mask均支持FILTER_POINT最近邻与FILTER_LINEAR双线性两种上采样滤波模式默认线性上采样尺寸即原始输入图像尺寸正好替代了训练图中被删除的 deconv/crop 层功能——这也从实现层面解释了第五节补丁操作的合理性。至此从 DIGITS 训练 FCN-Alexnet 航拍分割模型到 Jetson 上 TensorRT 推理的完整闭环已经打通数据集导入 → net_surgery 生成预训练模型 → DIGITS 创建并训练分割模型 → DIGITS 内测试 → 下载快照并打 TensorRT 补丁 → 在 Jetson 上通过 segNet 推理。你可以沿这条链路将同样的方法迁移到自己的自定义分割数据集上。赞分享人工智能计算机视觉深度学习微调【免费下载链接】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点击查看免费下载相关推荐TorchVision FCN 语义分割模型完全指南FCN-ResNet50 / FCN-ResNet101 的架构、预训练权重与实战使用TorchVision FCN 语义分割模型完全指南FCN ResNet50 / FCN ResNet101 的架构、预训练权重与实战使用 本文以 Torch计算机视觉深度学习图像处理数据集解密NVIDIA-Nemotron-Parse-v1.1-TC架构ViT-H编码器与mBart解码器的完美协作解密NVIDIA Nemotron Parse v1.1 TC架构ViT H编码器与mBart解码器的完美协作 NVIDIA Nemotron Parse v使用 SuperGradients 训练语义分割模型模型库、损失函数与端到端实战指南使用 SuperGradients 训练语义分割模型模型库、损失函数与端到端实战指南 SuperGradients 为语义分割任务提供了一套完整的开箱即用方案深度学习计算机视觉预训练人工智能上一篇mailcow 中的 QRicket QR 码提供商TwoFactorAuth 库可选配置与源码级解析下一篇国家中小学智慧教育平台电子课本下载终极指南三步获取PDF教材的完整解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
