人工智能计算机视觉深度学习微调【免费下载链接】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 上使用camera-capture工具从实时视频流中采集并标注属于自己的目标检测数据集Pascal VOC 格式随后基于这些数据用 PyTorch 微调 SSD-Mobilenet 模型并通过train_ssd.py、onnx_export.py和detectnet完成「采集 → 标注 → 训练 → 导出 → 部署」的完整闭环。读完本文你将能够自主构建自定义目标检测模型的全部数据管线并掌握各环节的命令、参数与注意事项。camera-capture是 jetson-inference 项目为「收集自己的训练数据集」打造的图形化标注工具其姊妹篇 分类数据集的采集指南 描述了它在 Classification 模式下的用法当把Dataset Type下拉框切换到 Detection 模式后同一个工具便从「拍照分类」切换为「画框检测」工作流且生成的数据集是训练脚本直接支持的 Pascal VOC 格式。一、工作流程总览从采集到部署目标检测模型的完整链路如下创建数据集目录与类标签文件labels.txt用camera-capture从摄像头实时画面中冻结帧、绘制边界框并标注类别按 train/val/test 划分保存用train_ssd.py以 Pascal VOC 数据集格式微调 SSD-Mobilenet用onnx_export.py将 PyTorch 模型转换为 ONNX用detectnetC或detectnet.pyPython加载 ONNX 模型进行推理。其中步骤 35 的详细训练过程在前一篇教程 Re-training SSD-Mobilenet 中已有完整阐述本文重点展开前两步——即「如何采集和标注自己的检测数据集」并在后文中串联训练与部署命令。二、创建标签文件与数据集目录在jetson-inference/python/training/detection/ssd/data下为你的数据集创建一个空目录并新建一个文本文件惯例命名为labels.txt来定义类别标签。标签文件每行一个类别顺序即类别编号顺序例如Water Nalgene Coke Diet Coke Ginger ale该标签文件将同时驱动数据集的子目录结构创建、标注时的类别下拉列表以及后续训练与推理时的类别映射因此类别名务必与你期望的模型输出保持一致。提示如果你使用的是 Docker 容器建议把数据集存放在挂载的数据卷目录下如本教程所述的位置这样容器关闭后数据依然保留。关于已有图片的标注如果手头已经有一批现成图片而非从摄像头实时采集文档建议改用开源标注工具如 CVAT来标注并以 Pascal VOC 格式导出数据集然后在数据集中创建一份包含各类别名称的labels.txt。这意味着本节所述的目录结构和标签文件约定同样适用于外部标注工具导入的场景——Pascal VOC 是训练脚本统一识别的数据交换格式。三、启动 camera-capture 工具camera-capture工具的源码位于仓库的 tools/camera-capture/ 目录与其他程序一样构建后会安装到系统中。它接受与摄像头流与多媒体页面一致的各种输入 URI常见启动命令如下$ camera-capture csi://0 # 使用默认的 MIPI CSI 摄像头 $ camera-capture /dev/video0 # 使用 V4L2 摄像头 /dev/video0csi://0对应 Jetson 开发板上的 MIPI CSI 摄像头接口/dev/video0对应通过 V4L2 驱动的 USB 摄像头等设备节点。提示关于可选的摄像头型号可参考 Jetson 官方 Wiki 中对应平台的摄像头章节Nano、Xavier 各平台均有兼容传感器列表TX1/TX2 开发者套件则自带板载 MIPI CSI 传感器模块。四、采集与标注数据启动工具后首先将控制窗口Data Capture Control中的Dataset Type下拉框切换为Detection模式——这是关键的第一步只有在该模式下工具才会以 Pascal VOC 格式组织数据集而不是像 Classification 模式那样按类别目录存放 JPEG。随后在控制窗口中打开你创建的数据集路径与类别标签文件。加载成功后Freeze/Edit与Save按钮将由灰色变为可用状态。冻结画面并绘制边界框将摄像头对准场景中的目标物体点击Freeze/Edit按钮或按下空格键实时画面即被「冻结」在冻结的画面上为每个目标物体绘制边界框在控制窗口的网格表格中为每个边界框选择对应的物体类别完成标注后再次点击处于按下状态的Freeze/Edit按钮保存数据并解除冻结为下一张图像做准备。控制窗口中的其他控件控件功能说明Save on Unfreeze勾选后在解除冻结时自动保存当前标注数据Clear on Unfreeze勾选后在解除冻结时自动清除上一张图的边界框Merge Sets将同一份数据同时保存到 train、val、test 三个集合Current Set选择当前收集的数据归属 train / val / test 哪个集合目标检测至少需要 train 与 test 两个集合若勾选Merge Sets则数据会被复制为 train、val、test 三份JPEG Quality控制保存图像的编码质量与磁盘占用大小数据质量要点为了训练出对噪声和环境变化鲁棒的模型数据应尽量覆盖多样化的物体姿态、不同的相机视角、不同的光照条件并最好搭配不同的背景。如果模型表现不如预期优先补充更多训练数据并调整上述采集条件而不是急于调整超参数。五、训练你的检测模型收集到足够的数据后即可使用与 Re-training SSD-Mobilenet 相同的train_ssd.py脚本来训练模型。训练流程完全一致唯一区别是需要额外指定两个参数--dataset-typevoc声明数据集为 Pascal VOC 格式与--dataPATH指向你的数据集目录$ cd jetson-inference/python/training/detection/ssd $ python3 train_ssd.py --dataset-typevoc --datadata/YOUR-DATASET --model-dirmodels/YOUR-MODEL注意训练过程中若遇到内存不足或进程被系统「killed」的情况可尝试挂载 SWAP 与禁用桌面 GUI来释放内存同时也可以调小--batch-size默认 4与--workers默认 2进一步降低内存占用。与训练分类模型类似train_ssd.py的其他常用参数--resume、--epochs等及其默认值、含义可参考 Re-training SSD-Mobilenet 一文中的参数表格也可以通过python3 train_ssd.py --help查看完整说明。六、导出为 ONNX 并部署推理1. 转换模型训练完成后需要将 PyTorch 模型转换为 ONNX 格式以便 TensorRT 加载$ python3 onnx_export.py --model-dirmodels/YOUR-MODEL转换后的模型将保存为YOUR-MODEL/ssd-mobilenet.onnx。2. 用 detectnet 加载推理接下来就可以像之前示例那样用detectnetC 版或detectnet.pyPython 版程序加载该 ONNX 模型NETmodels/YOUR-MODEL detectnet --model$NET/ssd-mobilenet.onnx --labels$NET/labels.txt \ --input-blobinput_0 --output-cvgscores --output-bboxboxes \ csi://0其中--input-blob、--output-cvg、--output-bbox分别指定了模型的输入张量与置信度、边界框输出张量的名称csi://0为摄像头输入源同样支持aux-streaming.md#sequences中的其他输入 URI。如需在 Python 环境中运行将detectnet替换为detectnet.py即可。关键提示推理时务必使用模型目录中自动生成的labels.txt而不是你最初为数据集创建的那份。原因是train_ssd.py会在类别标签中额外加入一个BACKGROUND背景类并将更新后的标签文件保存到模型目录——训练好的模型正是以这份含背景类的标签作为输出映射的。3. 迭代优化如果模型效果不理想可以返回去补充更多训练数据并重新训练。借助--resume参数用法见python3 train_ssd.py --help训练可以在中断后从既有 checkpoint 继续无需从头开始但请记住每次重新训练后都必须重新执行onnx_export.py导出新的 ONNX 模型再用于推理。七、小结本文完整覆盖了 jetson-inference 中「自建目标检测数据集」的整条链路数据集组织在 python/training/detection/ssd/data 下按 Pascal VOC 格式组织数据用labels.txt定义类别采集标注用 camera-capture 工具在 Detection 模式下冻结画面、绘制边界框并划分 train/val/test 集合训练导出train_ssd.py --dataset-typevoc微调 SSD-Mobilenetonnx_export.py导出 ONNX部署推理detectnet加载ssd-mobilenet.onnx与模型目录下的labels.txt进行实时目标检测。掌握这条管线后你便可以为任意自定义物体类别构建专属于 Jetson 平台的实时目标检测应用并与 WebApp Frameworks 等后续章节衔接将模型部署到完整的应用框架中。赞分享人工智能计算机视觉深度学习微调【免费下载链接】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 自定义图像分类数据集采集指南使用 camera-capture 从零构建 PyTorch 训练集jetson inference 自定义图像分类数据集采集指南使用 camera capture 从零构建 PyTorch 训练集 本文是 jetson in人工智能计算机视觉深度学习微调使用 PASCAL VOC 数据集训练 YOLOv10 目标检测模型从数据集结构到完整实战使用 PASCAL VOC 数据集训练 YOLOv10 目标检测模型从数据集结构到完整实战 PASCAL VOCVisual Object Classes人工智能深度学习计算机视觉FiftyOne 数据集 Zoo 实战加载与使用 PASCAL VOC 2007voc-2007检测数据集FiftyOne 数据集 Zoo 实战加载与使用 PASCAL VOC 2007voc 2007检测数据集 PASCAL Visual Object Cl人工智能计算机视觉数据集数据可视化数据标注模型评测上一篇终极指南OpenFace人脸识别技术的7大发展趋势与未来展望下一篇You-are-Pythonista中的10个顶级Python应用从脚本到项目的完整清单创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
