Mask R-CNN演变之路
Outline
Frome RCNN to Mask R-CNN
- R-CNN
- Fast R-CNN
- Faster R-CNN
- FPN
- FPN+RPN+Fast R-CNN
- FPN+RPN+Fast R-CNN+Mask Prediction
Mask R-CNN
- ROI Align
Bilnear interpolation
ROI Pooling -> ROI Align - Loss Function
- Application
一、Sliding Windows detector
RCNN
RCNN是来解决滑动窗检测这种暴力算法的方法,提出了Selective Search,将颜色,纹理等相似的特征信息放在一个边界框中,减少了很多框,提升了效率。
RCNN Architecture
大致过程:
首先输入一张图片,经过Selective Rearch 进行选择性搜索,选出感兴趣的区域,经过ROI的回归校正,resize成为固定的尺寸大小,在经过CNN,生成Feature Map,再经过两个全连接层后进行,分类和回归。
Bounding Box Regression:对偏移的边界框进行校正。
Fast R-CNN
大致过程:
首先分别喂一张图片给CNN和Selective Rearch,经过CNN的处理,原图生成一个Feature Map,提取出图片的各种特征信息,经过Selective Search将图片中的类用BB框出来,,再根据这个ROI从Feature Map中切出来对应的特征区域,再经过ROI Pooling变成尺寸大小一样的区域输入到FC中,再经过两个全连接层后进行,分类和回归。
不难看出Fast RCNN与RCNN的区别就是:
Fast RCNN不是将ROI放入放入CNN中的,而是将一张图片喂给CNN中,从Feature Map中切出来对应的特征(语义)信息,这样做大大节省了时间。
ROI Pooling
Faster R-CNN
因为Fast RCNN仍然用Selective Search来提取ROI,费时,所以,Faster RCNN选用一个网络来选取ROI。
用RPN(Region Proposal Network)取代Selective Search。
大致过程:
将一张图片送入CNN,然后得到Feature Map。将Feature Map送入RPN生成ROI,将ROI从Feature Map中切出来,但是切出来的大小大小不一样,经过ROI Pooling后调整为大小一样的Feature Map,再经过两个全连接层后进行,分类和回归。
Faster RCNN每个点对应着9个anchor,就是做9次预测,9个边界框,选取最接近的一个最后的结果。
自己去拟合最match的BB
FPN(是一种思想)
Faster RCNN是一个单一对象目标检测。
最常用VGG网络,将2242243的原图,用77512的Feature Map,会损失很多小物体的位置信息,大物体还行。没用到其他层的Feature Map。
卷积层次越深,越抽象,分类效果越好,语义信息越强,但分辨率下降,不利于小物体,于是引入FPN,低层位置信息好,高层语义信息强。
FPN(特征金字塔网络)
优点:低层的位置信息加高层的语义信息。
自底向上,自上而下的传递信息。
上采样包括:双线性差值(无参数,速度快)和反卷积(耗时)。
ResNet + FPN
11:用来减少通道数
33:由于横向链接和上采样可能会导致混叠效应,所以要经过一个3*3的卷积
FPN,多尺度特征融合
FPN + RPN + Fast RCNN
大致过程:
将原图输入特征金字塔网络,生成多尺度特征映射,传入RPN,生成ROI,再根据多尺度特征映射来切出对应的特征,然后经过ROI Pooling调整大小,再经过两个全连接层后进行分类和回归。
感受野:ROI上的点映射回原图所对应的区域
通过上述公式来决定我们拿到xywh后具体拿到那个scale特征图来切ROI
FPN + RPN + Faster - RCNN + Mask Prediction
Mask RCNN只是在Faster RCNN的基础上加入了掩膜预测,就是将resize后的Feature Map传入
Mask Prediction branch:
他是对边界框进行预测,默认80个类
总结
- FPN是融合多个阶段的特征图,FPN的结果是得到了多个scale的特征图
- 然后把FPN用于
Loss Function
ROI Align
损失函数:
Mask Loss:用的是sigmoid,即预测某个点,它是那个类,就在80个类上的那个位置记1,并计算Loss,可以有效解决类间竞争问题,而softmax则会预测出一个类,另一个概率则会受影响,变小,此消彼长。
Mask RCNN既预测了类,也预测了Mask,性能大有提升。
- Mask RCNN是做实例分割的,比语义分割更进一步,边缘信息更好。
- 稍微改进就可以做人体的姿势预测,eg:将80个类改为人身体的部位信息。
以上为本人观看B站视频做的笔记,视频链接在:Mask RCNN