目标检测总结:RCNN系列(2)

目标检测总结:RCNN系列(2)


上一篇介绍了RCNN和Fast RCNN,本文介绍RCNN系列的终极版本,FasterRCNN。Faster RCNN虽然是2015年的论文,但它至今认识许多目标检测算法的基础。
FasterRCNN可以看做是RPN(region proposal network) + fast RCNN的系统,用RPN代替了之前的selective search 来进行region proposal的选择和修正。

RPN

在这里插入图片描述
如上图所示,RPN网络的基本思路是将图片经过CNN进行特征的提取,对所有可能的候选框进行打分,选出confidence较高的框(前2000)传入下一层用于fast RCNN的目标检测,其中RPN和Fast RCNN两个网络共享一组共同的卷积层。
在这里插入图片描述
如上图所示,我们再最后的特征层上进行滑窗,这个窗口将输入卷积特征映射的n×n空间窗口作为输入,每个窗口都可以映射到原始的图片中, 其映射的原始图片的位置即为输入RPN的候选框。在文章中,使用的n为3,即每个候选框映射到特征层的窗口为3×3大小。最后我们对得到的特征输入两个1×1的卷积层,分别预测类别(2分类,)和坐标(xywh)。
anchor:anchor即为我们所提到的候选框,在滑动窗口的位置,同时预测多个候选框,候选框的中心点是相同的,只是有不同的尺度和长宽比。文章使用3个尺度和3个长宽比。
损失函数:RPN训练过程的正例是与gtbox的iou最大的anchor和与gtbox的iou>0.7,负例是与gtbox<0.3。与之前FastRCNN的损失函数类似,
在这里插入图片描述
在这里插入图片描述
Faster RCNN还是比较难理解的,原始的论文重点介绍的是RPN,具体和fastRCNN是怎么结合的文章也没有很好的说明,当时我看完也是云里雾里的,查了好多的资料,整个FasterRCNN,从算法到代码复现,我前前后后大概啃了一个半月,才算搞懂,这里我放几张图片,供大家结合论文理解。
在这里插入图片描述
图片来源,这个图比较清晰的展示了FasterRCNN的整个架构。
另外,了解了整个FasterRCNN的框架之后,其代码复现可以尝试着看一下,如果没有目标检测的基础,上来看FasterRCNN还是比较吃力的,建议先从单阶段的框架开始看起。这里也放一张代码的架构图供大家参考。
在这里插入图片描述
图片来自,这个图展示代码的实现流程。

MaskRCNN

由于MaskRCNN主要针对的是语义分割,所以本文主要介绍的是ROI Align.

RoI Align

主要是为了解决RoIPooling过程中的区域不匹配问题。RoIPooling的作用是根据预选框的位置坐标在特征图中将相应区域池化为固定尺寸的特征图,以便进行后续的分类和包围框回归操作。由于预选框的位置通常是由模型回归得到的,一般来讲是浮点数,而池化后的特征图要求尺寸固定。故ROI Pooling这一操作存在两次量化的过程。

  • 作用是根据预选框的位置坐标在特征图中将相应区域池化为固定尺寸的特征图,以便进行后续的分类和包围框回归操作。由于预选框的位置通常是由模型回归得到的,一般来讲是浮点数,而池化后的特征图要求尺寸固定。故ROI Pooling这一操作存在两次量化的过程。
  • 将量化后的边界区域平均分割成 k x k 个单元(bin),对每一个单元的边界进行量化。
    思想:取消量化操作,使用双线性内插的方法获得坐标为浮点数的像素点上的图像数值,从而将整个特征聚集过程转化为一个连续的操作。
    主要流程如下:
  • 遍历每一个候选区域,保持浮点数边界不做量化。
  • 将候选区域分割成k x k个单元,每个单元的边界也不做量化。
  • 在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操作。也就是在计算出坐标位置之后,用的不是位置原始的值,而是双线性插值之后的值。

猜你喜欢

转载自blog.csdn.net/Tianlock/article/details/86582793