EfficientDet论文讲解

news2024/11/24 19:47:49

目录

EfficientDet

0、摘要

1、整体架构

1.1 BackBone:EfficientNet-B0

1.2 Neck:BiFPN特征加强提取网络

1.3 Head检测头

1.4  compound scaling

2、anchors先验框

3、loss组成

4、论文理解

5、参考资料


EfficientDet

  影响网络的性能(或者说规模)的三大因素:depth(layer的重复次数), width(特征图channels), resolution(特征图宽高)。

  EfficientDet是以EfficientNet作为BackBone提取特征,以BiFPN作为加强特征提取网络。依据复杂度不同分为8个版本,其中网络EfficientNetB0-B6,BiFPN重复次数不同,共同组成成EfficientNetD0-D7。

  下面结合原文,和一些博客资料,展开详细描述。

0、摘要

  为了提高map值,以往的模型都在堆参数(eg:ResNXt),map是提上去了,但是计算量产目忍睹;针对这个问题,本文提出efficientdet,确保牛逼性能(coco 上最高55.1%)的同时,参数量低得一批(模型参数量缩小4-9倍,参数量缩小13-42倍,原因是:借鉴mobileNet,到处使用deep wise conv,BiFPN删除了冗余节点)。创新之处在于:

  1. 提出简洁、快速的多尺度特征融合Neck:BiFPN;
  2. 提出了一种模型缩放方案:即:通过适当地修改:BackBone中特征图分辨率、channels、深度,Neck:BiFPN重复次数,Head(框、类别预测层)中的特征图的channels等多个参数,达到模型最优。(以上参数不是瞎J8乱设置的,也不是和NAS搜索架构那样自动搜索的,而是本文创造的一个公式,参考:1.4  compound scaling
    ,有章可循!)  (注:D0-D7不同版本对应不同的EfficientNetB0-B6,图像输入分辨率也不一样!)

1、整体架构

(注:上图中,变量后缀_U、_D分别表示上采样、下采样)

  EfficientDet是以EfficientNet为backBone提取特征,依据网络复杂度不同都有8个版本,如上图,网络主要包含:

  • BackBone(EfficientNet ):输出5个特征层到BiFPN
  • Neck(BiFPN Layer加强特征提取):处理BackBone输出的5个特征图,之后再输出5个特征层给Head。
  • Head(class&box prediction net):box预测 + class预测

1.1 BackBone:EfficientNet-B0

  对于主干网络,主要依赖MBConvBlock重复提取、压缩特征,如下图,然后将中高低特征层(P3、4、5;P6和P7都是由P5下采样得到的)拿出来,输入到BiFPN层。

  EfficientNet分为B0-B6等7个版本,每个本版中,特征图的分辨率、channels和卷积层的重复次数不同,具体EfficientDet如何使用的,待更新!

1.2 Neck:BiFPN特征加强提取网络

  BiFPN(加权的双向特征金字塔网络,权重矩阵可理解为注意力机制),这里拿FPN、PANet、NAS-FPN作为对比,以下是四种多尺度特征融合结构图:

  四种多尺度特征融合网络

  如下图,PANet精度最好,但是计算量最多(时间开销是BiFPN的1.31倍),所以选择基于PANet改进,得到BiFPN(改进如上图?(d)BiFPN),修改内容如下:

  1. 删除只有一个输入的节点(因为删除的节点只有一个输入,删了之后几乎不改变性能,并且能够降低计算量),如图(b)PANet;
  2. 增加额外的skip连接,加强特征提取;
  3. 重复BiFPN加强特征提取

 三种经典多尺度特征融合网络

   另外,在多尺度特征图融合的时候,我们知道,特征图融合之前,由于分辨率不一样,传统步骤:先将所有两组待融合(下文成为A、B)的特征图进行resize到一样的尺寸,然后直接作加法。

  但是,本文认为A、B的重要程度是一样的,所有给A、B都设定了权重tensor,加上权重后能提升效果。然而新的问题来了,直接加权重tensor可能导致特征值范围不受限制,进而导致训练不稳定,基于此,本文又利用softmax将权重tensor进行了归一化(使得所有权值取值为:[0, 1]),解决了训练不稳定问题。然而(尼玛的),实验表明,利用softmax归一化会导致网络慢得一批,于是,本文又提出了一种快速归一化方法,公式如下:

   相对于softmax,能够提速30%,相当残忍。如下图,给出BiFPN中第六层的计算公式和示意图:

                                     

  小结:BiFPN是基于PANet进行改进的,主要有以下几点:

  • 删除只有一个输入的节点,提升速度;
  • 引入权重tensor,提升精度
  • 改进softmax提升速度
  • 增加skip连接、重复BiFPN次数,进一步加强特征提取

  下面补充下网络解读:

  P6 P7是由P5下采样得到,在将特征输入到BiFPN之前,P3、P4、P5需要调整通道数一致。

  其中,每个MbconvBlock的结构如下图;Block的通用结构如下,其总体的设计思路是Inverted residuals结构和残差结构,在3x3或者5x5网络结构前利用1x1卷积升维,在3x3或者5x5网络结构后增加了一个关于通道的注意力机制,最后利用1x1卷积降维后增加一个大残差边(和MobileNetV2&3类似,都是google一家的东西)。

   在获得P3_out、P4_td、P4_in_2、P5_td、P5_in_2、P6_in、P6_td、P7_in之后,之后需要对P3_out进行下采样,下采样后与P4_td、P4_in_2堆叠获得P4_out;之后对P4_out进行下采样,下采样后与P5_td、P5_in_2进行堆叠获得P5_out;之后对P5_out进行下采样,下采样后与P6_in、P6_td进行堆叠获得P6_out;之后对P6_out进行下采样,下采样后与P7_in进行堆叠获得P7_out。

  将获得的P3_out、P4_out、P5_out、P6_out、P7_out作为P3_in、P4_in、P5_in、P6_in、P7_in,重复2、3步骤进行堆叠即可,对于Effiicientdet B0来讲,还需要重复2次,需要注意P4_in_1和P4_in_2此时不需要分开了,P5也是。

1.3 Head检测头

  通过第二部的重复运算,我们获得了P3_out, P4_out, P5_out, P6_out, P7_out。为了和普通特征层区分,我们称之为有效特征层,将这五个有效的特征层传输过ClassNet+BoxNet就可以获得预测结果了。对于Efficientdet-B0来讲,如下图:

ClassNet采用:

①   :3次64通道的卷积(深度可分离卷积,D0版本是3数)

②   :1次num_anchors x num_classes的卷积(调整通道数,获得最终预测结果;注:num_anchors x num_classes表示channel维度,这里num_anchors一般取值为9)

注:num_anchors指的是该特征层所拥有的先验框数量,num_classes指的是网络一共对多少类的目标进行检测。

BoxNet采用:

①   :3次64通道的卷积

②   :和1次num_anchors x 4的卷积,num_anchors指的是该特征层所拥有的先验框数量,4指的是先验框的调整情况。需要注意的是,每个特征层所用的ClassNet是同一个ClassNet;每个特征层所用的BoxNet是同一个BoxNet。其中:num_anchors x 4的卷积 用于预测 该特征层上 每一个网格点上 每一个先验框的变化情况。

注:num_anchors x num_classes的卷积 用于预测 该特征层上 每一个网格点上 每一个预测框对应的种类。

1.4  compound scaling

  由上文可知,依据不同的复杂度,网络可分为D0-D7等8个版本,这8个版本对应输入图像分辨率、BackBone、Neck、Head都不同,如下表,可以看到其对应搭配关系:

   在上述表格第一列,有一个超参数φ,第二列的输入图像分辨率与其关系式为:

  第三列为BackBone,这里不赘述。

  第四列为Neck中BiFPN的对应卷积核的channels、和BiFPN的重复次数:

  第五列为Head层重复次数,和φ关系为:

2、anchors先验框

每个点9个先验框,三个近似正方形,三个近似横着的矩形,三个近似竖着的矩形。其余的先验框的计算和YOLOV5没啥区别,唯一不同:这里用左上角、右下角两个点表示框的位置。

3、loss组成

loss的计算分为两个部分:
1、Smooth Loss:获取所有正标签的框的预测结果的回归loss。
2、Focal Loss:获取所有未被忽略的种类的预测结果的交叉熵loss。 

4、论文理解

  EfficientDet-D7,在coco上map达到55.1%,77M参数量,410BFloPs计算量。

5、参考资料

原论文:

链接:https://pan.baidu.com/s/1bm772PGnnRQhFKY7LV6rJQ 
提取码:6nl4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1179767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

asp.net生产线远程故障诊断系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 生产线远程故障诊断系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用 c#语言开发 asp.net生产线远程故障诊断…

Mac下flutter工程配置Gitlab cicd打包(暂时仅限android侧)

写的太粗糙,可能不太适合完全不懂的同学,但是实在没时间,而且也不太会写,权当做一个记录吧,对了还没有搞docker这些,还在持续学习中 1.GitLab Runner(打包机) 注意:需要有对应的权…

开源七轴myArm协作机械臂正逆运动学技术讲解

引言: 在本文中,我们将深入探讨机器人学的两个核心概念:正运动学和逆运动学。这两个概念是理解和控制机械臂运动的基础。通过一个具体的7轴机械臂实例,我们将详细介绍如何计算机械臂的正运动学和逆运动学。我们首先会解释正运动学…

深入理解 Django 模板系统

概要 在任何 Web 开发过程中,渲染和展示数据是不可或缺的一部分。Django 作为一个高效的 Python Web 框架,提供了一个强大且灵活的模板系统。本文将详细介绍 Django 模板系统的核心概念、语法和高级功能。 一、Django 模板系统简介 Django 的模板系统允…

使用Wireshark抓包分析ARP协议工作原理

1.什么是ARP协议 ARP协议(Address Resolution Protocol),即地址解析协议,是以太网中用于描述目标IP地址和目标主机MAC地址对应映射。 ARP仅用于IPv4协议,IPv6使用邻居发现协议**(NDP)**替代。 交换机、路由器、主机…

产品经理进阶:产品的起点是发现并理解问题

目录 简介 发现实际问题 接下来选择一个问题 之后就是验证问题 最后总结一下 CSDN学院(硬件产品经理进阶课) 简介 你花费了大量的时间来思考如何构建一款每个人都会喜欢的产品。 但最终却发现没有人愿意为之买单。 这其实就是没有真正理解客户问…

近视眼选择什么台灯好?专家推荐的防近视台灯

年轻的时候不懂,以为自己的眼睛不好,近视度数高,是因为长时间看书造成的,其实我们都忽视了一个最为重要的影响因素,那就是灯光。如今的孩子面临着比我们以前更要繁重的学习压力,因此更需要注意用眼健康了&a…

MFC-网络编程TCP服务端(NBlockSocket)

目录 1、NBlockSocket.h类: (1)、Init接口函数 (2)、Register接口函数 (3)、Send接口函数 (4)、Accept接口函数 (5)、Recv接口函数 2、实现…

ZZ308 物联网应用与服务赛题第B套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (B卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用的…

把wpf的窗体保存为png图片

昨晚在stack overflow刷问题时看到有这个问题,今天早上刚好来尝试学习一下 stack overflow的链接如下: c# - How to render a WPF UserControl to a bitmap without creating a window - Stack Overflow 测试步骤如下: 1 新建.net frame…

【双指针+简化去重操作】【int运算溢出】Leetcode 18 四数之和

【双指针简化去重操作】【int运算范围】Leetcode 18 四数之和 解法1 仍然用双指针法 就是在三数求和的基础上扩展一个外层循环 ----------------------题目链接---------------------- ----------------------解析链接---------------------- 解法1 仍然用双指针法 就是在三数…

元宇宙初体验:探秘各元宇宙游戏看点与玩法

元宇宙(Metaverse)是一个虚拟世界,结合了虚拟现实(VR)、增强现实(AR)、区块链、人工智能等技术,为用户提供沉浸式、互动式的体验。随着技术的不断发展,如今,元…

SAP中信息记录未维护工厂导致的成本核算错误

近期遇到一例寄售物料成本核算中,不能确定价格的问题反馈。 由于寄售物料的成本核算测策略是在信息记录中取价,因此,首先想到会不会是这里的问题,按之前的经验,分别检查了供应商(是否冻结)&…

1300*C. Product of Three Numbers(质数数学)

Problem - 1294C - Codeforces 解析&#xff1a; 首先这个数肯定不是质数&#xff0c;然后找到第一个因子p&#xff0c;对于n/p再判断质数&#xff0c;然后找到另外两个因子即可。 注意三个因子不能相同。 #include<bits/stdc.h> using namespace std; #define int long…

2024有哪些免费的苹果mac电脑系统清理软件?

基本上&#xff0c;不管是win版还是Mac版的电脑&#xff0c;其装机必备就是一款电脑系统清理软件&#xff0c;就比如Mac&#xff0c;目前在市面上&#xff0c;电脑系统清理软件是非常多的。 对于不熟悉系统的用户来说&#xff0c;使用一些小众工具&#xff0c;往往很多用户都不…

UnityShader(五)

这次要用表面着色器实现一个水的特效。先翻到最下边看代码&#xff0c;看不懂再看下面的解释。 首先第一步要实现水的深浅判断&#xff0c;实现深水区和浅水区的区分。 这里需要用到深度图的概念。不去说太多概念&#xff0c;只去说怎么实现的&#xff0c;首先我们的水面是在…

宠物商店系统《宠物之家》,巨完善

源码下载地址 支持&#xff1a;远程部署/安装/调试、讲解、二次开发/修改/定制 系统分为用户端和管理员端。 截图中有些图片加载失败&#xff0c;是因为没有上传图片&#xff0c;登录管理员账号上传图片后&#xff0c;图片显示会变成正常。 web的宠物商城系统《宠物之家》。系…

什么是DDD领域驱动设计

一、DDD背景 2003 年埃里克埃文斯&#xff08;Eric Evans&#xff09;发表了《领域驱动设计》&#xff08;Domain-Driven Design –Tackling Complexity in the Heart of Software&#xff09;这本书&#xff0c;从此领域驱动设计&#xff08;Domain Driven Design&#xff0c…

SpringCloud 微服务全栈体系(十二)

第十一章 分布式搜索引擎 elasticsearch 一、初识 elasticsearch 1. 了解 ES 1.1 elasticsearch 的作用 elasticsearch 是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在 GitHub 搜…