论文阅读笔记 | 目标检测算法——Mask R-CNN算法

简介: 论文阅读笔记 | 目标检测算法——Mask R-CNN算法

paper:Mask R-CNN

作者:Kaiming He

image.png


摘要:


其实,这篇论文中,作者是设计用来解决对象实例分割问题的,所以文章的名字可能起得不算很好,请多包含。但是在Mask R-CNN算法中,可以有效的检测出图像中的对象,同时为每个实例生成高质量的分割掩码。


Mask R-CNN是在Faster R-CNN基础上进行拓展,通过增加一个预测对象掩码的分支,与现有的边界框回归分支并行。其甚至可以处理实例分割任务,目标检测任务,人体关节检测任务。


1. Introduction


作者在这项工作中的目标是为实例分割开发一个相对可行的框架。实例分割任务需要正确检测图像中的所有对象,同时还需要精确分割每个实例。因此,实例分割任务结合了目标检测与语义分割两大任务。前者是对单个对象进行分类,并使用边界框对每个对象进行定位。后者是将每个像素分类到一组固定的类别中,而不区分对象实例,也就是相同类别的内容用同一种像素点表示即可。


Mask R-CNN结果如图所示:

image.png

Mask R-CNN是Faster R-CNN的扩展版本,添加一个分支用于对每个感兴趣区域(RoI)进行预测分割掩码,与用于分类和包围盒回归的现有分支并行。这个mask分支由全卷积网络组成,以逐像素点(pixel-to-pixel)的方式对每一个感兴趣区域RoI预测分割掩码。


以上是一个比较直观的结构展示,正确构建掩码分支对于良好的结果至关重要。最重要的是,Faster RCNN不是为网络输入和输出之间的pixel-to-pixel对齐而设计的。这在用于处理实例的实际核心操作RoIPool时,如何执行特征提取的粗略空间量化中最为明显。为了修复错位,作者提出了一个简单的无量化层,称为RoIAlign,它忠实地保留了精确的空间位置。


其次,作者发现将掩码和类预测解耦至关重要。为此,作者独立地为每个类预测一个二进制掩码,类之间没有竞争,并依靠网络的RoI分类分支来预测类别。相比之下,FCNs通常执行每像素进行多类别分类,将分割和分类结合起来,基于实验这对于实例分割效果不佳。


2. Related Work


在RCNN有效性的驱动下,许多实例分割方法都是基于分割建议的(segment proposals)。早期的方法采用自下而上的分割。DeepMask和一些后续研究提出细分候选(segment candidates),然后由Fast R-CNN进行分类。在这些方法中,分割先于识别,这是缓慢且不太准确的。类似地,还有人提出了一种复杂的多级级联,该级联从包围盒候选框中预测分割候选框,然后进行分类。而在Mask R-CNN中,则是基于并行掩码预测与类标签预测,更简单且更灵活。


还有学者将某研究成果中的分割候选系统与目标检测系统结合起来,实现全卷积实例分割“fully convolutional instance segmentation” (FCIS)。其想法是由全卷积网络对一组位置敏感进行预测并输出一组channels,这些channels同时处理对象类、回归框和掩码,使系统速度更快。但是FCIS在重叠实例上表现出系统误差,并产生虚假边缘,表明它受到分割实例的根本困难的挑战。


实例分割的另一系列解决方案是由语义分割的成功驱动的。从每像素分类结果开始,这些方法试图将同一类别的像素切割成不同的实例。与这些方法的分段优先策略(segmentation-first strategy)相反,Mask R-CNN基于实例优先策略(instance-first strategy)。


3. Mask R-CNN


Mask R-CNN在概念上很简单:Faster R-CNN对每个候选对象都有两个输出,一个类标签和一个边界框偏移量,对此作者添加了第三个分支来输出对象掩码。但是额外的掩码输出不同于实例对象类标签和回归框输出,需要提取对象的更精细的空间布局。对于Faster R-CNN,其主要的缺失部分是pixel-to-pixel对齐。


3.1 Faster R-CNN

首先回顾一些Faster R-CNN结构。其包含两个步骤:

1)第一阶段称为区域建议网络(Region Proposal Network,RPN),提出候选对象边界框。

2)第二阶段本质上是Fast R-CNN,使用RoIPool从每个候选框中提取特征,并执行分类和包围盒回归。


两个阶段使用的特征可以共享,以便更快地推断。


详细的Faster R-CNN结构介绍,可以参考我另一篇笔记:目标检测算法——Faster R-CNN


3.2 Mask R-CNN

Mask R-CNN采用相同的两阶段程序:第一阶段相同(即RPN)。在第二阶段,在预测类和边界框偏移的同时,Mask R-CNN还为每个RoI输出一个二进制掩码。这与其他系统中分类依赖于掩码预测形成对比。Mask R-CNN遵循着Faster R-CNN的思想,并行应用包围盒分类和回归,在很大程度上简化了原始的 R-CNN多级处理流程。

image.png


3.3 Mask Representation

遮罩对输入对象的空间布局进行编码。因此,与类别标签或边界框偏移不可避免地被全连接层折叠成短输出向量不同,提取掩码的空间结构可以自然地通过卷积提供的pixel-to-pixel的对应来解决。


具体来说,作者对每一个RoI使用FCN来预测一个分辨率大小为m × m m \times mm×m的掩码。这允许掩码分支中的每个层保持显式的m × m m × mm×m对象空间布局,而不会将其折叠为缺少空间维度的矢量表示。不像以前的方法使用全连接层的掩码预测,Mask R-CNN使用全卷积表示需要更少的参数,更准确的实验证明。


对于处理后得到的RoI来说,是一个尺度比较小的特征图。而pixel-to-pixel的方式要求RoI特征能够很好的对齐,以清晰地保持每像素的明确空间对应。这促使作者开发了以下在掩码预测中起关键作用的RoIAlign层。


3.4 RoIAlign

在Faster RCNN中,RoIPool是将提取出的RoI进行统一池化为7x7尺度大小特征图的标准操作。RoIPool首先将一个浮点数RoI量化为特征图的离散粒度,然后将这个量化的RoI细分为空间仓,这些空间仓本身被量化,最后聚合每个仓覆盖的特征值(通常通过max pooling)。简单的说,RoIPool就是将w × h w \times hw×h的特征图,统一标准地池化为7x7大小的结果。这些量化在RoI和提取的特征之间引入了不对准。虽然这可能不会影响分类,分类对于小的转换是稳健的,但是它对预测像素精确的掩码有很大的负面影响。


为了解决这个问题,作者提出了一个RoIAlign层,它消除了RoIPool的苛刻量化,将提取的特征与输入适当对齐。作者避免对RoI边界或面元进行任何量化(即使用x/16而不是[x/16]),然后使用双线性插值计算每个RoI bin中四个规则采样位置的输入特征的精确值,并汇总结果(使用最大值或平均值)。


对于RPN网络输出的RoI,一般是会在特征图上进行了些许偏移如实现框所示,这个偏移的边界框同样会包含多个特征点。我的理解是,一般在对原目标映射在特征图上时会出现浮点数坐标,如图所示:

image.png

(图片来源于https://blog.csdn.net/gusui7202/article/details/84799535


由上可以看到,由于偏移后的边界框与RoI区域,一般都是随机性的,所以划分为kxk个bin的时候不一定能够整除,如图所示:

image.png

(图片来源于https://blog.csdn.net/gusui7202/article/details/84799535


对于量化严重的RoIpool可能会进行如下所示的操作:

image.png

这样就会出现量化误差,RoIAlign所做的其实很简单,只是保持原有的分区不变,而对于浮点坐标只是进行双线性插值进行处理而已。使得可以对分区进行均匀区分。而在池化时,提取出每个区域的中心点,使用双线性插值就可以得到此时区域的值。9个Bin格,9个中心点,9个特征值。


而作者注意到,只要不执行量化,结果对精确的采样位置或采样多少点不敏感。所以,也就是,不需要对每个区域的中心值进行采样,其他位置也可以,关键就是要不进行量化操作即可。在作者原文中,就使用双线性插值计算每个RoI bin中四个规则采样位置的输入特征的精确值,并汇总结果(使用最大值或平均值),如图所示:

image.png

RoIAlign带来了很大的改进,这证明了对齐的关键作用。


3.5 Network Architecture

Mask R-CNN的结构为:

1)卷积主干架构用于整个图像的特征提取。

2)边界框识别(分类与回归)和掩码预测的网络头,分别应用于每个RoI。


结构如图所示:

image.png


3.6 Implementation Details

按照现有的Fast/Faster R-CNN工作设置超参数,虽然是为了目标检测而设置,但是对于实例分割中同样有用。


3.6.1 Training

image.png

3.6.2 Inference

在推断时,候选框对于C4主干网是300,而对于FPN是1000。然后在这些候选框上运行box预测分支(包含分类与回归),然后是非最大抑制处理。然后将掩码分支应用于最高得分的100个检测框(这不同于训练中使用的并行计算),掩码分支可以预测每个RoI的k kk个掩码,但是这里只使用第k kk个掩码,其中k kk是分类分支预测的类。然后将m×m浮点数掩码输出调整到RoI大小,并在0.5的阈值下进行二进制化。


4. Result


  • 实例分割效果:

image.png

  • 目标检测效果:

image.png


总结:


在Faster R-CNN的基础上进行了改进使得可以处理实例分割任务。提出了RoIAlign来替换掉RoIPool,使得处理检测任务性能更好。


所以,个人认为,Mask R-CNN作为一种新的目标检测算法,其实只是改进了RoIPool,进一步强调了对其的重要性。


目录
相关文章
|
3天前
|
算法
计算机算法设计与分析(1-6章 复习笔记)
计算机算法设计与分析(1-6章 复习笔记)
|
3天前
|
算法 Java 索引
12.12_黑马数据结构与算法笔记Java
12.12_黑马数据结构与算法笔记Java
12 1
|
4天前
|
人工智能 算法
计算机算法设计与分析 第3章 动态规划 (笔记)
计算机算法设计与分析 第3章 动态规划 (笔记)
|
4天前
|
算法 C++
计算机算法设计与分析 第2章 递归与分治策略 (笔记)
计算机算法设计与分析 第2章 递归与分治策略 (笔记)
|
3天前
|
算法 JavaScript 决策智能
基于禁忌搜索算法的TSP路径规划matlab仿真
**摘要:** 使用禁忌搜索算法解决旅行商问题(TSP),在MATLAB2022a中实现路径规划,显示优化曲线与路线图。TSP寻找最短城市访问路径,算法通过避免局部最优,利用禁忌列表不断调整顺序。关键步骤包括初始路径选择、邻域搜索、解评估、选择及禁忌列表更新。过程示意图展示搜索效果。
|
3天前
|
机器学习/深度学习 算法
基于BP神经网络和小波变换特征提取的烟草香型分类算法matlab仿真,分为浓香型,清香型和中间香型
```markdown 探索烟草香型分类:使用Matlab2022a中的BP神经网络结合小波变换。小波分析揭示香气成分的局部特征,降低维度,PCA等用于特征选择。BP网络随后处理这些特征,以区分浓香、清香和中间香型。 ```
|
4天前
|
机器学习/深度学习 算法
m基于PSO-GRU粒子群优化长门控循环单元网络的电力负荷数据预测算法matlab仿真
摘要: 在MATLAB 2022a中,对比了电力负荷预测算法优化前后的效果。优化前为"Ttttttt111222",优化后为"Tttttttt333444",明显改进体现为"Tttttttttt5555"。该算法结合了粒子群优化(PSO)和长门控循环单元(GRU)网络,利用PSO优化GRU的超参数,提升预测准确性和稳定性。PSO模仿鸟群行为寻找最优解,而GRU通过更新门和重置门处理长期依赖问题。核心MATLAB程序展示了训练和预测过程,包括使用'adam'优化器和超参数调整,最终评估并保存预测结果。
12 0
|
5天前
|
算法 安全
基于龙格库塔算法的SIR病毒扩散预测matlab仿真
该程序使用龙格库塔算法实现SIR模型预测病毒扩散,输出易感、感染和康复人群曲线。在MATLAB2022a中运行显示预测结果。核心代码设置时间区间、参数,并定义微分方程组,通过Runge-Kutta方法求解。SIR模型描述三类人群动态变化,常微分方程组刻画相互转化。模型用于预测疫情趋势,支持公共卫生决策,但也存在局限性,如忽略空间结构和人口异质性。
|
5天前
|
机器学习/深度学习 监控 算法
基于yolov2深度学习网络的昆虫检测算法matlab仿真,并输出昆虫数量和大小判决
YOLOv2算法应用于昆虫检测,提供实时高效的方法识别和定位图像中的昆虫,提升检测精度。核心是统一检测网络,预测边界框和类别概率。通过预测框尺寸估算昆虫大小,适用于农业监控、生态研究等领域。在matlab2022A上运行,经过关键升级,如采用更优网络结构和损失函数,保证速度与精度。持续优化可增强对不同昆虫的检测能力。![image.png](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_e760ff6682a3420cb4e24d1e48b10a2e.png)
|
6天前
|
算法 调度 决策智能
基于自适应遗传算法的车间调度matlab仿真,可以任意调整工件数和机器数,输出甘特图
这是一个使用MATLAB2022a实现的自适应遗传算法解决车间调度问题的程序,能调整工件数和机器数,输出甘特图和适应度收敛曲线。程序通过编码初始化、适应度函数、遗传操作(选择、交叉、变异)及自适应机制进行优化,目标如最小化完工时间。算法在迭代过程中动态调整参数,以提升搜索效率和全局优化。

热门文章

最新文章