news 2026/4/24 23:14:57

模型识别更多种类的物体

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
模型识别更多种类的物体

让模型识别更多种类的物体,核心步骤是收集新类别的3D标注数据,并在原模型基础上进行训练和微调。这个过程对工程能力有一定要求,但基本路径是清晰的。

整个训练流程主要包括以下四个阶段:

  • 1. 数据集准备与标注:准备新类别的图像与与之精确对齐的3D边界框标注。

  • 2. 浮点模型训练/微调:基于地平线提供的算法参考框架,加载预训练权重,在自定义数据集上进行微调。

  • 3. 模型转换与量化:通过地平线工具链,将训练好的模型转换为能在芯片上高效运行的.hbm格式。

  • 4. 部署与集成:将模型文件部署到RDK开发板上,并修改代码以适配新的检测类别。


📝 1. 数据集准备与标注

这是最关键也最耗时的一步。高质量的标注数据是模型性能的基石。

  • 数据采集:采集包含新类别物体的图片,确保涵盖不同角度、距离、光照和背景。相机参数应与最终部署时一致。

  • 3D标注:这是和普通2D检测最大的不同。你需要为每个物体标注3D边界框,包括中心点坐标、长、宽、高和朝向角。这通常需要借助专门的3D标注工具。

  • 数据格式转换mono3d_indoor_detection示例使用的是COCO格式的标注文件 (train.json,val.json)。你需要将自己的3D标注数据转换成这种格式

关于使用合成数据的说明
除了依赖稀少的真实3D标注数据,在特定场景下使用仿真合成的3D数据进行训练也是一个值得考虑的路径。使用如NVIDIA Isaac Sim、Unreal Engine等仿真平台,可以自动、大规模地生成带有精确3D框标注的图像数据,有效降低对真实采集数据的依赖。


🏋️ 2. 模型训练与微调

在PC端(需具备NVIDIA GPU)使用地平线的算法工具链来完成。

2.1 基础环境搭建

模型训练在PC端(需具备NVIDIA GPU)进行。推荐使用地平线官方提供的Docker镜像,它可以一键配置好所有训练环境,避免繁琐的依赖问题

2.2 获取示例与修改配置

从地平线的horizon_model_train_sample目录中获取CenterNet的参考代码

在此基础上,你需要进行以下几处关键修改:

  • 修改数据集加载类
    src/lib/datasets/dataset路径下,创建一个新的数据集文件(如my_dataset.py)。你可以参考示例中的coco.py文件,修改num_classes为你的总类别数,并确保数据加载逻辑正确

  • 修改配置文件
    找到用于训练的YAML配置文件,将NUM_CLASSES修改为新数据集的类别总数

  • 配置3D输出头
    最关键的一步。在配置文件中,你需要找到用于回归3D信息的common_heads部分。CenterNet3DOutputParser的解析逻辑要求模型的输出必须包含特定顺序和含义的张量,你需要根据这个要求来设计你的输出头。具体可以参考如下结构与任务对应关系

  • :

Head 名称输出维度 (示例)对应的几何语义
reg2中心点偏移 (x, y)
height1物体高度 (z)
dim3物体的尺寸 (长, 宽, 高)
rot2朝向 (编码为 sin(α), cos(α))

2.3 开始训练

完成上述配置后,在PC端执行训练脚本:

bash

python main.py ctdet --exp_id my_custom_robot --dataset my_dataset --batch_size 8 --lr 1.25e-4

命令中的my_dataset应与你上一步定义的类名一致。建议使用迁移学习策略,加载COCO或KITTI等大型公开数据集的预训练权重,能极大提升训练效率和最终精度


💻 3. 模型转换与部署

训练完成后的浮点模型需要转换为.hbm文件,才能在RDK上高效运行。

3.1 导出ONNX模型

将训练好的PyTorch模型导出为ONNX格式。

3.2 使用地平线工具链量化

地平线的BPU计算单元主要进行定点运算。因此,你需要使用其模型转换工具将浮点模型量化为定点模型

。这个过程中,你需要准备:

  • 上一步导出的.onnx模型文件。

  • 一个.yaml格式的模型转换配置文件。

  • 用于量化的校准数据集。

工具链会提供PTQ(训练后量化)QAT(量化感知训练)

两种方式。PTQ流程简单,通常能满足需求;若精度不佳,可尝试QAT。

3.3 部署

转换成功后,你会得到一个.hbm文件。将它替换到RDK开发板的config目录下

最后,你需要修改mono3d_indoor_detection节点代码中的CenterNet3DDetectionNode::PostProcess函数,更新其中的类别名称打印逻辑,使其能正确显示新类别的名字。


💡 关键提示

  • 验证模型输入尺寸:在转换时,务必确保模型的输入尺寸与示例模型一致(宽x高:960x512

  • 。这是保证它能在参考代码框架中直接运行的关键。

  • 工具链文档是关键:上述过程中的许多细节,如YAML配置文件的具体语法、量化的参数等,都依赖于地平线工具链的版本。请务必仔细查阅你所使用版本的官方工具链文档。

  • 从现有3D检测项目起步:你也可以搜索并参考其他开源的单目3D检测项目,如Monodle

  • FCOS3D等,理解它们的完整实现,对训练会很有帮助。不过,将它们部署到地平线平台时,仍需要遵循其工具链规范。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 23:14:11

深度学习入门指南:核心概念与实战技巧

1. 深度学习入门指南:AI职业起航必备知识刚接触深度学习时,我经常被各种术语和概念搞得晕头转向。反向传播、卷积神经网络、梯度下降...这些名词听起来高大上,但理解起来并不复杂。这份手册将带你系统性地掌握深度学习的基础知识,…

作者头像 李华
网站建设 2026/4/24 23:14:03

Python 文件操作大全

打开文件在读写文件前需要先打开文件用 open 打开一个文件12345678f open(d:/MyComputer/text.txt,r)print(f) print(type(f))"""运行结果<_io.TextIOWrapper named:/My Computer/text.txt moder encodingcp936><class _io.TextIOWrapper>"&…

作者头像 李华
网站建设 2026/4/24 23:02:21

如何用Spek音频频谱分析器轻松掌握音频质量检测:新手终极指南

如何用Spek音频频谱分析器轻松掌握音频质量检测&#xff1a;新手终极指南 【免费下载链接】spek Acoustic spectrum analyser 项目地址: https://gitcode.com/gh_mirrors/sp/spek 想要快速了解音频文件的频谱特性吗&#xff1f;Spek音频频谱分析器就是你的得力助手&…

作者头像 李华
网站建设 2026/4/24 23:02:21

eRoad揭秘:从offer发放到第一天上班,那段「消失的管理空白」

一、「消失的候选人」&#xff1a;被忽视的入职管理黑洞你是否遇到过这样的情况&#xff1a;候选人明明已经接了offer&#xff0c;却在入职前一天突然「失联」&#xff0c;发来的消息只有一句&#xff1a;「不好意思&#xff0c;我决定去另一家公司了。」HR们往往将这种情况归咎…

作者头像 李华