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 层的特征图进行融合,每一层特征图的大小为输入图像的 。例如,如果图片大小为 ,则第三层特征的边长为 。例外注意高层的特征有一个向下的箭头,即 top-down 融合:
结合公式+图例,我想应该都能理解,这里的 Resize 主要是上采样或下采样操作(此处为上采样,要将上层的小图放大到下层大图的大小)
在 PANet 网络中,实际就已经提出了双向的概念,如(b)所示,在 NAS-FPN 中借助网络框架搜索(NAS)技术进行搜索,搜索出来的玩意儿反正是人类看不懂解释不了,不规则而且需要的参数量计算量还大,如(c)所示,而我们的方式是:
- 第一步:在 PANet 的基础上,移除了只有一个输入来源的特征节点,也就变成了(e),对比(b)少了两个节点(这个图画的让人容易误会,实际删除的是 b 图虚框中左上角和右下角的这个,图中一打眼看起来感觉删除的是左上角和左下角,不过图本身没问题),之所以删除这样的节点,是因为就一个输入源,肯定没做融合,对将来的贡献可能也比较少
- 第二步:将每层的原始特征图加入进去,就是(f),会看到有一些弧线,可以在不增加额外计算量的同时融合更多的特征
- 第三步:把这个双向过程(就是虚框中的内容)作为一个整体,重复多次,如图 3 所示。
1.1 加权特征融合
这里给出三种策略:
- Unbounder fusion: ,我们的特征图都是三维的,有 W、H、C(channel),如果我们把它当做一个整体,即每个特征层一个权重,则 是一个标量,如果每个通道一个权重,则 是一个向量,而如果每个像素有自己的权重,则 是三维的,实验证明,用标量的计算量最小且实现的精度差不多,但是标量是无界的,不易控制,所以还是需要借助正则化手段
- softmax-based fusion:,能用 softmax 是一种很自然的想法,但是这个玩意一直因分母求和而诟病,在 GPU 下明显速度下降很多。
- Fast normalized fusion: ,实际就是加和求平均,这里的 可以用 ReLU 保证其 。和 softmax 一致,其分布范围在 0~1,其值代表该层的贡献度。
这样一来,我们结合图 2 (f),来两个具体的示例:
其中 是第 6 层的中间状态值。
2、EfficientDet
2.1 整体架构
整体架构图如图 3 所示:
【图 3】
主干网络采用的是 EfficientNet 网络,BiFPN 是基于其 3~7 层的特征图进行的,融合后的特征喂给一个分类网络和 box 网络,分类与 box 网络在所有特征级上权重是共享的。
2.2 复合缩放
主干网络部分:这部分直接把 EfficientNet 缩放拿过来用即可,即 EfficientNet B0-B6,借助其现成的 checkpoints,就不折腾了
BiFPN 网络部分:这部分借鉴 EfficientNet,在 Channel 上直线指数级增加,在深度上线性增加,具体的缩放系数公式为:
Box/class 预测网络部分:其宽度与 BiFPN 部分保持一致,深度方面采用
图片分辨率部分: 因为特征提取选择的是 3~7 层,第 7 层的大小为原始图片的 ,所以输入图像的大小必须是 128 的倍数,
【图 4】
上图 D7 明显是超出内存大小了,只是在 D6 基础上增加了分辨率大小。
【图 5】
D7 的 mAP 为 51.0,目前是 SOTA,参数量 52M,比之前的 SOTA(AmoaNet+NAS-FPN+AA)小 4 倍, 计算量小 倍。
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 网络层是否一定投入产出比较低。
来源:CSDN
作者:dfsj66011
链接:https://blog.csdn.net/weixin_37179744/article/details/103217305