EfficientDet:目标识别领域的 EfficientNet
目录
- EfficientDet:目标识别领域的 EfficientNet
- 0、背景
- 1、Bi-FPN
- 1.1 加权特征融合
- 2、EfficientDet
- 2.1 整体架构
- 2.2 复合缩放
- 3、消融实验
EfficientDet:目标识别领域的 EfficientNet
阅读本文可能需要一些其他模型或算法方面的先验知识:
- 对 FPN 特征金字塔网络要了解
- 对 EfficientNet 分类模型架构要熟悉
Quoc Le 这个大神真是无处不在,NLP、CV 领域均可以看到他的影子,所以不同领域可能处理任务不同,在一些方法论上还是相通的。近日,这位大神在 Twitter 上发文中,提出了一种新的家族式目标检测算法,是基于 图片分类任务中的 EfficientNet 的,而且又是一篇 SOTA 论文,目前论文已公开,代码在路上。
看看下面这幅图,这种图往左上角瞅,越往左,计算量(FLOPS,每秒钟的浮点数计算量,FLOPs,浮点数计算量,实际此处 S 应为 s,这种针不必计较)越小,越往上 mAP(mean Average Precision,一种用于比较目标检测算法性能的指标,越大越好)越高。
【图 1】
我们先说结论,直接看论文摘要部分即可,作者提出两个方法:
- BiFPN: 这个毋庸置疑,肯定是从 FPN 发展过来的,至于 Bi 就是双向,原始的 FPN 实现的自顶向下(top-down)融合,所谓的 BiFPN 就是两条路线既有 top-down 也有 down-top。
- 在融合过程中,之前的一些模型方法没有考虑到各级特征对融合后特征的g共享度问题,即之前模型认为各级特征的贡献度相同,而本文作者认为它们的分辨率不同,其对融合后特征的贡献度不同,因此在特征融合阶段引入了 weight。
- 复合缩放方法(compound scaling method):这个主要灵感来自于 EfficientNet,即在基线网络上同时对多个维度进行缩放(一般都是放大),这里的维度体现在主干网络、特征网络、以及分类/回归网络全流程的整体架构上
- 整体网络由主干网络、特征网络以及分类/回归网络组成,可以缩放的维度比 EfficientNet 多得多,所以用网络搜索方式不合适了,作者提出一些启发式方法,可以参照论文的 Table 1。
0、背景
在简介部分,作者提出了一个“不要脸”的想法,“Is it possible to build a scalable detection architecture with both higher accuracy and better efficiency across a wide spectrum of resource constraints (e.g., from 3B to 300B FLOPS)?” 这句话翻译过来就是 “鱼与熊掌俺能兼得乎?”
要知道在此之前,实际目标检测算法家族已经提出了很多很多经典的算法,有 two-stage 方法的,主要是早期的一些算法,如 Fast R-CNN、Faster R-CNN,一般检测精度较高但速度慢,为了加快速度,后来逐步发展为 one-stage,从 RoI 的提取到识别检测全部融合在一个框架下,实现 end to end,加快检测速度,但一般是以牺牲精度换速度的。
因此在 FPN 及 EfficientNet 的影响下,作者分别基于此在 FPN 基础上进行优化提出 BiFPN 以及全方位的模型缩放探索。
下面重点介绍 Bi-FPN 以及复合缩放方法。
1、Bi-FPN
【图 2】
如上图的(a)是原始的 FPN 方法,一般在卷积网络中,低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。在 FPN 论文中,作者实际比较了很多不同的连接方式,最后提出了(a)图所示的架构,即抽取除第 3~7 层的特征图进行融合,每一层特征图的大小为输入图像的1/2i1/2^i1/2i 。例如,如果图片大小为 640×640640\times 640640×640,则第三层特征的边长为 640/23=80640/2^3=80640/23=80 。例外注意高层的特征有一个向下的箭头,即 top-down 融合:
P7out=Conv(P7in)P6out=Conv(P6in+Resize(P7out))⋯P3out=Conv(P3in+Resize(P4out))\begin{array}{l}{P_{7}^{o u t}=\operatorname{Conv}\left(P_{7}^{i n}\right)} \\ {P_{6}^{o u t}=\operatorname{Conv}\left(P_{6}^{i n}+\operatorname{Resize}\left(P_{7}^{o u t}\right)\right)} \\ {\cdots} \\ {P_{3}^{o u t}=\operatorname{Conv}\left(P_{3}^{i n}+\operatorname{Resize}\left(P_{4}^{o u t}\right)\right)}\end{array}P7out=Conv(P7in)P6out=Conv(P6in+Resize(P7out))⋯P3out=Conv(P3in+Resize(P4out))
结合公式+图例,我想应该都能理解,这里的 Resize 主要是上采样或下采样操作(此处为上采样,要将上层的小图放大到下层大图的大小)
在 PANet 网络中,实际就已经提出了双向的概念,如(b)所示,在 NAS-FPN 中借助网络框架搜索(NAS)技术进行搜索,搜索出来的玩意儿反正是人类看不懂解释不了,不规则而且需要的参数量计算量还大,如(c)所示,而我们的方式是:
- 第一步:在 PANet 的基础上,移除了只有一个输入来源的特征节点,也就变成了(e),对比(b)少了两个节点(这个图画的让人容易误会,实际删除的是 b 图虚框中左上角和右下角的这个,图中一打眼看起来感觉删除的是左上角和左下角,不过图本身没问题),之所以删除这样的节点,是因为就一个输入源,肯定没做融合,对将来的贡献可能也比较少
- 第二步:将每层的原始特征图加入进去,就是(f),会看到有一些弧线,可以在不增加额外计算量的同时融合更多的特征
- 第三步:把这个双向过程(就是虚框中的内容)作为一个整体,重复多次,如图 3 所示。
1.1 加权特征融合
这里给出三种策略:
- Unbounder fusion: O=∑iwi⋅IiO=\sum_i w_i \cdot I_iO=∑iwi⋅Ii,我们的特征图都是三维的,有 W、H、C(channel),如果我们把它当做一个整体,即每个特征层一个权重,则 wiw_iwi 是一个标量,如果每个通道一个权重,则 wiw_iwi 是一个向量,而如果每个像素有自己的权重,则 wiw_iwi 是三维的,实验证明,用标量的计算量最小且实现的精度差不多,但是标量是无界的,不易控制,所以还是需要借助正则化手段
- softmax-based fusion:O=∑iewi∑jewj⋅IiO=\sum_{i} \frac{e^{w_{i}}}{\sum_{j} e^{w_{j}}} \cdot I_{i}O=∑i∑jewjewi⋅Ii,能用 softmax 是一种很自然的想法,但是这个玩意一直因分母求和而诟病,在 GPU 下明显速度下降很多。
- Fast normalized fusion: O=∑iwiϵ+∑jwj⋅IiO=\sum_{i} \frac{w_{i}}{\epsilon+\sum_{j} w_{j}} \cdot I_{i}O=∑iϵ+∑jwjwi⋅Ii,实际就是加和求平均,这里的 wiw_iwi 可以用 ReLU 保证其 wi≥0w_{i} \geq 0wi≥0。和 softmax 一致,其分布范围在 0~1,其值代表该层的贡献度。
这样一来,我们结合图 2 (f),来两个具体的示例:
P6td=Conv(w1⋅P6in+w2⋅Resize(P7in)w1+w2+ϵ)P6out=Conv(w1′⋅P6in+w2′⋅P6td+w3′⋅Resize(P5out)w1′+w2′+w3′+ϵ)\begin{aligned} P_{6}^{t d} &=\operatorname{Conv}\left(\frac{w_{1} \cdot P_{6}^{i n}+w_{2} \cdot \operatorname{Resize}\left(P_{7}^{i n}\right)}{w_{1}+w_{2}+\epsilon}\right) \\ P_{6}^{o u t} &=\operatorname{Conv}\left(\frac{w_{1}^{\prime} \cdot P_{6}^{i n}+w_{2}^{\prime} \cdot P_{6}^{t d}+w_{3}^{\prime} \cdot \operatorname{Resize}\left(P_{5}^{o u t}\right)}{w_{1}^{\prime}+w_{2}^{\prime}+w_{3}^{\prime}+\epsilon}\right) \end{aligned}P6tdP6out=Conv(w1+w2+ϵw1⋅P6in+w2⋅Resize(P7in))=Conv(w1′+w2′+w3′+ϵw1′⋅P6in+w2′⋅P6td+w3′⋅Resize(P5out))
其中 P6tdP^{td}_6P6td 是第 6 层的中间状态值。
2、EfficientDet
2.1 整体架构
整体架构图如图 3 所示:
【图 3】
主干网络采用的是 EfficientNet 网络,BiFPN 是基于其 3~7 层的特征图进行的,融合后的特征喂给一个分类网络和 box 网络,分类与 box 网络在所有特征级上权重是共享的。
2.2 复合缩放
主干网络部分:这部分直接把 EfficientNet 缩放拿过来用即可,即 EfficientNet B0-B6,借助其现成的 checkpoints,就不折腾了
BiFPN 网络部分:这部分借鉴 EfficientNet,在 Channel 上直线指数级增加,在深度上线性增加,具体的缩放系数公式为:Wbifpn=64⋅(1.35ϕ),Dbifpn=2+ϕW_{b i f p n}=64 \cdot\left(1.35^{\phi}\right), \quad D_{b i f p n}=2+\phiWbifpn=64⋅(1.35ϕ),Dbifpn=2+ϕ
Box/class 预测网络部分:其宽度与 BiFPN 部分保持一致,深度方面采用 Dbox=Dclass=3+⌊ϕ/3⌋D_{b o x}=D_{c l a s s}=3+\lfloor\phi / 3\rfloorDbox=Dclass=3+⌊ϕ/3⌋
图片分辨率部分: 因为特征提取选择的是 3~7 层,第 7 层的大小为原始图片的 1/271/2^71/27 ,所以输入图像的大小必须是 128 的倍数,Rinput=512+ϕ⋅128R_{i n p u t}=512+\phi \cdot 128Rinput=512+ϕ⋅128
【图 4】
上图 D7 明显是超出内存大小了,只是在 D6 基础上增加了分辨率大小。
【图 5】
D7 的 mAP 为 51.0,目前是 SOTA,参数量 52M,比之前的 SOTA(AmoaNet+NAS-FPN+AA)小 4 倍, 计算量小 3045/326=9.33045/326=9.33045/326=9.3 倍。
3、消融实验
第一部分是比较了 BiFPN 和 主干网络的共享度,实验结果证明,都很重要。如下图所示:
【图 6】
图 6 中的表三,baseline 是 ResNet50 + FPN,中间一行是仅仅将 ResNet50 替换为 EfficientB3,性能提高差不多 3 个点,参数量和计算量都小了很多,最后一行在上一行基础上替换 FPN 为 BiFPN,性能和参数、计算量等都进一步得到优化。
至于 BiFPN 的连接方式,结合图 2和 图 6 中的表 4,我们看到最好的是(f)图,(d)全连接方式计算量又大性能还差;
另外关于 softmax 和求和取平均的对比,性能上差不多,但是求和取平均速度要快 1.26-1.31 倍
最后,我们在各个维度上分别看一下:
【图 7】
我们可以尝试小结一下这张图:
- 扩大任何一个方面,折线都在上升,从识别精度上讲都在提高
- 扩大 box/class(紫色线)几乎平稳,所有对于 box/class 但单方面提高没有意义了
- 扩大通道数(蓝色的)计算量上升急剧,但精度上升缓慢
- 扩大图片分辨率(绿色)上升趋势很大,D6-D7 的区别
- 扩大 BiFPN 层数(浅蓝色)也在上升,可以尝试进一步加大
- 复合放大(红色)综合各方面考虑,实现了较单独维度更好的策略
由于需要考虑的维度过多,无法进行系统化全面维度综合调整,作者此处给出的方案(红线)也只是鉴于先验知识下或目前已有条件下的一个浅尝辄止,针对上面单变量的分析,也很难说在多变量条件下增加通道或增加 box/class 网络层是否一定投入产出比较低。
EfficientDet:目标识别领域的 EfficientNet相关推荐
- 深度残差网络的无人机多目标识别
深度残差网络的无人机多目标识别 人工智能技术与咨询 来源:<图学学报>.作者翟进有等 摘要:传统目标识别算法中,经典的区域建议网络(RPN)在提取目标候选区域时计算量大,时间复杂度较高,因 ...
- 采用优化卷积神经网络的红外目标识别系统
采用优化卷积神经网络的红外目标识别系统 人工智能技术与咨询 前天 本文来自<光学精密工程>,作者刘可佳等 关注微信公众号:人工智能技术与咨询.了解更多咨询! 摘要 针对视频数据利用低效和光 ...
- 全景解密量子信息技术:高层集中学习,国家战略,三大领域一文看懂
来源:智东西 内参来源:中国信通院 IPRdaily中文网 10月16日下午,高层就量子科技研究相关前景举行了一次会议,强调当今世界正经历百年未有之大变局,科技创新是其中一个关键变量.要充分认识推 ...
- 分享一些在ICME2016会议上获得的多媒体领域学术与科技动态
上周参加了ICME2016国际会议,做了presentation,也了解到了很多多媒体领域的学术动态和前沿科技,在这里整理分享给大家,希望大家有机会也多多参加这些优秀的会议,在开会的城市游玩之余也是能 ...
- 基于深度学习的水声被动目标识别研究综述
源自:电子与信息学报 作者:张奇 笪良龙 王超 张延厚 禚江浩 摘 要 被动声呐通过接收目标自身发出的辐射噪声信号进行目标探测.水声目标识别通过分析水声信号来判别目标个体,是水声工程领域的重点研究方 ...
- 译文Deep Learning in Bioinformatics --深度学习在生物信息学领域的应用(2)
译文Deep Learning in Bioinformatics --深度学习在生物信息学领域的应用(2) 深度学习在生物信息学领域的应用(2) 原文链接:https://arxiv.org/abs ...
- 如何入门多视角3D目标识别?超详细最新综述来袭!
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨祁少华.宁欣.杨国为等 编辑丨极市平台 导读 本文将对多视角3D目标识别方法的主要进展.代表性研 ...
- 2021年小目标检测最新研究综述 很全面值得收藏
摘要 小目标检测长期以来是计算机视觉中的一个难点和研究热点.在深度学习的驱动下,小目标检测已取得了重大突破,并成功应用于国防安全.智能交通和工业自动化等领域.为了进一步促进小目标检测的发展,本文对小目 ...
- 目标检测算法(YOLOv4)
目标检测算法(YOLOv4) 本文要来介绍很火的目标检测算法YOLOv4,该算法是在原有YOLO目标检测架构的基础上,采用了近些年CNN领域中最优秀的优化策略,从数据处理.主干网络.网络训练.激活函数 ...
- 从视觉到语言:半监督式学习的大规模实际运用
来源:TensorFlow本文约2300字,建议阅读5分钟 Noisy Student 半监控式蒸馏的实践应用案例. 监督式学习 (Supervised Learning),即使用已知的结果数据(即标 ...
最新文章
- 怎么用python打印照片_[宜配屋]听图阁
- android垂直排列元素_Android弹性布局(FlexboxLayout)
- OO实现ALV TABLE 十一:ALV的聚合,排序,过滤
- 电脑微信不用手机确认_不用安装第三方软件,手机投屏到电脑就这么简单
- php crypt mysql password_使用PHP 5.5的password_hash和password_verify函数
- 如何让jpa 持久化时不校验指定字段
- zuul网关,springsecurity认证中心 和 Swagger2 整合遇到的问题
- 慧荣SM2246XT主控的固态硬盘修复开卡不识别怎么短接方法
- 射频能量用于治疗和美容
- 计算机广告制作专业范围,计算机广告制作专业
- 第七章 算术操作指令的实现
- 全球及中国阻力带行业市场前瞻及投资竞争力分析报告2022-2027年
- 黑客长期摇号不中黑掉北京小客车摇号网
- 股市里赚钱最快的是什么股?有些股票的机会来了!
- c++将浮点数转换为整数类型,要求四舍五入
- 关于numeric_limits
- 苏鹏谈TechEd2009
- 一阶低通滤波器方程_一阶低通滤波器c语言
- 天线接收功率计算公式_天线增益的计算公式
- roszhong指定rviz的点启动_Rviz 实现 pannel 插件
热门文章
- word按backspace键不能删除问题
- 文本分类入门(二)——训练
- The second sprint
- google浏览器缓存文件在哪里
- 设置ubuntu终端光标开启自动显示
- KMP,LCA(XJT Love Strings,玲珑杯 Round#8 A lonlife 1079)
- 解决Dev-C++ [Error] ‘for‘ loop initial declarations are only allowed in C99 or C11 mode
- 精选黑科技资源站点,总会有你需要的干货!
- 双击计算机文档,电脑双击文件都是打开属性窗口怎么办
- 如何下载google play上的软件