1、MaskRCNN解读2024/2/27周二Faster RCNN2FasterR-CNN可以简单地看做“区域生成网络RPNs+FastR-CNN”的系统,用区域生成网络代替FastR-CNN中的SelectiveSearch方法。FasterR-CNN这篇论文着重解决了这个系统中的三个问题:1.如何设计设计区域生成网络;2.如何训练训练区域生成网络;3.如何让区域生成网络和FastRCNN网络共享特共享特征提取网络。征提取网络。在整个FasterR-CNN算法中,有三种尺度:1.原图尺度:原始输入的大小。不受任何限制,不影响性能。2.归一化尺度:输入特征提取网络的大小,在测试时设置,源码中op
2、ts.test_scale=600。anchor在这个尺度上设定。这个参数和anchor的相对大小决定了想要检测的目标范围。3.网络输入尺度:输入特征检测网络的大小,在训练时设置,源码中为224*224Faster RCNN31:向CNN网络【如VGG-16】输入任意大小图片:2:经过CNN网络前向传播至最后共享的卷积层,一方面得到供RPN网络输入的特征图,另一方面继续前向传播至特有卷积层,产生更高维特征图;3:供RPN网络输入的特征图经过RPN网络得到区域建议和区域得分,并对区域得分采用非极大值抑制【阈值为0.7】,输出其Top-N【文中为300】得分的区域建议给RoI池化层;4:第2步得到
3、的高维特征图和第3步输出的区域建议同时输入RoI池化层,提取对应区域建议的特征;5:第4步得到的区域建议特征通过全连接层后,输出该区域的分类得分以及回归后的bounding-box。RPN4RPN的核心思想是使用CNN卷积神经网络直接产生RegionProposal,使用的方法本质上就是滑动窗口(只需在最后的卷积层上滑动一遍),因为anchor机制和边框回归可以得到多尺度多长宽比的RegionProposal。RPN网络也是全卷积网络(FCN,fully-convolutionalnetwork),可以针对生成检测建议框的任务端到端地训练,能够同时预测出object的边界和分数。只是在CNN上
4、额外增加了2个卷积层(全卷积层cls和reg)Anchors5RPN:训练样本:训练样本考察训练集中的每张图像:a.对每个标定的真值候选区域,与其重叠比例最大的anchor记为前景样本b.对a)剩余的anchor,如果其与某个标定重叠比例大于0.7,记为前景样本;如果其与任意一个标定的重叠比例都小于0.3,记为背景样本c.对a),b)剩余的anchor,弃去不用。d.跨越图像边界的anchor弃去不用代价函数代价函数同时最小化两种代价:a.分类误差b.前景样本的窗口位置偏差Roi max pooling6roi_pool层将每个候选区域均匀分成MN块,对每块进行maxpooling。将特征图上
5、大小不一的候选区域转变为大小统一的数据,送入下一层。对于roimaxpooling,一个输入节点可能和多个输出节点相连。Mask RCNN7其中黑色部分为原来的Faster-RCNN,红色部分为在Faster网络上的修改:1)将)将RoiPooling层替换成了层替换成了RoiAlign;2)添加并列的)添加并列的FCN层(层(mask层);层);Mask-RCNN的几个特点1)在边框识别的基础上添加分支网络,用于)在边框识别的基础上添加分支网络,用于语义语义Mask识别;识别;2)训练简单,相对于)训练简单,相对于Faster仅增加一个小的仅增加一个小的Overhead,可,可以跑到以跑到5
6、FPS;3)可以方便的扩展到其他任务,比如人的姿态估计)可以方便的扩展到其他任务,比如人的姿态估计等;等;4)不借助)不借助Trick,在每个任务上,效果优于目前所有的,在每个任务上,效果优于目前所有的single-modelentries;Mask RCNN8Mask-RCNN技术要点技术要点通过ResNeXt-101+FPN用作特征提取网络,达到state-of-the-art的效果。采用ROIAlign替代RoiPooling(改进池化操作)。引入了一个插值过程,先通过双线性插值到14*14,再pooling到7*7,很大程度上解决了仅通过Pooling直接采样带来的Misalignment对齐问题。虽然Misalignment在分类问题上影响并不大,但在Pixel级别的Mask上会存在较大误差。结果对比能够看到ROIAlign带来较大的改进,Stride越大改进越明显。每个ROIAlign对应K*m2维度的输出。K对应类别个数,即输出对应类别个数,即输出K个个mask,m对应池化分辨率。Loss函数定义:Lmask(Cls_k)=Sigmoid(Cls_k),平均二值交叉熵,平均二值交叉熵(averagebinarycross-entropy)Loss,通过逐像素的,通过逐像素的Sigmoid计算得到。计算得到。双线性插值9THANK THANK YOUYOU