R-CNN三部曲(二):空间金字塔池化与Fast R-CNN

SPPNet、Fast R-CNN是R-CNN的改进版本,这里我不打算单独介绍他们,而是注重介绍他们的改进方法。

首先来回顾一下R-CNN有哪些缺点,第一,我们在用CNN对图像进行处理之前,需要处理图像使得他们保持同样的尺寸,一般可以选择扭曲图像或者直接裁剪,不论怎么做都有可能造成图像信息的丢失。

第二,R-CNN需要对每个候选框进行一次CNN计算,计算之后还需要用SVM验证。

第三,模型包含多个阶段的训练,一个是对CNN的fine tuning,一个是SVM,一个是边界框回归器。

针对R-CNN的第一个缺点,回想一下,为什么CNN需要固定尺寸的输入呢,实质上不是CNN需要固定尺寸的输入,因为卷积运算和池化运算都是可以针对任意尺寸的输入得到相应输出的,但最后做分类的时候,我们用到了MLP,这就需要输入的尺寸统一了。

针对这个问题的解决方法就是空间金字塔池化,它是一种池化方法,主要实现了针对不同尺寸的输入,也能得到固定的输出,具体是怎么实现的呢,首先我们回想一下传统的池化过程,比如最大池化,就是用一个比如33的框,遍历整个特征图,计算每个区域的最大值,而空间金字塔池化,它则是把整个特征图分成33,一共九个部分,计算每个部分的最大值,这样,不论输入尺寸多大,都能得到同样尺寸的输出了。

在这里插入图片描述
上图也可以更清晰地反映出空间金字塔池化的思想,一般来说,我们会对特征图进行多个划分,比如11、22、4*4,这样就可以计算出21个特征值,如果想要更多的特征值,就进行更多的划分。

空间金字塔池化会对一个输入进行不同尺度的池化,而ROI(region of interest)池化,本质上就是空间金字塔池化的简化版本,只进行单一尺度的池化(比如只使用2*2划分)。实验证明,其实多个尺度的池化带来的模型效果的提升并不显著,所以目前更多偏向于使用ROI池化。

针对R-CNN的第二个缺点,其实我们只需要改一下计算顺序就能解决了,也就是说,先对输入图像计算CNN得到特征图(feature map),再根据region proposals挑选出特征图对应的部分,因为特征图比原输入尺寸变小了,所以要注意region proposals坐标也要进行相应的缩放,之后,再利用前面的ROI池化层,把提取出来的局部特征图进行池化处理统一尺寸,最后再进行分类和边界框回归。

针对R-CNN的第三个缺点,也就是模型包含多阶段训练,多阶段训练最大的缺点就是特征复用,原来R-CNN中,最后我们用CNN的feature map做完分类又做边界框回归,这就叫特征复用,而在fast r-cnn中则提出,直接用一个mlp对feature map进行处理,在mlp中再分为两个分支进行分类和边界框回归:

在这里插入图片描述
上图可以更清晰地反映出,ROI池化层后接多层神经网络,神经网路中途分成两个分支,一部分通过softmax处理计算分类结果,另一部分进行边界框回归,所以模型的损失函数是一个多任务损失函数(multi-task loss):

L ( p , u , t u , v ) = L c l s ( p , u ) + λ [ u ≤ 1 ] L l o c ( t u , v ) L(p,u,t^u,v)=L_{cls}(p,u) + \lambda[u \leq 1] L_{loc}(t^u,v) L(p,u,tu,v)=Lcls(p,u)+λ[u1]Lloc(tu,v)

说到底不论是分类还是边界框回归,得到的结果也是几个数值(分类得分加上边界框回归值),所以像这样把两个问题的结果融合到一个模型中进行训练也是确实可行的。

上面提到的所有内容,就构成了Fast R-CNN。

在github写的自然语言处理入门教程,持续更新:NLPBeginner

在github写的机器学习入门教程,持续更新:MachineLearningModels

想浏览更多关于数学、机器学习、深度学习的内容,可浏览本人博客

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R-CNN(Region-based Convolutional Neural Networks)是一种目标检测算法,它通过两个阶段来检测图像中的目标物体。首先,R-CNN使用选择性搜索(Selective Search)算法生成一系列候选区域,然后对每个候选区域进行卷积神经网络(CNN)特征提取和分类。R-CNN的主要缺点是速度较慢,因为每个候选区域都需要独立地进行CNN特征提取和分类。 Fast R-CNN是对R-CNN的改进,它通过引入RoI池化层(Region of Interest pooling)来解决R-CNN中重复计算的问题。RoI池化层可以将不同大小的候选区域映射为固定大小的特征图,从而使得所有候选区域可以共享相同的特征提取过程。这样一来,Fast R-CNN相比于R-CNN具有更快的速度。 Faster R-CNN是对Fast R-CNN的进一步改进,它引入了一个称为Region Proposal Network(RPN)的子网络来生成候选区域。RPN通过滑动窗口在特征图上提取候选区域,并为每个候选区域分配一个得分,然后根据得分进行筛选和排序。这种端到端的训练方式使得Faster R-CNN在目标检测任务上具有更高的准确性和更快的速度。 Mask R-CNN是在Faster R-CNN的基础上进一步发展的,它不仅可以进行目标检测,还可以进行实例分割。Mask R-CNNFaster R-CNN的基础上增加了一个分支网络,用于预测每个候选区域中目标物体的像素级掩码。这使得Mask R-CNN能够同时获得目标的位置信息和像素级别的语义信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值