Mask R-CNN学习笔记

1 概览

Mask R-CNN学习笔记_第1张图片

Mask R-CNN学习笔记_第2张图片

Mask R-CNN学习笔记_第3张图片

Mask R-CNN学习笔记_第4张图片

来源:https://www.bilibili.com/video/BV1qA411w7Zg?p=2&share_source=copy_web

参考:一文读懂Faster RCNN - 知乎 (zhihu.com)

参考:令人拍案称奇的Mask RCNN - 知乎 (zhihu.com)

2 CNN BackBone

​ · 作用:对输入的图像进行初步的特征提取,最终将输出5个不同尺度的特征图

​ · 采用架构:ResNet + FPN

​ · Why:

​ ① ResNet的残差结构使得训练大参数深层次的Mask R-CNN成为可能

​ ② FPN利用了卷积的固有特征金字塔,融合了低层和高层的特征(因为特征图大小高层 > 低层,则高层检测小物体,低层检测大物体),构件在不同尺度上都有强语义的模型

Mask R-CNN学习笔记_第5张图片

3 RPN

​ · 作用:为已经经过卷积层的特征图像生成大小不同的多个锚框。此处是在特征图生成锚框,生成之后再映射回原图进行采样。这种方式相比于直接从原图像生成锚框的方法,减少了锚框数量,加快了推理速度。

​ · 采用架构:沿用了Fast R-CNN采用了RPN结构进行锚框生成

​ · What:

​ 阶段一:利用3*3的卷积核遍历5个不同尺度的特征图,为特征图上每一个像素点生成3种大小不同的以该像素点为中心的锚框(1:1,1:2,2:1)作为图像初始的检测框。锚框的长宽通常按照一定的规则进行生成:

image-20220306173640732

​ 举个例子,原图像800×600,进行16倍下采样得到58×30特征图,假设特征图以每个像素为中心生成9个锚框,则:

Mask R-CNN学习笔记_第6张图片

​ 阶段二:对于候选的锚框进行前景背景二分类候选框回归。在分类分支中,对每个特征图进行1*1卷积(生成特征大小为W×H×k×2,k为每个像素点生成的锚框数量),再经过softmax对每个锚框进行前景背景二分类(2k);在回归分支中,对于每个锚框一般采用四维向量[x,y,w,h]表示(中心坐标为(x,y),宽为w,高为h),每个锚框将向真实的目标框进行靠拢(经过平移与缩放),从而生成真实的边框(4k)。

​ 阶段三:经过非极大抑制筛选出合适的锚框得到proposal,作为下一阶段的输入

Mask R-CNN学习笔记_第7张图片

4 通过proposal切割出RoI

Mask R-CNN学习笔记_第8张图片

5 Fast R-CNN中的RoI Pooling

​ · Why:通常网络训练好后的输入值为固定值,如果输入的图像大小不固定,则会遇到麻烦。在RPN中,由于生成的锚框大小也是不固定的,则也会遇到同样的问题。RoI Pooling的诞生则为了解决该问题。

​ · How:

Mask R-CNN学习笔记_第9张图片

6 Mask R-CNN中的RoI Align

​ · RoI Pooling存在的问题:特征图与原始图像是不对准的,所以会影响检测精度。这种情况出现在:当一个RoI的四个顶点是小数时,通常需要舍弃掉小数点,带来了第一处精度损失;resize的时候,如果希望缩小一倍,假设W=3,3/2=1.5,无法整除。通常做法是分为一部分2以及一部分1(如下图),带来第二处精度损失

Mask R-CNN学习笔记_第10张图片

​ · RoI Align的做法:双向线性插值,解决了精度丢失的问题

Mask R-CNN学习笔记_第11张图片

​ ① 将锚框分割为四块

​ ② 每一块中取四个点(权衡精度与效率)

​ ③ 对四个点进行双向线性插值,如下:

Mask R-CNN学习笔记_第12张图片

​ ④ 经过上一个步骤后,每个块中的四个点都有对应的数值,此时再继续在四个点中取max,作为最终的结果

7 预测分支

7.1 Class与Box分支

Mask R-CNN学习笔记_第13张图片

7.2Mask分支

Mask R-CNN学习笔记_第14张图片

你可能感兴趣的:(cnn,深度学习,计算机视觉,人工智能)