参考文章:链接在这里!


前言

Tip:Mask R-CNN是在Faster R-CNN的基础上进行了改进。(roi pooling 换为了roi align层)


一、Mask R-CNN结构

mask rcnn是一个实例分割框架,对faster rcnn进行改进,增加了一个分支用于分割。实例分割要找到目标并对其进行分割,是目标检测和语义分割的结合。

模型结构:



灰色部分:
Faster RCNN 结合 ResNet or FPN 的网络,黑色部分:新添加的并联 Mask层,泛化能力强。
网络结构:
Fater R-CNN with ResNet/ResNeXt:使用resnet-c4作为前面的卷积网络,将rpn生成的roi映射到C4的输出,并进行roi pooling,最后进行分叉预测三个目标。
faster rcnn with FPN。
作为特征提取器。底层检测的是低级特征(边缘和角等),较高层检测的是更高级的特征(汽车、人、天空等)。

二、强在哪里

1.与unet对比:


虽然 UNet 和 Mask RCNN 都是处理分割,但前者又称为 semantic segmentation,后者称为 instance segmentation。两者的区别可以用下面这张图体现。instance segmentation 由于需要单独分割每个个体,因此基本上所有针对 instance segmentation 的方法都需要先用一个候选框把物体找出来,之后再分割。

2.roi pooling 的局限


ROIPool用以解决将不同尺度的ROI提取成相同尺度的特征大小的问题。
ROIPool首先将候选框边界量化为整数点坐标值(800x800 (边界框)665/32=20.78–>20),然后将量化后的边界区域平均分割成 k x k 个单元(bin), 对每一个单元的边界进行量化(池化–20/7–>2),每个bin使用max pooling。

经过上述两次量化,此时的候选框已经和最开始回归出来的位置有一定的偏差,这个偏差会影响检测或者分割的准确度。

3.roi align:

ROI Align的思路:(小目标影响更大)
1.遍历每一个候选区域,保持浮点数边界不做量化。
2.将候选区域分割成k x k个单元,每个单元的边界也不做量化。
3.在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操作。

小贴士:固定位置是指在每一个矩形单元(bin)中按照固定规则确定的位置。比如,如果采样点数是1,那么就是这个单元的中心点。如果采样点数是4,那么就是把这个单元平均分割成四个小方块以后它们分别的中心点。这些采样点的坐标通常是浮点数,所以需要使用插值的方法得到它的像素值。

双线性内插(双线性插值):

三、改进

主要改进点:

  1. 基础网络的增强,ResNeXt-101+FPN的组合;
  2. 分割 loss 的改进,由原来的 FCIS 的 基于单像素softmax的多项式交叉熵变为了基于单像素sigmod二值交叉熵。softmax会产生FCIS的 ROI inside map与ROI outside map的竞争。二值交叉熵会使得每一类的 mask 不相互竞争,而不是和其他类别的 mask 比较 ;
  3. ROIAlign解决Misalignment 的问题,说白了就是对 feature map 的插值。直接的ROIPooling的那种量化操作会使得得到的mask与实际物体位置有一个微小偏移。

训练过程:
1)输入图像;
2)将整张图片输入CNN,进行特征提取;
3)用FPN生成建议窗口(proposals),每张图片生成N个建议窗口;
4)把建议窗口映射到CNN的最后一层卷积feature map上;
5)通过RoI Align层使每个RoI生成固定尺寸的feature map;
6)最后利用全连接分类,边框,mask进行回归。

Mask R-CNN论文解析相关推荐

  1. 全景分割:CVPR2019论文解析

    全景分割:CVPR2019论文解析 Panoptic Segmentation 论文链接: http://openaccess.thecvf.com/content_CVPR_2019/papers/ ...

  2. 面部表情视频中进行远程心率测量:ICCV2019论文解析

    面部表情视频中进行远程心率测量:ICCV2019论文解析 Remote Heart Rate Measurement from Highly Compressed Facial Videos: an ...

  3. 深度学习数据特征提取:ICCV2019论文解析

    深度学习数据特征提取:ICCV2019论文解析 Goal-Driven Sequential Data Abstraction 论文链接: http://openaccess.thecvf.com/c ...

  4. 摄像头定位:ICCV2019论文解析

    摄像头定位:ICCV2019论文解析 SANet: Scene Agnostic Network for Camera Localization 论文链接: http://openaccess.the ...

  5. CVPR2020论文解析:视频语义检索

    CVPR2020论文解析:视频语义检索 Fine-grained Video-Text Retrieval with Hierarchical Graph Reasoning 论文链接:https:/ ...

  6. CVPR2020论文解析:视频分类Video Classification

    CVPR2020论文解析:视频分类Video Classification Rethinking Zero-shot Video Classification: End-to-end Training ...

  7. CVPR2020论文解析:实例分割算法

    CVPR2020论文解析:实例分割算法 BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation 论文链接:https://arxiv ...

  8. MECT: Multi-Metadata Embedding based Cross-Transformer forChinese Named Entity Recognition论文解析

    <MECT: Multi-Metadata Embedding based Cross-Transformer forChinese Named Entity Recognition>的论 ...

  9. 机器人导航两篇顶级会议论文解析

    机器人导航两篇顶级会议论文解析 一.一种用于四旋翼无人机室内自主导航的卷积神经网络特征检测算法 标题:A Convolutional Neural Network Feature Detection ...

  10. 将视频插入视频:CVPR2019论文解析

    将视频插入视频:CVPR2019论文解析 Inserting Videos into Videos 论文链接: http://openaccess.thecvf.com/content_CVPR_20 ...

最新文章

  1. 详解 Python 如何将爬取到的数据分别存储到 txt、excel、mysql 中!
  2. AI发展这一年:不断衍生的技术丑闻与抵制声潮
  3. tomcat集群 (自带Cluster集群)
  4. Linux中main是如何执行的
  5. 计算机两万字符英语文献翻译,求一篇2万字符以上的工程类外文文献及翻译
  6. 修改oracle超空间大小,Oracle修改表空间大小详解
  7. Cesium屏幕坐标转世界坐标
  8. win7系统域服务器,win7安装域服务器
  9. Compile fails with 3.5 framework but succeeds with 4.0
  10. php open_basedir绕过,PHP绕过open_basedir列目录的研究
  11. 微信每天处理2.05亿通话 运营商只剩卖流量
  12. python对象模型_python 实现对象模型
  13. [益智]:怎么称才能用三次就找到球
  14. 中国企业数字银行行业市场供需与战略研究报告
  15. C语言程序设计教程(第三版)课后习题11.1
  16. 关于flink cdc 抽取oracle数据 oracle表名大小写的问题
  17. 五分钟理解原码补码反码和移码
  18. 资源 | 嵌入式资源汇总,拿走不谢
  19. ruby sinatra mysql_关于在 OpenShift 上部署的 Sinatra 使用 MySQL 的问题
  20. 数字录音机 汇编实验

热门文章

  1. 数据挖掘里面机器学习算法的讲解1
  2. 【常见问题汇总--持续更新】Keystone常见问题
  3. linux命令回退文件夹,Linux命令总结
  4. Tailwind 导致 antd 的 button icon svg 不居中的 bug
  5. 全球与中国防水轨迹球市场深度研究分析报告
  6. 查看gym中的内置游戏环境
  7. 简单的mysql左联查询实例
  8. python中的数据类型转换_Python 数据类型转换
  9. 构建安全的ftp服务器
  10. CPU 到底是怎么认识代码的?