基于锚框的物体检测fast R-CNN(3)
基于锚框的多阶段目标检测算法:fast R-CNN
上一篇介绍了R-CNN物体检测的过程,在最后提到了R-CNN的缺点是速度慢,并列出了三点原因:
1.使用Selective Search算法生成大约2000个候选区域,这个过程非常耗时
2.每个候选区域使用一次卷积神经网络进行一次特征提取,共需约2000次。由于候选框之间可能存在重叠区域,所以这个过程有很多属于重复计算
3.特征提取,目标分类,边框回归是三个独立的步骤,训练,检测效率低
于是R-CNN作者的团队针对第2和第3两点耗时的原因,对R-CNN做了一些改进,并提出了fast R-CNN。下面我们就来看一下fast R-CNN的目标检测过程是怎样的,相对于R-CNN做了哪些改进。
fast R-CNN的目标检测过程
如图所示,R-CNN目标检测过程也分为5个部分:
其中,前两个步骤和R-CNN是一样的
1.第一步:输入一幅图像
2.第二步:生成候选区域,使用Selective Search算法生成大约2000个候选区域
从第三步开始就不一样了
3.第三步:进行特征提取。将整幅输入图像作为输入,传入到CNN网络中提取特征(区别与R-CNN是将大约2000个候选区域调整为相同大小后,分别送入到CNN网络中提取特征)
4.第四步:先将候第二步生成的候选框映射到第三步提取的特征图上,再用RoIPooling分别生成每个候选区域的特征
5.第五步:利用提取的特征对所有候选框进行分类和回归
RoIPooling的任务及原理
RoIPooling的任务是:利用特征采样,把不同空间大小的特征,变成空间大小一直的特征。
用RoIPooling把不同空间大小的特征变成空间大小一直的特征的原因是:
1.后面是全连接层(FC),输入维度需要一致
2.各候选区域的特征大小一致时,可组成batch批量处理
RoIPooling的原理:
假如我们得到的特征空间是如下图所示的5×7大小的矩阵:
如果我们要将其变成2×2大小的特征,那么需要先将上面的矩阵分成2×2个块儿。分块儿时采用向下取整的原则,即5/2=2,7/2=3,那么分块儿的结果如下图所示:
接下来我们要做的就是找到每个块儿中的最大值:
将每个块儿中的最大值提取出来,得到我们要的2×2大小的特征:
fast R-CNN的优点及缺点
优点:
1.分类及回归是在一个网络中做的,属于端到端多任务训练
2.fast R-CNN比R-CNN快了大约200倍,精度也更高了
缺点:
1.生成候选区域的Selective Search算法十分耗时的问题没有解决