基于M55H的定制化backbone模型AxeraSpine

描述

背景

Backbone模型是各种视觉任务训练的基石,视觉任务模型的性能和模型的速度都受backbone模型的影响,良好的backbone模型可以有效提高视觉任务模型的性能和精度。因此设计优良的backbone模型对视觉任务模型的表现至关重要。目前存在低延迟且高性能的开源模型已经有很多,但这些模型的设计往往只考虑到了理论计算量,并没有和实际的硬件条件相结合,因此这些模型部署到实际的硬件上,并不能发挥最大的速度潜能。针对这个挑战,为了发挥backbone模型的最大潜力,我们在M55H平台上,基于MobileNetV2模型定制了适用于M55H平台的backbone模型AXSpine系列,相比于原始MobileNetV2模型,AXSpine-Middle在精度提升的同时,速度提升了50%,硬件的MAC利用率大幅提高,在多个具体任务上达到80%以上。另外还有多组通过裁剪或者扩充的AXSpine系列模型提供,以供不同延迟和精度要求的视觉任务进行选择。

性能指标

以下展示AXSpine-Middle模型和MobileNetV2模型在爱芯元智M55H平台上不同分辨率的性能对比,数据集采用ImageNet数据集,精度均在224x224分辨率条件下进行测试,更多AXSpine模型指标在文章末尾表格中:

模型名称 Input shape acc1(224 x 224 标准输入条件下) M55H 帧率(@vnpu111)
MobileNetV2 1x3x576x320 71.88 124 fps
MobileNetV2 1x3x288x160 71.88 373.7 fps
AXSpine-Middle 1x3x576x320 72.87 186 fps
AXSpine-Middle 1x3x1280x720 72.87 36.5 fps
AXSpine-Middle 1x3x1920x1080 72.87 19.4 fps

相关模型介绍

3.1 MobileNetV2

MobileNetV2是google提出的用于移动端的backbone模型,具有精度高、计算量小的特点,在移动端设备上推理效果显著。MobileNetV2模型的基本组成块为倒置残差卷积,由两组1x1的卷积和一组3x3的depthwise卷积构成。1x1卷积主要作用为对depthwise卷积做升/降维,3x3的depthwise卷积则在升维的空间上进行卷积运算,这种架构可以在保证表达能力的同时有效地增强计算效率。随后,这种倒置残差卷积结构进行若干次的堆叠,构造成为MobileNetV2模型。

3.2 地平线相关模型

地平线公司也在自身平台上专门对backbone模型进行了优化,并推出了VarGENet和MixVarGENet等系列模型,其基本块如下图所示:

GPU芯片

GPU芯片

GPU芯片

3.3 特斯拉相关模型

特斯拉相关模型为RegNet,RegNet为何凯明的相关工作,旨在用超参数搜索的方式,指导模型设计的相关工作,在低运算量的条件下,取得了相对优良的精度,由于没有用到depthwise卷积,在GPU模型上表现良好,被特斯拉硬件采用。其基本结构与resnet等同,如下所示:

GPU芯片

模型优化

相对于MobileNetV2官方实现,AXSpine模型做了以下改动:

● 将MobileNetV2的所有的depthwise卷积修改为小channel size的group卷积;

● 将模型第二层的倒置残差卷积替换为一个简单的3x3 conv层;

● 对不满足硬件通道对齐的层进行硬件通道对齐;

● 减小部分层的expand_ratio提高运算速度;

● 将原有的5层stage结构,仿照convnext修改为4层stage结构3393,速度提升,精度降低。

改动详细说明

5.1 depthwise卷积修改为group卷积

由于边缘侧芯片的depthwise卷积的支持往往比较低效,这导致使用depthwise卷积的MobileNetV2无法发挥理论计算效率,在这里将depthwise卷积修改为group卷积,增强模型的表达能力,由于芯片组卷积,在特定channel的情况最为高效,因此将所有的depthwise卷积修改为特定channel数的group卷积。

GPU芯片GPU芯片

5.2 替换第二层倒置残差卷积

MobileNetV2的第一层为一个3x3的普通卷积,第二层为一个expand_ratio = 1 的倒置残差卷积,在原有的MobileNetV2设计中,使用倒置残差卷积的目的是为了减少计算量,然而当修改为group卷积后,运算量反倒大幅增加,因此将第二层的倒置残差卷积的两个堆叠的卷积层,修改为单个普通的3x3卷积。

GPU芯片

GPU芯片

5.3 对不满通道对齐的卷积进行对齐

硬件单元在计算的过程中,需要进行数据对齐,如果不满足数据对齐条件,就会降低运算效率,M55H硬件也是一样。因此,为了充分利用硬件的计算能力,需要对不满足channel对齐的层进行对齐操作,MobileNetV2模型中,部分层不满足硬件对齐条件,这里需要对不满足硬件对齐的层进行向上补齐操作,不影响性能,表达能力有所提升。

5.4 减小expand_ratio

由于原有的depthwise卷积被替换成了group卷积,模型的表达能力大幅增强,而我们修改MobileNetV2模型的最终目的是为了在保证精度的情况下,提升速度,因此在此处对expand_ratio进行消减,将expand_ratio从6修改为4,第二层的expand_ratio由4再消减为2,理论上模型的计算量减少约30%,这种expand_同时也考虑到了M55H的调度特性,在实际的调度过程中,由于各层特征图的大小得到了均衡,整体调度效率也得到了提升。

GPU芯片

GPU芯片

5.5 修改模型stage排布

借鉴convnext文章中的的思路,模型应当包含有4个stage,每个stage的比例大概为13:1较优,基于此判断,对MobileNetV2模型的stage进行重新划分,将原有的stage排布按照39:3进行排列,相比于直接削减channel数提升速度的方式,修改stage对模型精度的损伤较小,修改见下图所示:

GPU芯片

总结

经过对MobilenetV2模型的适应性改动,爱芯元智发布了基于M55H芯片平台的定制化模型AXSpine,相比于原版MobilenetV2模型,AXSpine-Middle模型具有更高的精度和达到50%提升的速度。得益于爱芯元智M55H平台软硬件联合设计优化,经过改良后的AXSpine模型相较业界友商在单位算力情况下,展现出了强大的性能和延迟表现。此外除了AXSpine-Middle模型以外,还有若干组模型上架,以满足不同的延迟和精度需求,总结表格如下,以下模型目前已应用于多组视觉任务中,欢迎使用:

模型名称 Input shape acc1(224 x 224 标准输入条件下) M55H 帧率(@vnpu111)
MobileNetV2 1x3x576x320 71.88 124 fps
AXSpine-Small 1x3x576x320 71.59 227 fps
AXSpine-Middle 1x3x576x320 72.87 186 fps
AXSpine-Big 1x3x576x320 75.31 131 fps






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分