Mask R-CNN详解(图文并茂)

2023-05-16

Mask R-CNN

Mask R-CNN是一个实例分割(Instance segmentation)算法,主要是在目标检测的基础上再进行分割。Mask R-CNN算法主要是Faster R-CNN+FCN,更具体一点就是ResNeXt+RPN+RoI Align+Fast R-CNN+FCN,如下图所示。

Mask R-CNN

Mask R-CNN的创新点有:

1 .Backbone:ResNeXt-101+FPN 2. RoI Align替换RoI Pooling

Mask R-CNN算法步骤:

1.输入一张图片,进行数据预处理(尺寸,归一化等等)
2.将处理好的图片传入预训练的神经网络中(ResNet等,优秀的主干特征提取网络)获得相应的feature map。
3.通过feature map中的每一点设定ROI,获得多个ROI候选框
4.对这些多个ROI候选框送到RPN中进行二值分类(前景或后景)和BB回归(Bounding-box regression),过滤掉一部分候选的ROI。
5.对剩下的ROI进行ROI Align操作(即先将原图和feature map的pixel对应起来,然后将feature map和固定的feature对应起来)
6.对这些ROI进行分类(N类别分类),BB回归和Mask生成(在每一个ROI里面进行FCN操作)。

RoI Pooling和RoI Align有哪些不同?

ROI Align是在Mask R-CNN中提出的一种区域特征聚集方式,很好地解决了ROI Pooling操作中两次量化造成的区域不匹配问题(下面会提到什么是量化),实验显示将ROI Align替换ROI Pooling可以提升检测模型的准确性。
在这里插入图片描述
RoI Pooling 的作用是根据预选框的位置坐标在特征图中将相应区域池化为固定尺寸的特征图,以便进行后续的分类和包围框回归操作。由于预选框的位置通常是由模型回归得到的,一般来讲是浮点数,而池化后的特征图要求尺寸固定。故RoI Pooling这一操作存在两次量化的过程,上图为ROI操作。
· 将候选框边界量化为整数点坐标值。
· 将量化后的边界区域平均分割成 𝑘×𝑘 个单元(bin),对每一个单元的边界进行量化
事实上,经过上述两次量化,此时的候选框已经和最开始回归出来的位置有一定的偏差,这个偏差会影响检测或者分割的准确度。在论文里,作者把它总结为“不匹配问题(misalignment)”。
下面我们用直观的例子具体分析一下上述区域不匹配问题。如下图所示,这是一个Faster-RCNN检测框架。输入一张 800×800 的图片,图片上有一个 665×665 的包围框(框着一只狗)。图片经过主干网络提取特征后,特征图缩放步长(stride)为32。因此,图像和包围框的边长都是输入时的1/32。800正好可以被32整除变为25。但665除以32以后得到20.78,带有小数,于是RoI Pooling 直接将它量化成20。接下来需要把框内的特征池化 7×7 的大小,因此将上述包围框平均分割成 7×7 个矩形区域。显然,每个矩形区域的边长为2.86,又含有小数。于是ROI Pooling 再次把它量化到2。经过这两次量化,候选区域已经出现了较明显的偏差(如图中绿色部分所示)。更重要的是,该层特征图上0.1个像素的偏差,缩放到原图就是3.2个像素。那么0.8的偏差,在原图上就是接近30个像素点的差别,这一差别不容小觑。
在这里插入图片描述
为了解决RoI Pooling的上述缺点,作者提出了RoI Align这一改进的方法(如下图)。
在这里插入图片描述
RoI Align的思路很简单:取消量化操作,使用双线性内插的方法获得坐标为浮点数的像素点上的图像数值,从而将整个特征聚集过程转化为一个连续的操作。值得注意的是,在具体的算法操作上,RoI Align并不是简单地补充出候选区域边界上的坐标点,然后将这些坐标点进行池化,而是重新设计了一套比较优雅的流程,如下图所示:
(1)遍历每一个候选区域,保持浮点数边界不做量化。
(2)将候选区域分割成 𝑘×𝑘 个单元,每个单元的边界也不做量化。
(3)在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操作.
在这里插入图片描述
这里对上述步骤的第三点作一些说明:这个固定位置是指在每一个矩形单元(bin)中按照固定规则确定的位置。比如,如果采样点数是1,那么就是这个单元的中心点。如果采样点数是4,那么就是把这个单元平均分割成四个小方块以后它们分别的中心点。显然这些采样点的坐标通常是浮点数,所以需要使用插值的方法得到它的像素值。在相关实验中,作者发现将采样点设为4会获得最佳性能,甚至直接设为1在性能上也相差无几。事实上,RoI Align 在遍历取样点的数量上没有RoI Pooling那么多,但却可以获得更好的性能,这主要归功于解决了mis alignment的问题。值得一提的是,我在实验时发现,RoI Align在VOC 2007数据集上的提升效果并不如在COCO上明显。经过分析,造成这种区别的原因是COCO上小目标的数量更多,而小目标受mis alignment问题的影响更大(比如,同样是0.5个像素点的偏差,对于较大的目标而言显得微不足道,但是对于小目标,误差的影响就要高很多)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mask R-CNN详解(图文并茂) 的相关文章

随机推荐

  • 武器装备自动测试(ATE)系统设计要点

    1 设备组成 ETest RT系统主要由硬件部分与软件部分组成 硬件部分由上位机和实时下位机组成 xff0c 上位机采用商用便携计算机 xff0c 下位机采用PXI测控计算机 上位机安装Windows操作系统 xff0c 运行设备资源管理
  • 导弹制导控制系统半实物仿真系统的设计与实现

    设备组成 Etest CPS系统主要由硬件部分与软件部分组成 硬件部分由PCI机箱 PCI控制器以及各种PCI接口板卡组成 软件部分由测试设计软件模块 测试执行服务软件模块 测试执行客户端软件模块 设备资源管理软件模块等主要软件模块以及曲线
  • 软件功能三方测试报告

    凯云软件测评中心隶属于凯云联创 xff08 北京 xff09 科技有限公司 xff08 简称 xff1a 凯云科技 xff09 测评中心于2016年成立 xff0c 2018年1月通过中国合格评定国家认可委员会CNAS和国防科技工业实验室认
  • 兵器软件通用测试开发工具

  • 兵器软件通用测试开发方法-ETest_DEV

  • 兵器软件通用测试开发环境-ETest_DEV

  • WPS添加下划线,文字尾部不显示下划线问题解决(一个So stupid问题)

    记录一个傻瓜操作 嗯 更想删WPS了 一 问题如下 首先如图 选择wps中的下划线操作 理想中他应该是这样的 选中的内容应该在下划线中间 是吧 默认正常操作就应该这样 实际上它出来的效果是这样 文字后面选中的下划线消失了 软件自身的设置就没
  • 【记录】MPU6050原理快速入门(附手册)

    目录 MPU6050 MPU6050主要参数 MPU6050通信接口 MPU6050电路 向MPU6050的一个寄存器写一个字节的数据 从MPU6050的一个寄存器读一个字节的数据 MPU6050 MPU6050是一个运动处理传感器 xff
  • 【STM32】HAL库三步实现串口重定向(代码复制可用)

    目录 第一步 xff1a 添加标准输入输出头文件 第二步 xff1a 重写fputc 函数 第三步 xff1a 重写fgetc 函数 代码汇总 xff08 直接复制使用 xff09 需要直接来复制 在PC上进行C语言程序开发时 xff0c
  • c# Post请求实例

    server span class token comment 服务器 span span class token keyword using span span class token namespace System span span
  • STM32 串口通讯及实现

    目录 一 串口通讯概述1 广义的串口2 狭义的串口3 串口数据定义4 串口通讯应用 二 STM32串口工程标准库实现1 串口的初始化2 串口数据发送 3 串口的数据接收 一 串口通讯概述 1 广义的串口 广义的串口是针对并口来说的 串口是指
  • STM32串口接受和发送数据的程序(USART/UART)

    本实验中 STM32通过串口1和串口2上位机对话 xff0c STM32通过串口1在收到上位机发过来的字符串 以回车换行结束 后 xff0c 通过串口2原原本本的返回给上位机 串口 xff08 USART UART xff09 通信配置详解
  • CMakeLists.txt中第三方库编写思考

    编写ROS时经常需要自己构建第三方库或者引用别人的第三方库 xff0c 对于第三方库的调用主要有以下两种方式 xff1a 1 引用现成的第三方库 xff1a find package PCL 1 7 REQUIRED xff1a 添加依赖
  • vscode运行卡顿解决方案

    卡顿原因 主要是rg exe扩展程序占用CPU过高 xff0c 那么只需要禁用它即可 解决方案 打开 vs code xff0c 文件 gt 首选项 gt 设置 gt 搜索 search followSymlinks 取消勾选即可
  • 优象光流模块助力无人机之使用效果分享

    优象光流模块助力无人机之使用效果分享 我是一名无人机爱好者 xff0c 一直以来对无人机就有一种慕名的喜好 xff0c 只要有时间就会与队友们在实验室研究探讨 当然 xff0c 刚开始玩无人机悬停时会遇到种种问题 xff0c 例如飞机一开始
  • 如何使用光流芯片U30实现四轴无人机悬停

    如何使用光流芯片U30实现四轴无人机悬停 在没有GPS的环境下 xff0c 比如室内环境 xff0c 四轴无人机在水平方向会不断漂移 如何让无人机实现稳定的自主悬停呢 xff1f 光流芯片可以感知无人机在水平方向的运动信息 xff08 速度
  • (CMake) 库的生成和链接

    文章目录 前言前置准备当前项目的库静态库动态库 外部项目的库静态库动态库 库的总结总code函数add subdirectory 添加源文件目录add library 指定的源文件生成库target link libraries 为目标链接
  • vscode配置C++编译环境(windows环境下)

    vscode配置C 43 43 编译环境 xff08 windows环境下 xff09 记录下自己在vscode中配置C 43 43 编译环境的过程 xff0c 仅供参考 一 VSCODE MinGW编译器 cMake跨平台编译工具下载 1
  • STL标准库详解

    STL标准库 主要由容器 迭代器 算法组成 STL主要头文件 lt algorithm gt lt deque gt lt functional gt lt iterator gt lt vector gt lt list gt lt ma
  • Mask R-CNN详解(图文并茂)

    Mask R CNN Mask R CNN是一个实例分割 xff08 Instance segmentation xff09 算法 xff0c 主要是在目标检测的基础上再进行分割 Mask R CNN算法主要是Faster R CNN 43