FPN 相关问题

目录

 

1、FPN横向连接为什么接一个3*3 卷积:

2、FPN的特征融合为什么是相加操作

3、FPN整体架构:

4、为什么FPN能够很好的处理小目标?


FPN特征金字塔网络解读:

FPN特征金字塔网络解读 - 简书

【目标检测】FPN(Feature Pyramid Network) - 知乎

1、FPN横向连接为什么接一个3*3 卷积:

横向连接(Lateral connection)的步骤:

① 对第 n 层的特征使用 1*1 卷积来修改通道数

② 对第 n+1 层的特征使用线性插值法来进行上采样,然后跟步骤 ① 的结果进行按元素相加

③ 对步骤 ② 的结果使用 3*3 卷积,目的是为了消除上采样产生的混叠效应(aliasing effect)

注:

混叠效应:,混叠效应应该就是指上边提到的‘插值生成的图像灰度不连续,在灰度变化的地方可能出现明显的锯齿状’。上采样与原图叠加后,造成特征的不连续,在原特征图上的失真(特征混乱);

解决方法:再做卷积相当于 filter(滤波) 操作,使之“还原”,也就是特征的再提取,保证特征的稳定性;

混跌效应具体可以查看:FPN--2017 CVPR解读 - 知乎

2、FPN的特征融合为什么是相加操作

      假设两路输入来说,如果是通道数相同且后面带卷积的话,add等价于concat之后对应通道共享同一个卷积核。FPN里的金字塔,是希望把分辨率最小但语义最强的特征图增加分辨率,从性质上是可以用add的。如果用concat,因为分辨率小的特征通道数更多,计算量是一笔不小的开销。所以FPN里特征融合使用相加操作可以理解为是为了降低计算量。
     4.1、如何理解concat和add这两种常见的feature map特征融合方式   

Addition和Concatenate分支操作统称为shortcut,Addition是在ResNet中提出,两个相同维度的feature map相同位置点的值直接相加,得到新的相同维度feature map,这个操作可以融合之前的特征,增加信息的表达,Concatenate操作是在Inception中首次使用,被DenseNet发扬光大,和addition不同的是,它只要求两个feature map的HW相同,通道数可以不同,然后两个feature map在通道上直接拼接,得到一个更大的feature map,它保留了一些原始的特征,增加了特征的数量,使得有效的信息流继续向后传递。


 concat是通道数的增加;  add是特征图相加,通道数不变.你可以这么理解,add是描述图像的特征下的信息量增多了,但是描述图像的维度本身并没有增加,只是每一维下的信息量在增加,这显然是对最终的图像的分类是有益的。而concatenate是通道数的合并,也就是说描述图像本身的特征数(通道数)增加了,而每一特征下的信息是没有增加。concat每个通道对应着对应的卷积核。 而add形式则将对应的特征图相加,再进行下一步卷积操作,相当于加了一个先验:对应通道的特征图语义类似,从而对应的特征图共享一个卷积核(对于两路输入来说,如果是通道数相同且后面带卷积的话,add等价于concat之后对应通道共享同一个卷积核)。因此add可以认为是特殊的concat形式。但是add的计算量要比concat的计算量小得多

3、FPN整体架构:

 FPN 主要分为:FPN for RPN 和  FPN for Fast R-CNN 两个FPN过程。FPN for RPN 可以从参考文章中了解。 这里主要讲一下 FPN for Fast R-CNN 的ROI Pooling。

FPN for Fast R-CNN:

在Fast R-CNN 中有一个ROI Pooling层,它是使用region proposal的结果和特征图作为输入,得到的每个proposal对应的特征然后pooling,之后再分别用于分类结果和边框回归。之前Fast R-CNN使用的是单尺度的特征图,但是现在使用不同尺度的特征图,那么RoI需要在哪一个尺度的特征图上提取对应的特征呢? 作者认为,不同尺度的RoI应该使用不同特征层作为RoI pooling层的输入,大尺度RoI就用后面一些的金字塔层,比如P5 的featuremap;小尺度RoI就用前面一点的特征层,比如P4的featuremap。

4、为什么FPN能够很好的处理小目标?


图6 FPN处理小目标

 如上图所示,FPN能够很好地处理小目标的主要原因是:

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

FPN可以利用经过top-down模型后的那些上下文信息(高层语义信息);
对于小目标而言,FPN增加了特征映射的分辨率(即在更大的feature map上面进行操作,这样可以获得更多关于小目标的有用信息, 低层细节信息),如图中所示;

低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。FPN同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同特征层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的。所以可以提升小目标的准确率。

5、如果只能修改RPN网络的话,怎么修改可以提升网络小目标检出率

①修改RPN网络的结构,比如引入FPN结构,利用多层feature map融合来提高小目标检测的精度和召回;②针对小目标重新精细设计Anchor的尺寸和形状,从而更好地对小目标进行检测;

6、阐述一下如何检测小物体

小目标难以检测的原因:分辨率低,图像模糊,携带的信息少。

  1. 图像金字塔和多尺度滑动窗口检测(MTCNN)
  2. 多尺度特征融合检测(FPN、PAN、ASFF等)
  3. 增大训练、检测图像分辨率;
  4. 超分策略放大后检测;

①借鉴FPN的思想,在FPN之前目标检测的大多数方法都是和分类一样,使用顶层的特征来进行处理。虽然这种方法只是用到了高层的语义信息,但是位置信息却没有得到,尤其在检测目标的过程中,位置信息是特别重要的,而位置信息又是主要在网络的低层。因此FPN采用了多尺度特征融合的方式,采用不同特征层特征融合之后的结果来做预测。

②要让输入的分布尽可能地接近模型预训练的分布。先用ImageNet做预训练,之后使用原图上采样得到的图像来做微调,使用微调的模型来预测原图经过上采样的图像。该方法提升效果比较显著。

③采用多尺度输入训练方式来训练网络;

④借鉴Cascade R-CNN的设计思路,优化目标检测中Two-Stage方法中的IOU阈值。检测中的IOU阈值对于样本的选取是至关重要的,如果IOU阈值过高,会导致正样本质量很高,但是数量会很少,会出现样本比例不平衡的影响;如果IOU阈值较低,样本数量就会增加,但是样本的质量也会下降。如何选取好的IOU,对于检测结果来说很重要。⑤采用分割代替检测方法,先分割,后回归bbox来检测微小目标。

(1)如果有很长,很小,或者很宽的目标,应该如何处理目标检测中如何解决目标尺度大小不一的情况 小目标不好检测,有试过其他的方法吗?比如裁剪图像进行重叠

小目标不好检测的两大原因:1)数据集中包含小目标的图片比较少,导致模型在训练的时候会偏向medium和large的目标。2)小目标的面积太小了,导致包含目标的anchor比较少,这也意味着小目标被检测出的概率变小。

改进方法: 1)对于数据集中含有小目标图片较少的情况,使用过度采样(oversample)的方式,即多次训练这类样本。2)对于第二类问题,则是对于那些包含小物体的图像,将小物体在图片中复制多分,在保证不影响其他物体的基础上,人工增加小物体在图片中出现的次数,提升被anchor包含的概率。3)使用FPN;4)RPN中anchor size的设置一定要合适,这样可提高proposal的准确率。5)对于分辨率很低的小目标,我们可以对其所在的proposal进行超分辨率,提升小目标的特征质量,更有利于小目标的检测。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值