专栏算法工具链J6参考算法使用指南

J6参考算法使用指南

芯链情报局2024-12-10
2537
9

1. J6参考算法介绍

J6参考算法在覆盖J5已有的分类、检测和分割等高效参考算法的基础上,新增了面向J6平台的高效基础算法Backbone,同时面向典型智驾场景推出针对性的场景算法,覆盖动静态目标检测、双目、道路拓扑和预测等丰富场景,秉承地平线软硬件结合的理念,极大地赋能客户设计出J6平台高效的算法。J6平台新增的算法和模型包括:

  • 高效Backbone:HENET系列;

  • 动态障碍物检测:Bevformer、SparseBev等;

  • 通用障碍物检测:FlashOCC等;

  • 静态目标检测:MapTR系列;

  • 多模态融合:Bevfusion等;

  • 轨迹预测:QCNet等。

更多场景算法持续开发和优化中,敬请关注。
参考算法的Model Zoo:J6 算法工具链用户手册-参考算法Model Zoo

2. 快速上手

2.1 算法包获取

参考算法算法包的获取和使用依赖地平线J6算法工具链OpenExplorer开发包以及配套的docker开发环境,其获取方式为:地平线开发者社区-产品中心
算法包config文件和工具脚本路径为:samples/ai_toolchain/horizon_model_train_sample/scripts,目录结构如下:
docker环境模型源码路径:/usr/local/lib/python3.10/dist-packages/hat

2.2 环境搭建

2.2.1 环境要求

依赖

版本

python

3.10

cuda

11.8

torch/torchvision

参考OE发布包

docker

20.10.10

2.2.2 算法包安装

算法包本地安装流程复杂,并且为了不和用户本地开发环境冲突,强烈建议用户使用J6算法工具链提供的GPU Docker集成开发环境

验证当前开发环境已成功安装算法包方式:

正常打印算法包版本信息即为安装成功。

2.3 数据集准备

2.4 模型配置文件解读

模型配置config文件路径:samples/ai_toolchain/horizon_model_train_sample/scripts/configs

模型配置config文件负责定义了模型结构、数据集加载以及整套的训练流程:

注:所有已经提供的config配置,可以保证正常运行和复现精度。如果因为环境配置和训练时间等原因,需要修改配置的话,那么对应的训练策略可能也需要更改

2.5 模型训练

地平线参考算法提供每个阶段训练完成后的权重,在模型对应config文件目录下的README文件中,并指定config文件中ckpt_dir路径加载

2.5.1 浮点训练

完成config文件中参数的配置后,使用以下命令训练浮点模型:

训练完成后的浮点ckpt默认保存在ckpt_dir。

2.5.2 校准

该步骤涉及的QAT校准原理请参考用户手册:J6 算法工具链用户手册-Calibration指南
为加速QAT训练收敛和获得最优量化精度,建议在QAT之前做calibration校准,其过程为通过batch_size个样本初始化量化参数,为QAT的量化训练提供一个更好的初始化参数。
通过运行下面的脚本开启模型的Calibration:
校准calibration之前,通过修改config文件中calibration_trainer的checkpoint_path参数来配置加载的浮点训练权重。

2.5.3 QAT训练

该步骤涉及的QAT量化感知训练原理请参考用户手册:J6 算法工具链用户手册-量化感知训练指南
校准完成后,就可以加载校准权重开启模型的量化训练。 量化训练其实是在浮点训练和校准基础上的fine-tune,具体配置信息在config的qat_trainer中定义。和浮点训练的方式一样,将checkpoint_path指定为训好的校准权重路径。
通过运行下面的脚本开启模型的量化感知训练:

2.6 模型导出

2.6.1 模型检查

在将PyTorch模型编译为板端可部署执行的模型之前,需要先导出为编译器中间表示模型,也即hbir模型。在导出hbir模型之前,可以对模型进行编译器算子支持以及结构支持的检查,通过如下脚本执行:

2.6.2 导出HBIR模型

当校准或量化训练阶段的模型精度满足预期后,可以使用如下命令导出伪量化hbir和定点hbir模型:

导出的hbir模型默认保存在ckpt_dir,可通过save-path指定自定义保存路径。其中qat.bc为伪量化hbir模型,quantized.bc为量化后的定点hbir模型。
hbir模型可以使用集成工具hb_model_info进行结构可视化:
注:默认保存在.hb_model_info目录下的onnx文件仅支持可视化,不支持推理

2.7 模型单帧推理

注:默认推理定点hbir模型(quantized.bc),推理的可视化结果保存路径通过--save-path指定。也可通过修改config文件中infer_cfg相关参数来更换推理伪量化hbir模型或指定输入,运行前需确认指定的输入路径有效
从OE 3.0.19版本以及之后版本开始,提供模型单帧推理demo所需的单份输入数据,可以从模型config文件目录下的README.md获取下载链接。此外用户也可以通过infer_hbir.py脚本来生成模型单帧推理所需的数据:
注:生成的单帧推理数据默认保存在config文件infer_cfg参数input_path指定的路径下,用户可自行修改。不指定--use-dataset情况下将自动读取input_path路径下的数据进行单帧推理,运行前需确认指定的路径和有效数据存在

2.8 模型精度验证

  1. 通过命令行指定stage参数为float、calibration、qat分别来验证浮点模型、校准模型、QAT模型的精度;
  2. 使用NuScenes mini数据集进行精度验证时需要修改config中涉及“version”的参数项,可参考“常见问题”章节。

此外在导出定点hbir模型后,也可以通过下面的方式来验证定点hbir模型的精度,也即模型定点化后的量化精度:

2.9 模型编译

编译脚本执行前需确认quantized.bc所在的路径,为hbir_save_dir或ckpt_dir,若使用--save保存hbir模型,则需要将hbir_save_dir修改为--save指定的路径

定点hbir模型的精度满足要求后,使用以下方式将hbir模型编译成可以上板部署的hbm模型(同时该脚本也能预估在BPU上的运行性能):

编译完成后的产出物如下:

2.10 模型板端部署

2.10.1 性能测试

需提前配置好开发板端底软环境和推理库环境

使用hrt_model_exec perf工具将生成的hbm模型文件上板做性能实测,hrt_model_exec perf参数如下:

2.10.2 AI Benchmark示例

OE开发包中提供了丰富的板端部署AI Benchmark示例,详细使用流程参考J6 算法工具链用户手册-AI Benchmark使用说明

3. J6参考算法详解

地平线参考算法面向硬件平台特性基于公版模型做了高效优化和改动,相关优化和改动总结于J6 算法工具链用户手册-高效模型设计指导。针对每个模型的详细介绍和详解见下面表格:

4. 常见问题

  1. 使用NuScenes mini数据集时出现报错“Samples in split doesn't match samples in predictions”

    答:使用NuScenes mini数据集做模型精度验证时,记得对应修改

算法工具链
技术深度解析征程6官方教程
+7
评论5
0/1000
  • 默认72192
    Lv.1

    请问释放的bevfusion模型 能在J5平台上运行吗

    2025-01-16
    0
    0
  • kotei左文亮
    Lv.3

    参考算法的Model Zoo:J6 算法工具链用户手册-参考算法Model Zoo; 链接无法打开是怎么回事啊?

    2024-12-16
    0
    3
    • DR_KAN回复kotei左文亮:

      因为贴的是地平线内网的链接。。

      2024-12-19
      0
    • 芯链情报局回复DR_KAN:
      不能吧,贴的都是社区的链接
      2024-12-20
      1
    • 爱学习的班马回复DR_KAN:

      那从哪里可以下载呀?

      2025-09-03
      0
  • chengang
    Lv.1

    在使用v3.0.31版J6镜像时,执行import horizon_pytorch as horizon,环境报错显示 no module named horizon_plugin_pytorch?这是镜像问题吗,但是v.3.0.17就没有问题。

    2025-03-27
    0
    0
  • vegg
    Lv.1
    您好,文章中所有J6 算法工具链相关网址链接都打不开https://developer.horizon.auto/docs 这个网址中J6相关OE包和相关资料点开都是空的,J5的打开是可以下载的,是目前J6相关资源还没释放的原因吗还是下载地址不对呢?如何获取J6最新的OE包及对应的算法工具链用户手册呢?
    2025-04-17
    0
    0
  • big99
    Lv.1
    您好,文章中所有J6 算法工具链相关网址链接都打不开,无法访问,请问j6的OE包应该去哪里下载。
    2025-06-18
    0
    1
    • 爱学习的班马回复big99:

      你好,你找到下载的地址了吗?

      2025-09-03
      0