欢迎来到学术参考网
当前位置:发表论文>论文发表

fpn论文格式

发布时间:2023-03-02 10:20

fpn论文格式

姓名:郄心怡    学号:    学院:电子工程学院

【原文链接】

【嵌牛导读】本文对特征金字塔网络FPN做了一个简单介绍

【嵌牛鼻子】特征金字塔网络FPN

【嵌牛提问】什么是特征金字塔网络FPN?

【嵌牛正文】

这里介绍的文章是来自Facebook的特征金字塔网络Feature Pyramid Networks(FPN)。FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量情况下,大幅度提升了小物体检测的性能。我们将从论文背景,论文思想,结果与结论几方面探讨此论文。

在物体检测里面,有限计算量情况下,网络的深度(对应到感受野)与stride通常是一对矛盾的东西,常用的网络结构对应的stride一般会比较大(如32),而图像中的小物体甚至会小于stride的大小,造成的结果就是小物体的检测性能急剧下降。传统解决这个问题的思路包括:

(1)多尺度训练和测试,又称图像金字塔,如图1(a)所示。目前几乎所有在ImageNet和COCO检测任务上取得好成绩的方法都使用了图像金字塔方法。然而这样的方法由于很高的时间及计算量消耗,难以在实际中应用。

(2)特征分层,即每层分别预测对应的scale分辨率的检测结果。如图1(c)所示。SSD检测框架采用了类似的思想。这样的方法问题在于直接强行让不同层学习同样的语义信息。而对于卷积神经网络而言,不同深度对应着不同层次的语义特征,浅层网络分辨率高,学的更多是细节特征,深层网络分辨率低,学的更多是语义特征。

因而,目前多尺度的物体检测主要面临的挑战为:

1. 如何学习具有强语义信息的多尺度特征表示?

2. 如何设计通用的特征表示来解决物体检测中的多个子问题?如object proposal, box localization, instance segmentation.

3. 如何高效计算多尺度的特征表示?

本文针对这些问题,提出了特征金字塔网络FPN,如图1(d)所示,网络直接在原来的单网络上做修改,每个分辨率的feature map引入后一分辨率缩放两倍的feature map做element-wise相加的操作。通过这样的连接,每一层预测所用的feature map都融合了不同分辨率、不同语义强度的特征,融合的不同分辨率的feature map分别做对应分辨率大小的物体检测。这样保证了每一层都有合适的分辨率以及强语义特征。同时,由于此方法只是在原网络基础上加上了额外的跨层连接,在实际应用中几乎不增加额外的时间和计算量。作者接下来实验了将FPN应用在Faster RCNN上的性能,在COCO上达到了state-of-the-art的单模型精度。

具体而言,FPN分别在RPN和Fast RCNN两步中起到作用。其中RPN和Fast RCNN分别关注的是召回率和正检率,在这里对比的指标分别为Average Recall(AR)和Average Precision(AP)。分别对比了不同尺度物体检测情况,小中大物体分别用s,m,l表示。

在RPN中,区别于原论文直接在最后的feature map上设置不同尺度和比例的anchor,本文的尺度信息对应于相应的feature map(分别设置面积为32^2, 64^2, 128^2, 256^2, 512^2),比例用类似于原来的方式设置{1:2, 1:1,, 2:1}三种。

与RPN一样,FPN每层feature map加入3*3的卷积及两个相邻的1*1卷积分别做分类和回归的预测。在RPN中,实验对比了FPN不同层feature map卷积参数共享与否,发现共享仍然能达到很好性能,说明特征金字塔使得不同层学到了相同层次的语义特征。RPN网络的实验结果为:

这里FPN对比原来取自conv4和conv5的RPN网络(a)(b),召回率得到了大幅度提升,尤其在中物体和小物体上(c)。另外,作者做了变量对比实验,比如只保留横向连接(d),即特征分层网络,性能仅与原RPN差不多,原因就在于不同层之间的语义特征差距较大。另外,试验了砍掉横向连接,只保留自上而下放大feature map做预测结果(e),以及只用最终得到的feature map层(f),均比完整的FPN网络小物体检测AR低10个点左右。说明金字塔特征表示与横向连接都起了很大作用。

实验Fast RCNN时,需要固定FPN+RPN提取的proposal结果。在Fast RCNN里,FPN主要应用于选择提取哪一层的feature map来做ROI pooling。假设特征金字塔结果对应到图像金字塔结果。定义不同feature map集合为{P2, P3, P4, P5},对于输入网络的原图上w*h的ROI,选择的feature map为Pk,其中(224为ImageNet输入图像大小):

类似于RPN的实验,对比了原有网络,以及不同改变FPN结构的Fast RCNN实验,实验结果为:

实验发现FPN筛选ROI区域,同样对于Fast RCNN的小物体检测精度有大幅提升。同时,FPN的每一步都必不可少。

最后,FPN对比整个Faster RCNN的实验结果如下:

对比其他单模型方法结果为:

最后是在FPN基础上,将RPN和Fast RCNN的特征共享,与原Faster CNN一样,精度得到了小幅提升。

FPN+Faster RCNN的方法在COCO数据集上最终达到了最高的单模型精度。

总结起来,本文提出了一种巧妙的特征金字塔连接方法,实验验证对于物体检测非常有效,极大提高了小物体检测性能,同时由于相比于原来的图像金字塔多尺度检测算法速度也得到了很大提升。

Q1:不同深度的feature map为什么可以经过upsample后直接相加?

答:作者解释说这个原因在于我们做了end-to-end的training,因为不同层的参数不是固定的,不同层同时给监督做end-to-end training,所以相加训练出来的东西能够更有效地融合浅层和深层的信息。

Q2:为什么FPN相比去掉深层特征upsample(bottom-up pyramid)对于小物体检测提升明显?(RPN步骤AR从30.5到44.9,Fast RCNN步骤AP从24.9到33.9)

答:作者在poster里给出了这个问题的答案

对于小物体,一方面我们需要高分辨率的feature map更多关注小区域信息,另一方面,如图中的挎包一样,需要更全局的信息更准确判断挎包的存在及位置。

Q3:如果不考虑时间情况下,image pyramid是否可能会比feature pyramid的性能更高?

答:作者觉得经过精细调整训练是可能的,但是image pyramid主要的问题在于时间和空间占用太大,而feature pyramid可以在几乎不增加额外计算量情况下解决多尺度检测问题。

超详细解读Faster R-CNN-FPN

2021年了,竟然还有人写关于Faster R-CNN的文章?我的原因主要有两点:

我们先从全局上了解Faster R-CNN-FPN,然后再关注其中涉及的细节。下面是Faster R-CNN-FPN的网络框架图(或称为tensor流动图)。

众所周知,Faster R-CNN-FPN(主要是Faster R-CNN)是个两阶段的对象检测方法,主要由两部分网络组成,RPN和Fast R-CNN。

RPN的作用是以bouding box(后简称为box)的方式预测出图片中对象可能的位置,并过滤掉图片中绝大部分的背景区域,目标是达到尽量召回图像中感兴趣的对象,预测box尽量能够与实际对象的box贴合,并且保证一定的预测精度(Precision)。另外,RPN并不需要指出预测的box中对象具体的类别,RPN预测的box称为RoI(Region of Interest),由于是以box的方式输出,所以后面我们统一将其称为proposal box。

Fast R-CNN则是在FPN预测的proposal box基础上进一步预测box中对象具体的类别,并对proposal box进行微调,使得最终预测的box尽量贴合目标对象。大致的做法是根据RPN预测的proposal box,从原图backbone的feature map上通过RoIPooling或RoIAlign(Faster R-CNN-FPN使用RoIAlign)提取每个proposal box对应区域的feature map,在这些区域feature map上进一步预测box的类别和相对proposal box的偏移量(微调)。另外,RPN和Fast R-CNN共用同一个backbone网络提取图像的feature map,大大减少了推理耗时。

从上面的介绍可以看出,RPN和Fast R-CNN的配合作用其实可以理解为一种注意力机制,先大致确定目标在视野中的位置,然后再锁定目标仔细观察,确定目标的类别和更加精确的位置,简单来说就是look twice,相比单阶段的look once,当然是比较耗时的,但也换来了更好的效果(虽然很多单阶段方法号称已经获得相当或好于两阶段的效果)。

下面以Faster R-CNN-FPN发展顺序的汇总介绍每个改进的核心思想。

在R-CNN中,CNN只被用来作为特征抽取,后接SVM和线性回归模型分别用于分类和box修正回归。在此基础上,Fast R-CNN直接对原输入图进行特征抽取,然后在整张图片的特征图上分别对每个RoI使用RoIPooling提取(后面会介绍RoIPooling的原理)特定长度的特征向量(论文中空降尺寸为7*7),去掉SVM和线性回归模型,在特征向量上直接使用若干FC层进行回归,然后分别使用两个FC分支预测RoI相关的类别和box,从而显著提升速度和预测效果。 整体框架图如下:

在Fast RCNN的基础上进一步优化,用CNN网络代替Fast R-CNN中的region proposal模块(使用传统Selective Search方法),从而实现了全神经网络的检测方法,在召回和速度上都超过了传统的Selective Search。作者将提供proposal region的网络称为RPN(Region Proposal Network),与检测网络Fast RCNN共享同一backbone,大大缩减了推理速度。

RPN在backbone产生的feature map(图中的conv feature map)之上执行 的滑窗操作,每个滑窗范围内的feature map会被映射为多个proposal box(图中的reg layer分支)以及每个box对应是否存在对象的类别信息(图中的cls layer分支)。由于CNN天然就是滑窗操作,所以RPN使用CNN作为窗口内特征的提取器(对应图中的intermediate layer,后面简称为“新增CNN层”),窗口大小 ,将feature map映射为较低维的feature map以节省计算量(论文中为256)。虽然只使用了 的卷积,但是在原图上的有效的感受野还是很大的,感受野大小不等于网络的降采样率,对于VGG网络,降采样率为16,但是感受野为228像素。类似于Fast-RCNN,为了分别得到box和box对应的类别(此处类别只是表示有没有目标,不识别具体类别),CNN操作之后会分为两个子网络,它们的输入都是新增CNN层输出的feature map,一个子网络负责box回归,一个负责类别回归。由于新增CNN层产生的feature map的每个空间位置的特征(包括通道方向,shape为 )都被用来预测映射前窗口对应位置是否存在对象(类别)和对象的box,那么使用 的CNN进行计算正合适(等效于FC层),这便是RPN的做法。综上所述,所有滑窗位置共享一个新增CNN层和后续的分类和box回归分支网络。下图是RPN在一个窗口位置上执行计算的原理示意。

由于滑窗操作是通过正方形的CNN卷积实现的,为了训练网络适应不同长宽比和尺寸的对象,RPN引入了anchor box的概念。每个滑窗位置会预置k个anchor box,每个anchor box的位置便是滑窗的中心点,k个anchor box的长宽比和尺寸不同,作者使用了9种,分别是长宽比为 、 和 ,尺寸为 , 和 的9种不同组合。分类分支和box回归分支会将新增CNN层输出的feature map的每个空间位置的tensor(shape为 )映射为k个box和与之对应的类别,假设每个位置的anchor box数量为k(如前所述, ),则分类分支输出的特征向量为2k(两个类别),box回归分支输出为4k(4为box信息,box中心点x坐标、box中心点y坐标、box宽w和box高h)。box分支预测的位置(x,y,w,h)都是相对anchor box的偏移量。从功能上来看,anchor box的作用有点类似于提供给Fast RCNN的propsal box的作用,也表示目标可能出现的位置box,但是anchor box是均匀采样的,而proposal box是通过特征抽取(或包含训练)回归得到的。由此可以看出,anchor box与预测的box是一一对应的。从后文将会了解到,通过anchor box与gt box的IoU的关系,可以确定每个预测box的正负样本类别。通过监督的方式让特定的box负责特定位置、特定尺寸和特定长宽比的对象,模型就学会了拟合不同尺寸和大小的对象。另外,由于预测的box是相对anchor box的偏移量,而anchor box是均匀分布在feature map上的,只有距离和尺寸与gt box接近(IoU较大)的anchor box对应的预测box才会与gt box计算损失,这大大简化了训练,不然会有大量的预测box与gt box计算损失,尤其是在训练初始阶段,当一切都是瞎猜的时候。

在Faster RCNN基础上,将backbone替换为ResNet50或ResNet101,涉及部分细节的改动,我们放在本文的细节部分进行描述。

在Faster RCNN-ResNet基础上,引入FPN(特征金字塔网络)模块,利用CNN网络天然的特征金字塔特点,模拟图像金字塔功能,使得RPN和Fast RCNN可以在多个尺度级别(scale level)的feature map上分别预测不同尺寸的对象,大大提高了Faster RCNN的检测能力。相比图像金字塔大大节省了推理时间。原理如下图所示:

从上图中可以看出,FPN并不是简单地使用backbone的多个CNN层输出的feature map进行box回归和分类,而是将不同层的feature map进行了top-down和lateral connection形式的融合后使用。这样便将CNN网络前向传播(bottom-up)产生的深层语义低分辨率特征与浅层的浅语义高分辨率的特征进行融合,从而弥补低层特征语义抽象不足的问题,类似增加上下文信息。其中,top-down过程只是简单地使用最近邻插值将低分辨率的feature map上采样到即将与之融合的下层feature map相同的尺寸(尺寸上采样到2倍),lateral connection则是先将低层的feature map使用 的卷积缩放为即将与之融合的上层feature map相同的通道数(减少计算量),然后执行像素级相加。融合后的feature map不仅会用于预测,还会继续沿着top-down方向向下传播用于下层的特征融合,直到最后一层。

mask R-CNN提出的RoI Align缓解了RoIPooling的缺陷,能够显著提升小目标物体的检测能力。网上介绍RoIPooling和RoIAlign的文章很多,此处不再赘述,推荐阅读个人觉得比较好的两篇博客: RoIPooling 和 RoIAlign 。

此处稍微啰嗦下个人对RoIPooling的思考: 为什么RoIPooling不使用自适应的池化操作,即根据输入的feature map的尺寸和希望输出的feature map尺寸,自动调整池化窗口的大小和步长以计算想要尺寸的feature map,类似于自适应池化操作,而不是将输入的feature map划分成均匀的小区域(bins,论文中划分为 个bins),然后每个小区域中分别计算MaxPooling。不管计算上是否高效,至少这种做法在输入的feature map尺寸(比如 )小于期望的输出feature map尺寸(比如 )时会失效,因为在3*3的feature map上如果不使用padding的话是无法得到 的特征的,而使用padding又是很低效的操作,因为要扩展局部feature map的尺寸,而使用划分bins的方法,即使输出的feature map尺寸远小于要输出的feature map尺寸,也仅仅是在同一位置采样多次而已。

本人之前介绍YOLOv3的 文章 也介绍过anchor box的作用,再加上本文1.1.2节中的介绍应该比较全面了,不再赘述。

此处的绝大部分细节来自论文,论文中未提及的部分,主要参考了mmdetection中的 实现 。

整个模型的网络结构可以划分为四个部分,分别为backbone、FPN、RPN head和Fast RCNN head。

ne: 原图短边被resize到800像素,这里值得注意的是,如此resize后一个batch内的每张图片的大小很有可能并不一致,所以还无法合并为一个输入矩阵,普遍的做法是将batch内的每张图片的左上角对齐,然后计算resize后batch内所有图片的最大宽和高,最后按照最大宽或高分别对每张图片的宽或高进行0值padding;输出为4个不同尺寸的feature map(C2、C3、C4、C5)。

: ResNet backbone产生的4个不同尺寸的feature map(C2、C3、C4、C5)作为输入,输出5个不同尺寸的feature map(P2、P3、P4、P5、P6),P6是对P5进行2倍降采样得到,每个feature map的通道数为固定的256;使用P6的原因是为了预测更大尺寸的对象。

:输入为FPN产生的feature map(P2、P3、P4、P5、P6);由于RPN是在5个输入feature map上进行独立的预测,则每个feature map都会输出 proposal box,因此不可能将所有的proposal box都提供给Fast R-CNN,这里的做法是对每个feature map上产生的proposal box按类别概率进行排序(每个feature map上的proposal box独立进行),然后选择前k个proposal box, 5个feature map一共会 产生 个proposal box,训练时 ,推理时 。最后,将所有的 个proposal box合并后统一进行NMS(IoU threshold=0.7)去掉冗余的box,最后选择前m个输出给Fast R-CNN,训练和测试时m都取1000。

训练时将gt box通过下面的公式转换为相对anchor box的偏移值,与网络的预测计算loss,至于将每个gt与具体的哪个anchor box计算偏移,则需要根据2.3.1节中的正负样本方法来确定。测试时将预测的box通过该公式中的逆运算计算出当前box相对原图的位置和大小, , , , 指相对全图的box中心点坐标以及宽和高, , , , 指每个anchor相对全图的box中心点坐标以及宽和高。由此可以看出,box回归分支直接预测的便是相对anchor的偏移值,即公式中的 、 、 和 。

以上提到的2000和1000是作为Fast R-CNN的输入proposal box,在训练时参与RPN loss计算的anchor boxs数量为256个,正负样本数量为 ,正样本不足128的用负样本补足。这里的256是从所有feature map中的anchor box中选择的,并非每个feature map都独立取得256个正负样本。这也是合理的,因为每个gt box由于尺寸的原因,几乎不可能与所有feature map上的anchor box的IoU都大于一定的阈值(原因参考2.3.1节)。注意选择前并未进行NMS处理,而是直接根据2.3.1节中确定正负样本的方式确定每个预测box正负类别,然后分别在正样本中随机选择128个正样本,在负样本中随机选择128个负样本。

R-CNN:输入为FPN产生的前4个feature map和RPN输出的proposal box,4个feature map为P2、P3、P4、P5,与backbone对应,不使用P6。那么,如何确定在哪个feature map上执行每个proposal box对应的RoIAlign操作并得到 大大小的feature map呢?论文中的做法是通过下面的公式将特定尺寸的proposal box与FPN产生的4个feature map中尺寸最适合的对应起来,即让感受野更接近对象尺寸的feature map预测该对象 ,其中224为backbone在ImageNet上预训练的尺寸,w和h为proposal box的长和宽,k表示适合尺寸为w和h的propsal box的feature map的位置,即4个feature map为P2、P3、P4、P5的下标,k_0为proposal box大致为224*224时对应feature map位置值( ),表示proposal box大致为 时在P4上执行RoIAlign,小于 时,在P2或P3上执行,大于则在P5上。

网络都会针对每个RoI会输出一个类别概率分布(包括背景类别)和一个相对RoI box的长度为4的box偏移向量。概率分支由softmax激活函数得到。与RPN的类似,训练时,如2.4.2节loss计算中所述,会将gt box通过下面的公式转换为相对proposal box(前提是该RoI是正样本)的偏移量,然后使用loss计算公式直接与预测的相对偏移量进行loss计算;测试时,会通过下列公式的逆运算将偏移值换算回相对原图的位置box,然后使用NMS去掉冗余的box,最终输出。

训练时,通过2.3.2中的方式确定每个proposal box属于正样本或负样本后,随机选择512个样本,其中正负比例为1:3进行loss计算,正样本不足的由负样本补足。

在RPN中,由于每个feature map的每个滑窗位置上的张量( 维张量,C为feature map的通道数)会被用来预测k个box和每个box对应的类别概率,那么具体哪个box才能参与gt box的损失计算(包括类别和box回归损失)?这便需要在所有预测的box中确定正负样本,因为一个anchor对应一个预测的box和类别,那么确定预测的box是正例还是负例等价于确定anchor box的是正例还是反例。为了便于训练,RPN中使用双IoU阈值的方式确定正负样本,与gt box的IoU为最大或者大于0.7的anchor box被设置为正样本,这会导致一个gt box与多个预测box计算损失,即允许多个box预测同一对象,与gt box的IoU小于0.3的anchor box被设置为负样本,其余的忽略掉,即不参与loss计算。在此基础上,如2.2节中所述,会对正负样本进行随机采样,总数为256,其他不参与损失函数计算。

与gt box的IoU大于0.5的proposal box作为正样本,注意,是将proposal box与gt box计算IoU,Fast-RCNN中的proposal box的作用与anchor box有些类似,即确定正负样本和预测的box 都是针对它们的偏移值 ,其余IoU在 之间的作为负样本,低于0.1的作为难例挖掘时的启发式样本(mmdetection中的做法是单阈值方式,与gt box的IoU大于0.5的proposal box作为正样本,小于的都是负样本)。

Faster R-CNN中是以分步的方式联合训练RPN和Fast R-CNN,大致的过程为:

但在mmdetection中,已经将RPN和Fast R-CNN的loss进行权重加和,从而进行联合训练,训练流程简化很多,且能够达到相同的效果。

确定了每个预测box或anchor box的正负类别后,便可以计算损失函数了,类似于Fast RCNN的做法,只有正样本的box才会参与box损失计算,损失函数如下:

为类别损失为类别损失函数,使用交叉熵损失, 为box回归损失,使用smooth L1损失,论文中平衡因子lambda为10。 表示第i个anchor box对应的gt 类别(背景为0,对象为1), 为gt box相对anchor box的偏移量(如果该anchor box被确定为正样本),通过下面的公式计算得到, 即表示只有 ,即为正样本时才会计算box的损失。

Fast R-CNN的loss类似于RPN,只有proposal box为非背景类别(正样本)时才计算box损失, 为类别损失, 为box损失, 表示proposal box的 , 时表示背景(通过2.3.2的方式确定proposal box的类别)。 为平衡因子,作者所有实验中 。为了防止box回归的L2 loss放大噪声(异常loss)从而影响训练,作者将L2 loss修改为 loss,当box尺寸的差异较大时使用L1 loss,抑制异常值对梯度的贡献。

其中v是通过下面的公式将gt box( , , , )转换得到,其中,( , , , )为proposal box的在原图中的中心点坐标和宽与高。

在Faster R-CNN和Faster R-CNN-ResNet中,由于RPN只是在单尺寸的feature map上进行滑窗,为了缓解多尺寸的问题,每个滑窗位置会设计多个尺寸的anchor,但是在Faster R-CNN-FPN中使用了FPN,则天然就具有了适应对象多尺寸的问题,因此不用再为每个滑窗设计多个尺寸的anchor。即在Faster RCNN-FPN中,为每种尺寸feature map上的滑窗只设计了单一尺寸多种长宽比的anchor,长宽比有 、 和 ,不同feature map上anchor的尺寸为: , , , 和 ,依次对应P2、P3、P4、P5和P6。

COCO上的训练细节:RPN的weight decay为0.0001,SGD的 ,初始学习率为0.002,学习率调整使用step decay方式。

论文里什么是目标值?

论文里的目标值就是你要围绕什么目标写论文啊,
要达到什么水平

EfficientDet : 快又准,EfficientNet作者在目标检测领域的移植 | CVPR 2020

论文: EfficientDet: Scalable and Efficient Object Detection

目前目标检测领域,高精度的模型通常需要很大的参数量和计算量,而轻量级的网络则一般都会牺牲精度。因此,论文希望建立一个可伸缩的高精度且高性能的检测框架。论文基于one-stage的检测网络范式,进行了多种主干网络、特征融合和class/box预测的结构尝试,主要面临两个挑战:

FPN是目前最广泛的多尺度融合方法,最近也有PANet和NAS-FPN一类跨尺度特征融合方法。对于融合不同的特征,最初的方法都只是简单地直接相加,然而由于不同的特征是不同的分辨率,对融合输出特征的共享应该是不相等的。为了解决这一问题,论文提出简单但高效加权的bi-directional feature pyramid network(BiFPN),该方法使用可学习的权重来学习不同特征的重要性,同时反复地进行top-down和bottom-up的多尺度融合

论文认为除了缩放主干网络和输入图片的分辨率,特征网络(feature network)和box/class预测网络的缩放对准确率和性能也是很重要的。作者借鉴EfficientNet,提出针对检测网络的混合缩放方法(compound scaling method),同时对主干网络,特征网络和box/class预测网络的分辨率/深度/宽度进行缩放

最后,论文将EfficientNet作为主干,结合BiFPN和混合缩放,提出新的检测系列EfficientDet,精度高且轻量,COCO上的结果如图1,论文的贡献有以下3点:

定义多尺寸特征 ,论文的目标是找到变化函数 来高效融合不同的特征,输出新特征 。具体地,图2a展示了top-down FPN网络结构,一般FPN只有一层,这里应该为了对比写了repeat形式。FPN获取3-7层的输入 , 代表一个分辨率为 的特征层

top-down FPN操作如上所示, 为上采用或下采样来对齐分辨率, 通常是特征处理的卷积操作

top-down FPN受限于单向的信息流,为了解决这一问题,PANet(图2b)增加了额外的bottom-up路径的融合网络,NAS_FPN(图2c)使用神经架构搜索来获取更好的跨尺度特征网络的拓扑结构,但需要大量资源进行搜索。其中准确率最高的是PANet,但是其需要太多的参数和计算量,为了提高性能,论文对跨尺寸连接做了几点改进:

大多的特征融合方法都将输入特征平等对待,而论文观察到不同分辨率的输入对融合输出的特征的贡献应该是不同的。为了解决这一问题,论文提出在融合时对输入特征添加额外的权重预测,主要有以下方法:

, 是可学习的权重,可以是标量(per-feature),也可以是向量(per-channel),或者是多维tensor(per-pixel)。论文发现标量形式已经足够提高准确率,且不增加计算量,但是由于标量是无限制的,容易造成训练不稳定,因此,要对其进行归一化限制

,利用softmax来归一化所有的权重,但softmax操作会导致GPU性能的下降,后面会详细说明

,Relu保证 , 保证数值稳定。这样,归一化的权重也落在 ,由于没有softmax操作,效率更高,大约加速30%

BiFPN集合了双向跨尺寸的连接和快速归一化融合,level 6的融合操作如上, 为top-down路径的中间特征, 是bottom-up路径的输出特征,其它层的特征也是类似的构造方法。为了进一步提高效率,论文特征融合时采用depthwise spearable convolution,并在每个卷积后面添加batch normalization和activation

EfficientDet的结构如图3所示,基于one-stage检测器的范式,将ImageNet-pretrained的EfficientNet作为主干,BiFPN将主干的3-7层特征作为输入,然后重复进行top-down和bottom-up的双向特征融合,所有层共享class和box网络

之前检测算法的缩放都是针对单一维度的,从EfficientNet得到启发,论文提出检测网络的新混合缩放方法,该方法使用混合因子 来同时缩放主干网络的宽度和深度、BiFPN网络、class/box网络和分辨率。由于缩放的维度过多,EfficientNet使用的网格搜索效率太慢,论文改用heuristic-based的缩放方法来同时缩放网络的所有维度

EfficientDet重复使用EfficientNet的宽度和深度因子,EfficinetNet-B0至EfficientNet-B6

论文以指数形式来缩放BiFPN宽度 (#channels),而以线性形式增加深度 (#layers),因为深度需要限制在较小的数字

box/class预测网络的宽度固定与BiFPN的宽度一致,而用公式2线性增加深度(#layers)

因为BiFPN使用3-7层的特征,因此输入图片的分辨率必需能被 整除,所以使用公式3线性增加分辨率

结合公式1-3和不同的 ,论文提出EfficientDet-D0到EfficientDet-D6,具体参数如Table 1,EfficientDet-D7没有使用 ,而是在D6的基础上增大输入分辨率

模型训练使用momentum=0.9和weight decay=4e-5的SGD优化器,在初始的5%warm up阶段,学习率线性从0增加到0.008,之后使用余弦衰减规律(cosine decay rule)下降,每个卷积后面都添加Batch normalization,batch norm decay=0.997,epsilon=1e-4,梯度使用指数滑动平均,decay=0.9998,采用 和 的focal loss,bbox的长宽比为 ,32块GPU,batch size=128,D0-D4采用RetinaNet的预处理方法,D5-D7采用NAS-FPN的增强方法

Table 2展示了EfficientDet与其它算法的对比结果,EfficientDet准确率更高且性能更好。在低准确率区域,Efficient-D0跟YOLOv3的相同准确率但是只用了1/28的计算量。而与RetianaNet和Mask-RCNN对比,相同的准确率只使用了1/8参数和1/25的计算量。在高准确率区域,EfficientDet-D7达到了51.0mAP,比NAS-FPN少使用4x参数量和9.3x计算量,而anchor也仅使用3x3,非9x9

论文在实际的机器上对模型的推理速度进行了对比,结果如图4所示,EfficientDet在GPU和CPU上分别有3.2x和8.1x加速

论文对主干网络和BiFPN的具体贡献进行了实验对比,结果表明主干网络和BiFPN都是很重要的。这里要注意的是,第一个模型应该是RetinaNet-R50(640),第二和第三个模型应该是896输入,所以准确率的提升有一部分是这个原因。另外使用BiFPN后模型精简了很多,主要得益于channel的降低,FPN的channel都是256和512的,而BiFPN只使用160维,这里应该没有repeat

Table 4展示了Figure 2中同一网络使用不同跨尺寸连接的准确率和复杂度,BiFPN在准确率和复杂度上都是相当不错的

Table 5展示了不同model size下两种加权方法的对比,在精度损失不大的情况下,论文提出的fast normalized fusion能提升26%-31%的速度

figure 5展示了两种方法在训练时的权重变化过程,fast normalizaed fusion的变化过程与softmax方法十分相似。另外,可以看到权重的变化十分快速,这证明不同的特征的确贡献是不同的,

论文对比了混合缩放方法与其它方法,尽管开始的时候相差不多,但是随着模型的增大,混合精度的作用越来越明显

论文提出BiFPN这一轻量级的跨尺寸FPN以及定制的检测版混合缩放方法,基于这些优化,推出了EfficientDet系列算法,既保持高精度也保持了高性能,EfficientDet-D7达到了SOTA。整体而言,论文的idea基于之前的EfficientNet,创新点可能没有之前那么惊艳,但是从实验来看,论文推出的新检测框架十分实用,期待作者的开源

上一篇:论文答辩开头论述

下一篇:海尔论文格式