专栏算法工具链地平线高效backbone: HENet -V1.0

地平线高效backbone: HENet -V1.0

芯链情报局2024-08-30
1405
1

背景 & 目标

为了 提供针对 J6 系列芯片专门设计的高效 backbone,我们充分利用了 J6 芯片的硬件特性,设计了高效模型 HENet (Hybrid Efficient Network)

性能&精度数据

HENet_TinyM

总体结构

HENet_TinyM (Hybrid Efficient Network, Tiny for J6M) 采用了纯 CNN 架构,总体分为四个 stage,每个 stage 会进行一次 2 倍下采样。以下是总体的结构配置:

参数含义:

depth:每个 stage 包含的 block 数量

block_cls:每个 stage 使用的基础 block 类型

width:每个 stage 中 block 的输出 channel 数

attention_block_num:每个 stage 中的 attention_block 数量,将用在 stage 的尾部(TinyM 中没有用到)

act_layer:每个 stage 使用的激活函数

use_layer_scale:是否对 residual 分支进行可学习的缩放

final_expand_channel:在网络尾部的 pooling 之前进行 channel 扩增的数量,0 代表不使用扩增

feature_mix_channel :在分类 head 之前进行 channel 扩增的数量

down_cls:每个 stage 对应的下采样类型

基础 block 结构

DWCB

DWCB (DWConvBlock) 是 HENet 中主要使用的一个基础 block,它在主分支上使用一个 depthwise 卷积进行空间维度的信息融合(k=3x3),然后使用两个连续的 pointwise 卷积进行 channel 维度的信息融合,这种结构一定程度上借鉴了 transformer 中的 attention + mlp 的架构,同时将 latency 控制在一个较轻量级的程度。在 residual 分支上,DWCB 使用了一层可学习的 layer_scale,然后将两个分支的输出做 elementwise_add 然后输出。

GroupDWCB

GroupDWCB 是基于 DWCB 的一个轻量化改进, 相比 DWCB,GroupDWCB 将主分支的第一个 pointwise 卷积改为了 pointwise group 卷积,以此来达到提速的目的。我们在实验中观察到,当满足 ① channel 数量不太小 ② 较浅的位层 两个条件时,GroupDWCB 可以达到精度无损,同时提速的效果,推测可能是 low_level feature 的性质决定的。在 TinyM 中,我们在第二个 stage 使用 GroupDWCB 来构建(g=2)。

AltDWCB

AltDWCB 是基于 DWCB 的一个变种,相比 DWCB,AltDWCB 将主分支的 depthwise 卷积的 kernel 改为了(1,5)或者(5,1),根据 block 所在层次位置交替使用。在我们的实验中,使用 AltDWCB 构建第三个 stage 将带来一定的定能提升。我们推荐在层数较多的 stage 尝试交替使用 AltDWCB。

S2DDown

S2DDown (Space2Depth Downsample) 使用一个 space to depth 操作进行降采样,以 stride = 2 为例,降采样后,feature 的空间维度将变为原来的 1/2,channel 维度将变为原来的 4 倍。对应的代码实现为:

地平线征程6系列芯片对于 tensor layout 相关操作的高效支持,这一降采样操作得以以较快的速度完成。

HENet_TinyE

HENet_TinyE 结构与 TinyM 类似,以下是总体的结构配置:


使用建议

总体结构使用建议

  1. 针对输入输出相近的场景,或者作为主 backbone 使用的场景,我们推荐直接使用 TinyM / TinyE 原生结构。针对其他场景,我们建议参考 TinyM 的基础 block 结构,灵活构建模型。

  2. 对于感知模型中的多 camera backbone,我们推荐针对不同类型的 camera 使用不同量级的 backbone,比如对于 front/rear camera,推荐使用较强的结构,对于 side camera,推荐使用较轻量的结构

基础 block 使用建议

  1. 如需快速构建 baseline,建议先全局使用 DWCB,然后尝试 GroupDWCB、AltDWCB 等结构提升速度精度

  2. 建议在满足 ① channel 数量不太小 ② 较浅的位层 两个条件的 stage 尝试使用 GroupDWCB(例如 stage 2)

  3. 建议在层数较多的 stage 尝试交替使用 AltDWCB

  4. 建议在 backbone 最开始的降采样中谨慎使用S2DDown,优先尝试带有 overlap 的降采样方法(例如 k=2,s=3 的 conv)



算法工具链
官方教程
+4
评论1
0/1000
  • 默认23104
    Lv.1

    有预训练模型吗?

    2025-12-24
    0
    0