DAMO

一、指标检测简介

指标检测的定义是在图像/空间中定位出感兴味物体的位置和大小。

普通状况下,输入图像、视频或许点云,输入物体的类别和检测框坐标。左下方这张图片就是一个对图像启动指标检测的示例。指标检测运行场景十分多,比如智能驾驶场景中车辆行人检测,码头治理中罕用泊船检测。这两者都是对指标检测的间接运行。指标检测同时还是很多 CV 运行的基础义务,比如工厂用到的侵入检测,和人脸识别,这些都须要行人检测和人脸检测作为基础才干够成功检测义务。可以看出指标检测在日常中有很多关键的运行,在 CV 落地中的位置也十分关键,因此这是一个竞争十分强烈的畛域。

曾经有很多各有特征的指标检测框架。依据咱们在实践经常使用环节中的阅历积攒,咱们发现检测框架在实践运行时依然有以下几个痛点:

① 模型尺度变动不够灵敏,难以顺应不同的算力场景。如 YOLO 系列的检测框架,普通只提供 3-5 个模型的计算量,从十几到一百多 Flops 数量级,难以笼罩不同的算力场景。

② 多尺度检测才干弱,特意是小物体检测性能较差,这使得模型运行场景十分受限。比如在无人机检测场景,它们的成果往往都不太现实。

③ 速度/精度曲线不够现实,速度和精度难以同时兼容。

针对上述状况,咱们设计并开源了 DAMO-YOLO。DAMO-YOLO 关键着眼于工业落地。相比于其余的指标检测框架具备三个清楚的技术长处:

① 整合了自研 NAS 技术,可低老本自定义模型,让用户充散施展芯片算力。

② 联合 Efficient RepGFPN 以及 HeavyNeck 模型设计范式,能够很大水平上提高模型的多尺度检测才干,扩展模型运行范围。

③ 提出了全尺度通用的蒸馏技术,能够对小模型、中模型、大模型无痛地优化精度。

上方咱们将从 3 个技术长处的价值进一步剖析 DAMO-YOLO。

二、DAMO-YOLO 技术价值

DAMO-YOLO 成功低老本模型定制化,是基于自研的 MAE-NAS 算法。可以依据提前或许 FLOPS 估算来低老本的定制化模型。它无需模型训练,也无需实在数据介入,即可给出模型的评价打分,模型搜查老本低。以 FLOPS 为指标,可以充沛应用芯片算力。以时延作为估算启动搜查,则十分实用于各种对时延要求严厉的场景。咱们还提供了允许不同配件提前场景的数据库构建方案,繁难大家成功经常使用提前作为指标启动搜查。

由下图展现了如何用时延启动模型搜查。首先针对指标芯片或指标设施采样,获取一切或许用到的算子的时延,依据该时延数据对模型启动提前预测。假设预测的模型量级合乎预设的指标,模型会进入到后续模型降级和计算分数。最后经过迭代降级,获取合乎时延解放的最优模型。

接上去引见如何增强模型的多尺度检测才干。DAMO-YOLO 联合提出 Efficient RepGFPN,以及翻新性的 HeavyNeck,清楚优化了多尺度的检测才干。Efficient RepGFPN 能够高效地成功多尺度特征融合。HeavyNeck 范式,指的是将模型的 FLOPS 少量地调配到特征融合层。如模型 FLOPS 配比表。以 DAMO-YOLO-S 为例,neck 的计算量占到了将近整个模型的一半,这和其余的模型把计算量关键放在 backbone 有清楚的差异。

最后引见 蒸馏模型。 蒸馏指将大模型的常识转移到小模型上,在不带来推理累赘的状况下,优化小模型的性能。模型蒸馏是一个提高检测模型效率的利器,但是学术界和工业界探求大多局限于大模型,不足对小模型的蒸馏方案。DAMO-YOLO 则提供了一套对全尺度模型都通用的蒸馏。此方案不只能够成功全尺度模型的清楚提点,并且鲁棒性高,而且经常使用灵活权重无需调参,一键式脚本即可成功蒸馏。另外此方案对异构蒸馏也是鲁棒的,这关于前文中提到的低老本自定义模型来说意义严重。在 NAS 模型中并不能保障搜查获取的小模型和大模型的结构相似度。假设有一个异构鲁棒的蒸馏就可以保障充散施展 NAS 和蒸馏的长处。下图中给出了咱们在蒸馏上的性能,可以看到无论在 T 模型、S 模型还是 M 模型上,蒸馏后都有稳固优化。

三、DAMO-YOLO 运行价值

基于上述技术价值,可以转化出多少运行价值呢?上方将引见 DAMO-YOLO 与其它 SOTA 检测框架的对比。

DAMO-YOLO 与 SOTA 相比,同精度下模型提速 20%-40%,计算量缩小15%-50%,参数缩小 6%-50%,全尺度涨点清楚,实用范围广。此外,在小物体和大物体上都有清楚的优化。

从以上数据对比可以看出,DAMO-YOLO 速度快、Flops 低,实用范围广;并且可以针对算力自定义模型,提高芯片应用效率。

关系模型曾经上线 ModelScope,经过三到五行代码的性能就可以启动推理和训练,大家可以体验经常使用,经常使用环节中有任何疑问或许意见欢迎到评论区留言。

接上去围绕 DAMO-YOLO 的 3 点技术长处,引见它面前的原理,协助大家更好地理解和经常使用 DAMO-YOLO。

四、DAMO-YOLO 原理简介

首先引见低老本模型定 制化才干的关键技术MAE-NAS。它的基本思维是把一个深度网络看作是一个有延续形态空间的消息系统,并找到能够最大化消息系统的熵。

网络建模思绪如下:将网络 F 的拓扑结构形象为图 G=(V,E),其中顶点 V 示意特征,边 E 示意各种算子。在此基础上,可以用 h(v) 和 h(e) 来区分示意顶点和边中的值,就可以发生这样的一个汇合 S,定义了网络的延续形态空间,而汇合 S 的熵可以代表网络或许消息系统 F 的总消息量。其中顶点的消息量权衡了网络的表白才干,而边中的消息量也是边的熵,权衡了网络的复杂度。关于 DAMO-YOLO 指标检测义务来说,咱们关键关注的是网络的表白才干能够最大化。在实践的运行中只关注网络特征的熵。依据高斯散布微分熵,以及高斯熵上界定理,咱们经常使用特征图的方差来近似网络特征熵的上界。

在实践操作中,咱们首先用规范的高斯散布对网络 backbone 的权重启动初始化,同时用一个规范的高斯噪声图片作为输入。在高斯噪声送入网络前向传递后,可以获取若干个特征。而后计算每个尺度特征的单尺度熵,即方差,随后经过加权获取多尺度熵。在加权环节中,用先验系数来平衡不同尺度特征表白才干,此参数普通会被设置为[0,0,1,1,6]。为什么会设置这样,要素如下:由于在检测模型中,普通特征都是分五个stage,即五种不同的分辨率,从 1/2 到 1/32。为了坚持高效的特征应用,咱们只应用前面 3 个 stage。所以其实前两个 stage 不介入到模型的 prediction 中,所以是 0 和 0。另外三个咱们经过宽泛的试验,发现 1,1,6 是一个较好的模型配比。

基于上述外围原理,咱们可以用网络的多尺度熵作为性能代理,以污染算法作为基本框架启动网络结构搜查,这就造成了完整的 MAE-NAS。NAS 有十分多的长处。首先它允许多种推理 budget 的限度,可以用 FLOPS,参数量,latency 还有网络层数启动一个模型搜查。其次,它还允许十分多的细粒度网络结构的变异。由于这里用退化算法去启动网络搜查,所以假设允许的网络结构的变异体越多,搜查时自定义化水平和灵敏水平都会更高。另外,为了繁难用户自定义搜查环节,咱们提供了官网的教程。最后,也是最关键的一点,MAE-NAS 是 zero-short,即它的搜查不须要任何实践的数据介入,不须要任何的实践模型训练。它在 CPU 上启动几十分钟的搜查,就可以产出在的限度条件下的一个最优网络结果。

在 DAMO-YOLO 中,咱们经常使用 MAE-NAS 以不同时延作为搜查指标搜查 T/S/M 模型的主干网络;对搜查出的主干网络基础结构启动包装,小模型经常使用 ResStyle,大模型经常使用 CSPStyle。

从下表中可以看出 CSP-Darknet 是一个经常使用 CSP 结构的人工设计的网络,在 YOLO v 5 /V6 中也取得了一些宽泛的运行。咱们经常使用 MAE-NAS 发生一个基础结构,再用 CSP 包装之后,发现模型在速度和精度上都有清楚的优化。另内在小模型上大家可以看到 MAE-ResNet 方式,精度会更高。在大模型上经常使用 CPS 结构会有一个比拟清楚的长处,可以到达 48.7。

如何经常使用 MAE-NAS 启动 backbone 的搜查?这里引见一下咱们的 TinyNAS 工具箱,它曾经在 ModelScope上线了,经过网页可视化性能就可以轻松获取想要的模型。同时, MAE-NAS 也曾经在 github上开源,有兴味的同窗可以以开源代码为基础,更大自在度的搜查想要的模型。

接上去引见 DAMO-YOLO 如何优化多尺度检测才干,它是依赖于网络的不同尺度特征的融合。在以往的检测网络中,不同尺度的特征,深度差异较大。比如大分辨率特征用来检测小物体,但是它的特征深度又较浅,这个时刻会影

咱们在 ICLR2022 提出的一个上班——GFPN,以相反的优先级同时解决上层语义消息和低层空间消息,对多尺度特征的融合互补十分友好。在 GFPN 的设计中,咱们首先引入一个 skip layer,目的是为了使得 GFPN 能够设计得更深。咱们经常使用了一个 log2n-link 来启动特征复用,缩小冗余。

Queen fusion 是为了参与不同尺度特征和不同深度特征的交互融合。Queen fusion 中每一个节点除了接纳它斜上方和斜下方的不同尺度特征,还接纳同一特征深度上的不同尺度特征,极大的参与了特征融合时的消息量,促成了多尺度消息在同一深度上的融合。

虽然 GFPN 的特征复用和共同的衔接设计带来了模型精度上的优化。由于咱们的 skip layer 和咱们的 Queen fusion 带来了在多尺度特征节点上的融合的运算,还有上采样下采样的运算,极大参与了推理耗时,难以满足工业界的实施要求。所以其实 GFPN 它是一个 FLOPS 高效,但是提前低效的结构。针对 GFPN 的一些毛病,咱们启动剖析,将要素归纳如下:

针对这些疑问,咱们启动了相应的优化,提出了 Efficient RepGFPN。

在优化时,关键分为两类,一类是拓扑结构的优化,另一类是融合方式的优化。

拓扑结构优化方面,Efficient RepGFPN 在不同尺度特征下经常使用不同的通道数,从而在轻量级计算量的解放下,能够灵敏地控制上层特征和低层特征的表白才干。在FLOPS和提前近似的状况下,灵敏的性能能够获取最好的精度和速度效率。另外,咱们还对 queen fusion 中的一个衔接启动了效率剖析,发现上采样算子累赘极大,但是精度优化较小,远远低于下采样算子的收益。于是咱们移除了 queen fusion 中的上采样衔接。表格中可以看到,斜下的勾其实是上采样,往斜上的勾是下采样,可以对照左侧的图去看,小分辨率逐渐往下变大分辨率,向右下的衔接示意的是把小分辨率特征上采样衔接到大分辨率上,融合到大分辨率特征上方。最后的论断就是,下采样 算子的收益更高,上采样算子收益十分低,所以咱们移除了 Queen feature 中的上采样衔接,来提高整个 GFPN 的效率。

在融合方式方面,咱们也启动了一些优化。首先固定融合节点的数目,这样每个模型外面只做两次融合,而不会像之前一样经过不时地重叠融合来打造一个更深的 GFPN,这样防止了串行链路的不时增长造成的并行效率降低。另外咱们专门设计了 fusion block 来启动特征融合。fusion block 中咱们引入重参数化机制和多层聚合衔接等技术,进一步优化融合成果。

除了 Neck 以外,检测头 Head 也是检测模型的一个关键组成局部。它以 Neck 输入的特征作为输入,担任输入回归和分类的结果。咱们设计试验验证了 Efficient RepGFPN 与 Head 之间的 trade off,发如今严厉控制模型 latency 的状况下,Efficient RepGFPN 的深度越深越好。于是在网络设计中将计算量关键调配给 Efficient RepGFPN,而 Head 局部只保管一层用来启动分类和回归义务的线性投影。咱们把只要一层分类和回归一层非线性映射层的 Head,称为 ZeroHead。而将这种计算量关键调配给 Neck 的一个设计形式称为 HeavyNeck 范式。

最终 DAMO-YOLO 的模型结构如下图所示。

设计中的一些思索。最起初引见一下蒸馏方案。

DAMO-YOLO 中取 Efficient RepGFPN 的输入特征启动蒸馏。student 特征会先经过alignmodule,把它的通道数向 teacher 对齐。为了去除模型自身的偏置,student 和 teacher 的特征会经过无偏的 BN 启动归一化,再启动蒸馏 loss 计算。在蒸馏时,咱们观察到过大的 loss 会阻碍 student 自身分类分支的收敛。于是咱们选用经常使用一个随着训练不时衰减的灵活权重。从试验结果中看,灵活均蒸馏权重关于 T/S/M 模型都是鲁棒的。

DAMO-YOLO 的蒸馏链条是,L 蒸馏 M,M 蒸馏 S。其中值得一提的是 M 蒸馏 S 时,M 经常使用的是 CSP 包装,而 S 经常使用的是 Res 包装,从结构上讲 M 和 S 是异构的。但是在经常使用 DAMO-YOLO 的蒸馏方案,M 蒸馏 S,蒸馏后也能有 1.2 个点的优化,标明咱们的蒸馏方案对异构也是鲁棒的。所以总结来说,DAMO-YOLO 的蒸馏方案调参 free ,允许全系列模型,并且异构鲁棒。

最后咱们再对 DAMO-YOLO 启动一下总结。DAMO-YOLO 联合 MAE-NAS 技术,能够启动低老本的模型自定义,充散施展芯片算力;联合 Efficient RepGFPN 以及 HeavyNeck 范式,优化了多尺度检测才干,模型运行范围宽泛;借助全尺度蒸馏方案,可以进一步优化模型效率。

DAMO-YOLO 模型已在 ModelScope 上线,并在 github 开源,欢迎大家试用。

五、DAMO-YOLO开展方案

DAMO-YOLO 刚颁布不久,还有许多须要完善和优化的中央。咱们方案在短期内启动部署工具的完善和 ModelScope 的允许。另外还会基于组内的比赛冠军方案提供更多的运行范例,比如无人机小指标检测以及旋转指标检测等。还方案推出更多的范例模型,包含面向端上的 Nano 模型和云上的 Large 模型。最后,宿愿大家坚持关注,踊跃反应。

您可能还会对下面的文章感兴趣: