Mask RCNN论文阅读

    科技2025-09-27  51

    RCNN的一个大缺点:由于每一个候选框都要独自经过CNN,这使得花费的时间非常多。 解决:共享卷积层,现在不是每一个候选框都当做输入进入CNN了,而是输入一张完整的图片,在第五个卷积层再得到每个候选框的特征 引入了单层SSP Net的网络层,叫做ROI Pooling,这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量, 而我们知道,conv、pooling、relu等操作都不需要固定size的输入,因此,在原始图片上执行这些操作后, 虽然输入图片size不同导致得到的feature map尺寸也不同,不能直接接到一个全连接层进行分类,但是可以加入这个神奇的ROI Pooling层, 对每个region都提取一个固定维度的特征表示,再通过正常的softmax进行类型识别。 SPP:Spatial Pyramid Pooling(空间金字塔池化) 它的特点有两个: 1.结合空间金字塔方法实现CNNs的对尺度输入。 一般CNN后接全连接层或者分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或者warp, 这些预处理会造成数据的丢失或几何的失真。SPP Net的第一个贡献就是将金字塔思想加入到CNN,实现了数据的多尺度输入。 2.只对原图提取一次卷积特征 在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入,这样是很低效的。 所以SPP Net根据这个缺点做了优化:只对原图进行一次卷积得到整张图的feature map, 然后找到每个候选框zaifeature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。 节省了大量的计算时间,比R-CNN有一百倍左右的提速。

    提下RPN(Region Proposal Network)(后面第9页PPT讲) Fast R-CNN存在的问题:存在瓶颈:选择性搜索,找出所有的候选框,这个也非常耗时。那我们能不能找出一个更加高效的方法来求出这些候选框呢? 解决:加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做。 具体做法: • 将RPN放在最后一个卷积层的后面 • RPN直接训练得到候选区域 RPN 网络的作用是输入一张图像,输出一批候选矩形区域(region proposal),同时输出的还有区域得分 Faster R-CNN的主要贡献是设计了提取候选区域的网络RPN,代替了费时的选择性搜索,使得检测速度大幅提高

    Mask R-CNN基本结构: 与Faster RCNN采用了相同的two-stage步骤:首先是找出RPN,然后对RPN找到的每个RoI进行分类、定位、并找到binary mask。 下面总结一下Mask RCNN的网络: backbone(骨干网络)ResNet-FPN,用于特征提取,另外,ResNet还可以是:ResNet-50,ResNet-101,ResNeXt-50,ResNeXt-101; 头部网络,包括边界框识别(分类和回归)+mask预测

    1、输入一张图片到一个预训练好的神经网络中(ResNet或FPN等)获得对应的feature map; 2、接着,对这个feature map中的每一点设定预定个的ROI,从而获得多个候选ROI; 3、接着,将这些候选的ROI送入RPN网络进行二值分类(前景或背景)和BB回归,过滤掉一部分候选的ROI; 4、接着,对这些剩下的ROI进行ROIAlign操作(即先将原图和feature map的pixel对应起来,然后将feature map和固定的feature对应起来); 5、最后,对这些ROI进行分类(N类别分类)、BB回归和MASK生成(在每一个ROI里面进行FCN操作)。 整个Mask R-CNN算法的思路很简单,就是在原始Faster-rcnn算法的基础上面增加了FCN来产生对应的MASK分支。 对于RPN前面的CNN网络,由VGG换成了ResNeXt-101(深度残差网络)。同时,对于ROI Pooling中存在的像素偏差问题, 提出了ROIAlign策略来解决。即Faster-rcnn + FCN,或者说是RPN + ROIAlign + Fast-rcnn + FCN。

    Faster-RCNN:https://www.jianshu.com/p/c8b9303188ab 这里就是前面提到的加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。做这样的任务的神经网络叫做Region Proposal Network(RPN)。 在上述图片下方 (1)在feature map使用滑动窗口的操作方式,以此anchor为中心,生成k个proposals。 (2)经过卷积,得到1 * 1 * 256的低维向量;接下来进行分支: ①Classification:得到1 * 1 * 18的feature vector,分别代表9个proposals的是/不是Object的概率; ②Regression:得到1 * 1 * 36的feature vector,分别代表9个proposals的(center_x,center_y,w,d)

    ROI Align : https://www.jianshu.com/p/28b0e09db539 RPN网络输出的region of interest(ROI)是相对于原图的,映射到feature map上有可能不在整数坐标上。 给出ROI pooling的一个例子来形象理解。(对应第一幅图)假设现在我们有一个8x8大小的feature map,我们要在这个feature map上得到ROI, 并且进行ROI pooling到2x2大小的输出。 ROI Pooling的具体做法: 1、先对ROI进行quantization操作(quantization:即对到相应的整数上 ) 2、进行pooling的bin划分 3、再对bin进行quantization操作 4、再对每个bin取max

    为了解决这个问题,ROI Align方法取消整数化操作,保留了小数,使用双线性插值的方法获得坐标为浮点数的像素点上的图像数值。但在实际操作中,ROI Align并不是简单地补充出候选区域边界上的坐标点,然后进行池化,而是重新进行设计 ROI Align的具体做法: 1、直接进行bin划分 2、在bin中sample一些点 3、计算每个点处的value(双线性差值) 4、每个bin有四个点,对这四个点进行取average

    ROI Align操作

    feature map:特征图谱 头部网络,包括边界框识别(分类和回归)+mask预测 从ResNet-504-th stage final feature上提取特征,则被记为ResNet-50-C4 (50表示测试的网络架构有50 depth) 这篇文章给出头部分的具体操作:https://www.jianshu.com/p/28b0e09db539

    FPN:(Feature Pyramid Network) :是一种精心设计的多尺度检测方法 详细讲解:https://zhuanlan.zhihu.com/p/37998710 切换到知乎讲解 从下到上其实就是简单的特征提取过程,和传统的没有区别 自上而下是从最高层开始进行上采样,这里的上采样直接使用的是最近邻上采样,而不是使用反卷积操作,一方面简单,另外一方面可以减少训练参数。 横向连接则是将上采样的结果和自底向上生成的相同大小的feature map进行融合。 在faster rcnn进行目标检测时,无论是rpn还是fast rcnn,roi 都作用在最后一层,这在大目标的检测上没有问题, 但是对于小目标检测时,由于小目标占据的像素区域本来就小,当进行卷积池化到最后一层, 特征图上对应的像素点就很少或者就没有了。所以,为了解决多尺度检测的问题,引入了FPN网络。

    指标含义:https://blog.csdn.net/hlpower/article/details/101285032 AP的含义及计算:https://www.jianshu.com/p/28b0e09db539 Multi-task Network Cascade(多任务网络级联) Fully Convolutional Instance Segmentation (全卷积实例分割) FPN (Feature Pyramid Network): multi-scale hierarchical convolutional features, good for detection 多尺度层次卷积特征,便于检测 AP是通过掩码IoU来估计得到 AP: averaged over IoU thresholds (超过IoU阈值的平均值) 目标分割掩码AP 可以看出效果好

    这是本人在之前的CV学习中做的PPT

    Processed: 0.010, SQL: 8