DAMO-YOLO:兼顾速度与精度的高效目标检测框架
一、目标检测简介
目标检测的定义是在图像/空间中定位出感兴趣物体的位置和大小。
一般情况下,输入图像、视频或者点云,输出物体的类别和检测框坐标。左下方这张图片就是一个对图像进行目标检测的示例。目标检测应用场景非常多,比如自动驾驶场景中车辆行人检测,码头管理中常用泊船检测。这两者都是对目标检测的直接应用。目标检测同时还是很多 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 的一些缺陷,我们进行分析,将原因归结如下:
① 首先,不同尺度特征其实是共享通道数的,它存在很多的特征冗余,网络配置也不够灵活。
② 第二,在 Queen feature 中有上采样和下采样连接,上采样和下采样算子耗时提升显著。
③ 第三,在节点堆叠的时候,同特征深度上的串行连接降低了 GPU 的并行效率, 并且每次堆叠带来的串行路径的增长非常显著。
针对这些问题,我们进行了相应的优化,提出了 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 模型。最后,希望大家保持关注,积极反馈。
以上是DAMO-YOLO:兼顾速度与精度的高效目标检测框架的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

写在前面&笔者的个人理解目前,在整个自动驾驶系统当中,感知模块扮演了其中至关重要的角色,行驶在道路上的自动驾驶车辆只有通过感知模块获得到准确的感知结果后,才能让自动驾驶系统中的下游规控模块做出及时、正确的判断和行为决策。目前,具备自动驾驶功能的汽车中通常会配备包括环视相机传感器、激光雷达传感器以及毫米波雷达传感器在内的多种数据信息传感器来收集不同模态的信息,用于实现准确的感知任务。基于纯视觉的BEV感知算法因其较低的硬件成本和易于部署的特点,以及其输出结果能便捷地应用于各种下游任务,因此受到工业

C++中机器学习算法面临的常见挑战包括内存管理、多线程、性能优化和可维护性。解决方案包括使用智能指针、现代线程库、SIMD指令和第三方库,并遵循代码风格指南和使用自动化工具。实践案例展示了如何利用Eigen库实现线性回归算法,有效地管理内存和使用高性能矩阵操作。

C++sort函数底层采用归并排序,其复杂度为O(nlogn),并提供不同的排序算法选择,包括快速排序、堆排序和稳定排序。

人工智能(AI)与执法领域的融合为犯罪预防和侦查开辟了新的可能性。人工智能的预测能力被广泛应用于CrimeGPT(犯罪预测技术)等系统,用于预测犯罪活动。本文探讨了人工智能在犯罪预测领域的潜力、目前的应用情况、所面临的挑战以及相关技术可能带来的道德影响。人工智能和犯罪预测:基础知识CrimeGPT利用机器学习算法来分析大量数据集,识别可以预测犯罪可能发生的地点和时间的模式。这些数据集包括历史犯罪统计数据、人口统计信息、经济指标、天气模式等。通过识别人类分析师可能忽视的趋势,人工智能可以为执法机构

01前景概要目前,难以在检测效率和检测结果之间取得适当的平衡。我们就研究出了一种用于高分辨率光学遥感图像中目标检测的增强YOLOv5算法,利用多层特征金字塔、多检测头策略和混合注意力模块来提高光学遥感图像的目标检测网络的效果。根据SIMD数据集,新算法的mAP比YOLOv5好2.2%,比YOLOX好8.48%,在检测结果和速度之间实现了更好的平衡。02背景&动机随着远感技术的快速发展,高分辨率光学远感图像已被用于描述地球表面的许多物体,包括飞机、汽车、建筑物等。目标检测在远感图像的解释中

一、多模态大模型的历史发展上图这张照片是1956年在美国达特茅斯学院召开的第一届人工智能workshop,这次会议也被认为拉开了人工智能的序幕,与会者主要是符号逻辑学届的前驱(除了前排中间的神经生物学家PeterMilner)。然而这套符号逻辑学理论在随后的很长一段时间内都无法实现,甚至到80年代90年代还迎来了第一次AI寒冬期。直到最近大语言模型的落地,我们才发现真正承载这个逻辑思维的是神经网络,神经生物学家PeterMilner的工作激发了后来人工神经网络的发展,也正因为此他被邀请参加了这个

一、58画像平台建设背景首先和大家分享下58画像平台的建设背景。1.传统的画像平台传统的思路已经不够,建设用户画像平台依赖数据仓库建模能力,整合多业务线数据,构建准确的用户画像;还需要数据挖掘,理解用户行为、兴趣和需求,提供算法侧的能力;最后,还需要具备数据平台能力,高效存储、查询和共享用户画像数据,提供画像服务。业务自建画像平台和中台类型画像平台主要区别在于,业务自建画像平台服务单条业务线,按需定制;中台平台服务多条业务线,建模复杂,提供更为通用的能力。2.58中台画像建设的背景58的用户画像

写在前面&笔者的个人理解在自动驾驶系统当中,感知任务是整个自驾系统中至关重要的组成部分。感知任务的主要目标是使自动驾驶车辆能够理解和感知周围的环境元素,如行驶在路上的车辆、路旁的行人、行驶过程中遇到的障碍物、路上的交通标志等,从而帮助下游模块做出正确合理的决策和行为。在一辆具备自动驾驶功能的车辆中,通常会配备不同类型的信息采集传感器,如环视相机传感器、激光雷达传感器以及毫米波雷达传感器等等,从而确保自动驾驶车辆能够准确感知和理解周围环境要素,使自动驾驶车辆在自主行驶的过程中能够做出正确的决断。目
