论文阅读笔记 | 目标检测算法——EfficientDet(EfficientNet+BiFPN)

本文涉及的产品
文件存储 NAS,50GB 3个月
简介: 论文阅读笔记 | 目标检测算法——EfficientDet(EfficientNet+BiFPN)

paper:EfficientDet: Scalable and Efficient Object Detection


第一次看见这个目标检测算法的时候觉得名字有点熟悉,然后找回之前的论文一看,果然作者是同一个人,都是来自Mingxing Tan。


在之前的学习笔记中,我同样的介绍了两个backbone:EfficientNetv1,EfficientNetv2,这两个backbone的主要解决的问题就是如何统一缩放神经网络的深度,宽度与分辨率,如何统筹好这三个因素从而在一些列不同的移动设备的限制上获得最佳的选择方案。


之前的两篇学习笔记链接如下:

轻量级网络——EfficientNet

轻量级网络——EfficientNetV2


简答回顾:

1)EfficientNetv1

在EfficientNet中,作者将网络层抽象成了一个数学公式使之成为一个优化问题,对卷积网络按深度,宽度与分辨率三个因素进行一系列的缩放,获得了b0-b7一共8个基准。


2)EfficientNetv2

而在v2的版本中,作者稍稍改变了每层网络堆叠的block,使用Fused-MBConv与MBConv的结合版本。但是主要的优化对象是精准度,参数效率与训练效率,并使用Progressive Learning优化训练过程。


而此paper的名字同样是EfficientDet,也就是作者将之前的思想用在了目标检测任务上。


1. Introduction


paper中指出,EfficientDet想要解决的问题是:是否有可能在广泛的资源限制范围内(例如,从3B到300B FLOPs)构建一个既具有更高精度又具有更好效率的可扩展检测架构?当设计网络结构时主要存在以下两个挑战:


Challenge 1:高效的多尺度特征融合

在融合不同输入特征的同时,以往的大部分作品都是简单的不加区分的进行相加;然而,由于这些不同的输入特征具有不同的分辨率,我们观察到它们通常对融合输出特征的贡献是不相等的。为了解决这个问题,我们提出了一种简单而高效的加权双向特征金字塔网络(BiFPN),它引入了可学习的权重来学习不同输入特征的重要性,同时重复应用自顶向下和自底向上的多尺度特征融合。


Challenge 2:模型的缩放

以往的一些工作主要依赖于更大的backbone网络,或者是更大的输入图像尺寸以获得高精度。但是,在考虑准确性和效率时,缩放特征网络和类/边界框预测网络也很关键。然后作者提出了一种用于目标检测的复合缩放方法,该方法联合缩放所有主干、特征网络、盒/类预测网络的分辨率/深度/宽度。

image.png


可以看见,EfficientDet的准确率确实达到了那时的SOTA。不仅仅是准确率是最高,而且模型的参数,与浮点运算也要比其他的检测网络要小。同时在GPU/CPU上的速度也比以前的检测器快4倍至11倍。paper中还指出,通过简单的修改,EfficientDet用于语义分割的表现也要比DeepLabV3+要好。


在之后yolov4登场时,EfficientDet的准确率还是不逊色与yolov4的。虽然,在检测的速度上是远比不过yolov4.各有各的优缺点。

image.png


2. BiFPN


BiFPN的本文中提出的最重要的一个结构。在此之前介绍一下其他的特征金字塔网络(FPN)结构:


  • FPN:提出了一种自上而下的方法来组合多尺度特征
  • PANet:在FPN之上增加了一个额外的自下而上的路径聚合网络
  • STDL:提出了一个利用跨尺度特征的尺度转换模块
  • M2det:提出一种融合多尺度特征的U形模块
  • G-FRNet:介绍用于控制要素间信息流的门单元
  • NAS-FPN:利用神经架构搜索来自动设计特征网络拓扑结构
  • BiFPN:高效的双向跨尺度连接和加权特征融合


2.1 Cross-Scale Connections

传统的自上而下的FPN本质上受到单向信息流的限制。为了解决这个问题,PANet增加了一个额外的自下而上的路径聚合网络。PANet取得了比FPN和NAS-FPN更好的精度,但代价是更多的参数和计算。所以,BiFPN会在PANet的基础上进行一些改动:

image.png


  1. 移除那些只有一条输入边的节点,这是因为如果一个节点只有一条输入边而没有特征融合,那么它对以融合不同特征为目标的特征网络的贡献就比较小。这可以简化我们的双向网络。


  1. 如果原始输入节点和输出节点处于同一水平,我们会在它们之间增加一条额外的边,以便在不增加太多成本的情况下融合更多的特征。


  1. 与PANet只有一条自上而下和一条自下而上的路径不同,BiFPN将每条双向(自上而下&自下而上)路径视为一个特征网络层,并多次重复同一层,以实现更高级别的特征融合。如何确定层数数量是另外一个问题。


所以,总的网络结构如下所示,不断堆叠BiFPN层的EfficientDet模型:(注意注释:基于不同的资源约束,BiFPN层和分裂类与回归参数网络预测层被重复多次)

image.png


2.2 Weighted Feature Fusion

当融合不同分辨率的要素时,一种常见的方法是首先将它们调整到相同的分辨率,然后对它们进行求和。所有以前的方法都一视同仁地对待所有输入特征。


然而,作者观察到,由于不同的输入特征具有不同的分辨率,因此它们对输出特征的贡献通常是不相等的。为了解决这个问题,paper建议为每个输入增加一个额外的权重,并让网络学习每个输入特征的重要性。


作者提出了三种加权融合的方法:


  1. Unbounded fusion

image.png


其中wi 是一个可学习的权重,可以是标量(每个特征)、矢量(每个通道)或多维张量(每个像素)。


作者发现了一个在最小计算成本下,可以媲美其他精确度的参数。但由于标量权重是无界的,它可能会导致训练不稳定。因此,我们采用权重归一化来限定每个权重的取值范围。


  1. Softmax-based fusion

image.png


另一个直观的想法是将softmax应用于每个权重,这样所有权重都被归一化为一个概率,其值范围从0到1,表示每个输入的重要性。然而,额外的softmax会导致GPU硬件速度显著下降。


  1. Fast normalized fusion

image.png

其中w i ≥ 0是通过在每个wi后应用Relu来确保的。以及∈ = 0.0001是避免数值不稳定的小数值。


类似地,每个归一化权重的值也落在0和1之间,但是由于这里没有softmax操作,所以效率要高得多。实验结果研究表明,这种快速融合方法具有与基于softmax的融合非常相似的学习行为和准确性,但在图形处理器上运行速度高达30%


总结:

最终的BiFPN集成了双向跨尺度连接和快速归一化融合(Fast normalized fusion)。作为一个具体的例子,这里描述了图2(d)所示的BiFPN的两个融合特征:

image.png

image.png


3. EfficientDet


paper提出了一种新的用于目标检测的复合缩放方法,该方法使用简单的复合系数φ 来联合缩放主干、BiFPN、类/盒网络和分辨率的所有维度。


  1. Backbone network

将EfficientNet B0-B6的相同宽度/深度缩放系数重用

image.png


  1. BiFPN network

线性增加BiFPN深度。对一系列值{1.2、1.25、1.3、1.35、1.4、1.45}执行网格搜索,并选择最佳值1.35作为BiFPN宽度比例因子。形式上,BiFPN的宽度和深度通过以下等式进行缩放。

image.png


  1. Box/class prediction network

将它们的宽度固定为始终与BiFPN相同,但是根据层数的增加会线性的增加。

image.png


  1. Input image resolution

image.png


根据以上的公式,只使用了一个参数ϕ ,对整个目标检测网络的backbone,BiFPN,分类预测与边界框回归预测,以及图像的分辨率进行联合缩放。


φ是控制所有其他缩放尺寸的复合系数;BiFPN、箱/类网和输入大小分别使用以上等式按比例放大。

image.png

其中D7和D7x具有相同的BiFPN和head,但D7使用更高的分辨率,D7x使用更大的主干网络和多一个功能级别(从P3 to P8)。值得注意的是,我们的复合缩放是基于启发式的,可能不是最优的,但是我们将展示这个简单的缩放方法可以在一定程度上提高效率。

image.png


可以看见,EfficientDet在准确度上的提升还是很高。


4. Ablation Study


除了以上的对比试验,paper中还提到了一些其他的实验


4.1 Disentangling Backbone and BiFPN

paper中还探讨了backbone与特征提取部分BiFPN对准确度的作用如何。

image.png

可以看见,可以说是强强联合,backbone与BiFPN对准确度的提高均有作用。


4.2 BiFPN Cross-Scale Connections

paper还进行对BiFPN 特征融合的对比,分别与FPN,PANet,NAS-FPN进行对比。为了公平比较,这里我们重复它们中的每一个多个。这与BiFPN相同。我们使用相同的主干和类/盒预测网络,并且对所有实验使用相同的训练设置。

image.png

如图所示,传统的自上而下的FPN固有地受到单向信息流的限制,因此具有最低的精度。虽然重复的FPN+PANet实现了比NAS-FPN稍好的精度,但它也需要更多的参数和FLOPs。我们的BiFPN实现了与重复的FPN+PANet相似的精度,但使用的参数和FLOPs少得多。通过额外的加权特征融合,我们的BiFPN进一步用更少的参数和FLOPs达到了最好的精度。


总结:


EfficientDet使用了一个高效的backbone,既创造了一个新的多尺度特征融合网络BiFPN,并通过额外的可学习行的加权特征处理,实现了精确度上的提高。


相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
目录
相关文章
|
8天前
|
机器学习/深度学习 运维 算法
大模型开发:描述一种用于异常检测的技术或算法。
LOF算法是一种无监督异常检测技术,通过比较数据点局部密度识别离群点。它计算每个点的局部离群因子得分,得分高则异常可能性大。主要步骤包括:距离度量、k近邻搜索、计算局部可达密度和LOF得分,然后设定阈值识别异常点。适用于入侵检测、故障检测等场景,Python中可使用scikit-learn库实现。
26 1
|
2天前
|
机器学习/深度学习 算法 固态存储
深度学习算法工程师面试问题总结| 深度学习目标检测岗位面试总结
本文给大家带来的百面算法工程师是深度学习目标检测岗位面试总结,文章内总结了常见的提问问题,旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中,我们还将介绍一些常见的深度学习目标检测面试问题,并提供参考的回答及其理论基础,以帮助求职者更好地准备面试。通过对这些问题的理解和回答,求职者可以展现出自己的深度学习目标检测领域的专业知识、解决问题的能力以及对实际应用场景的理解。同时,这也是为了帮助求职者更好地应对深度学习目标检测岗位的面试挑战,提升面试的成功率和竞争力。
|
8天前
|
机器学习/深度学习 人工智能 算法
【图像版权】论文阅读:CRMW 图像隐写术+压缩算法
【图像版权】论文阅读:CRMW 图像隐写术+压缩算法
13 0
|
8天前
|
人工智能 算法 测试技术
论文介绍:进化算法优化模型融合策略
【5月更文挑战第3天】《进化算法优化模型融合策略》论文提出使用进化算法自动化创建和优化大型语言模型,通过模型融合提升性能并减少资源消耗。实验显示,这种方法在多种基准测试中取得先进性能,尤其在无特定任务训练情况下仍能超越参数更多模型。同时,该技术成功应用于创建具有文化意识的日语视觉-语言模型。然而,模型融合可能产生逻辑不连贯响应和准确性问题,未来工作将聚焦于图像扩散模型、自动源模型选择及生成自我改进的模型群体。[论文链接: https://arxiv.org/pdf/2403.13187.pdf]
114 1
|
8天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
|
8天前
|
算法 数据可视化 数据挖掘
R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率
R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率
|
8天前
|
数据采集 机器学习/深度学习 监控
使用R编写公司电脑监控软件的异常行为检测算法
本文阐述了在数字化时代,企业使用R语言开发高效异常行为检测算法的重要性,以保障网络安全和数据隐私。文章通过示例展示了如何加载和预处理数据,绘制数据传输趋势图,并运用3倍标准差法识别异常点。此外,还介绍了一种利用R的httr库将异常数据自动提交到网站的方法,以增强安全防护。
81 3
|
8天前
|
算法 数据可视化 数据挖掘
R语言社区发现算法检测心理学复杂网络:spinglass、探索性图分析walktrap算法与可视化
R语言社区发现算法检测心理学复杂网络:spinglass、探索性图分析walktrap算法与可视化
|
8天前
|
机器学习/深度学习 算法 计算机视觉
基于深度学习的停车场车辆检测算法matlab仿真
该文介绍了使用GoogLeNet进行停车场车辆检测的算法,基于深度学习的CNN模型,利用Inception模块提升检测效率。在matlab2022a中实现,通过滑动窗口和二分类交叉熵损失函数优化。文章展示了几张算法运行效果和测试结果的图片,并提供了一段核心代码示例,涉及图片读取、划分、特征提取和分类。为了适应任务,进行了数据集准备、滑窗参数设定,并以平均精度为评估标准。
|
8天前
|
算法 数据可视化
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度