CV计算机视觉(4)——目标检测及Fast-RCNN解读(特征投影,ROI Pooling,ROI Align,Precise ROI Pooling)


前言

前面讲了两阶段检测的RCNN算法,我们提到它有一个缺陷就是2k个候选区域在测试阶段是存在大量重复的特征提取过程的,为了改进这一点,诞生了Fast-RCNN。

一、Fast-RCNN主要技术

1.共享卷积计算

为了避免重复的卷积,Fast-RCNN的做法是先把图片进行特征提取,得到特征图。然后再生成候选区域,根据候选区域的坐标乘以相应的尺寸缩放找到特征图上的对应特征。

如图所示:假设一张输入的尺寸为800×640.经过一系列CNN操作,得到一个尺寸为50×40的特征图
在这里插入图片描述
我们的目的是只经过一次卷积计算提取特征,现在我们已经做完了CNN,得到了全图的feature map。依然是经过selective search生成region,由于每个region都有一个Bbox的坐标,我们把region Bbox的坐标尺寸缩放一个跟CNN相同的比例(这个例子中是1/16,做了四次pooling,具体问题具体分析),然后对应的坐标点找到feature map上就是这个区域的特征了。(所谓的特征投影)。如下图,黄色region Bbox的坐标为(x0,y0,x1,y1),缩放1/16得到(x0/16,y0/16,x1/16,y1/16),这个坐标在特征图上的区域就是该region的特征。
在这里插入图片描述

2.ROI POOLING

ROI的全称是region of interest,感兴趣的区域。
我们得到每个区域的特征后要把他们调整成统一的尺寸才能送入模型进行训练学习特征,在RCNN中是直接resize了一个尺寸,略粗糙。
在这里插入图片描述

Fast-RCNN的做法是用的ROI POOLING:如下图,以region为例,假设我们需要resize成7×7的尺寸,首先将feature分成7×7块,会有除不尽的块(比如高10除7得1余3,那么保证每行高1的情况下,最后一行多了余数3),然后在每个块区域做maxpooling,最后生成7×7的特征图
在这里插入图片描述
具体的训练细节:
batchsize=2
ROI=64
pos:neg=1:3
每批次训练2个样本,每个样本生成64个ROI,也就是每批次训练2×64=128个区域。
这128个区域按照1/4的正样本,3/4的负样本进行选择,选择方式跟RCNN相同,通过与GT的iou>0.5得出。

3.SVM替换成两个FC

将SVM替换成两个FC层,一个实现分类,一个实现回归。用SVD分解加速FC。

在这里插入图片描述

BP的loss函数:把分类和回归加起来。Lcls表示分类,用交叉熵计算,Lloc表示回归,用L1loss计算。
在这里插入图片描述
P是分类的预测得分
U是真实类别
t是Bbox
v是GT
其中参数λ表示这个是背景还是前景,因为我们只计算前景的回归损失,背景的回归不参与BP计算。
在这里插入图片描述

二、Fast-RCNN总结

在这里插入图片描述
对于一个输入B0,经过深度卷积B1得到它的特征图;
经过selective search生成2k个候选区的Bbox,Bbox的坐标缩放卷积的尺寸,对应到特征图上的坐标,得到特征图上的对应候选区特征;
在输入模型进入训练前,经过ROI pooling B2,B3,把不同尺寸的特征图resize到相同的尺寸,输入模型训练;
用两个FC层输出两个结果,一个是分类B4,一个是回归B5,然后加和求loss进行BP计算。

三、Fast-RCNN缺点

Fast-RCNN有严重的信息损失。
1.首先,在特征映射部分,坐标缩放不能整除的情况几乎是百分百存在的,由于特征映射过程中只保留整数坐标,就会损失小数点级别的特征信息。对于大目标损失小数点也许没什么,对于小目标的影响还是比较大的。
在这里插入图片描述

2.其次,在ROI Pooling部分,提取的特征经过一次MAX Pooling,resize到了相同的尺寸大小,这一步损失的信息更多。

四、ROI Pooling的改进

1.ROI Align

投影和ROI 合起来。在FAST-RCNN中,先得到整数尺寸的特征图,再对特征图做pooling,现在不这样了,直接坐标缩放一定的比例,对除不尽的部分不取整,假设需要ROI Pooling成2×2的大小,把没有整数化部分的特征图区域划分成2×2,最终的思想都是对这2×2的区域取出4个值代表这个区域,所以干脆直接在还没有损失信息的时候就选值。怎么选的呢?
在这里插入图片描述

首先根据要pooling的尺寸得到对应的几个区域(如上图),这个例子是4个区域,然后每个区域再划分成4块(N=4,经实验是最佳取值)
在这里插入图片描述

在子区域中用他们的中心点决定代表这个区域的值:(图中的粉色点)在这里插入图片描述
显然,中心点也不一定能整除,作者采用双线性插值的思想来求每个中心点的值。
在这里插入图片描述

这样,一个大区域的四个小区域就分别用四个中心点表示了出来,取最大的中心点作为ROI Pooling的取值。

2.Precise ROI Pooling

ROI Align虽有改进,但也不是所有像素点都参与计算,在分区的基础上,Precise ROI Pooling给每个点都做双线性插值
在这里插入图片描述
在这里插入图片描述

3.三种 ROI Pooling对比

1.ROI Pooling:两次量化损失信息
2.ROI Align:改进了量化损失信息过程
3.Precise ROI Pooling:将所有点考虑进去

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值