为了以后的学习方便,把几篇计算机视觉的论文放上来,仅为自己的学习方便。期间有参考了很多博客和文献,但是写的并不是很详细。
这篇文章是第一次阅读实力分割方向文献,上来就看了何凯明大神的作品,只能说一脸懵逼,先放上来自己最初的理解。当然其中参考了很多大佬的现有的理解。
原文地址:Mask R-CNN
研究问题的背景
语义分割是指在没有区分实例的情况下对每个像素进行分类,实例分割既是语义分割,又是一种检测的形式。实例分割是一个综合问题,融合了目标检测,图像分割与图像分类。在本文之前,已经有很多学者提出了很多算法,归结为以FCN为代表的传统图像分割算法。由于传统的图像分割网络采用交叉熵,结合图像标签进行端到端训练。对于在标签中的一个像素点,语义类别是固定的,一个像素点只能对应一种固定的语义,由于卷积的平移不变性,一个像素点只能对应一种语义,因此没有办法达到实例分割的效果。而FCIS算法在重叠的目标识别方面,会出现重叠的伪掩模的错误。这些说明了实例分割的困难性,也亟待新的算法的解决。
何凯明等人在Faster R-CNN的基础上,拓展出了Mask R-CNN。Mask R-CNN的方法通过在Faster R-CNN上添加一个与现有边框识别分支并行、用于预测目标掩模的分支来做到实例分割、边框目标检测以及人体关键点检测。Mask R-CNN训练简单,相对于Faster R-CNN只增加了很小的开销,运行速度在5fps。此外,Mask R-CNN很容易推广到其他任务,例如,允许在同一个框架中估计人的姿势。该方法在COCO系列挑战赛的全部三个比赛项目中都取得了最佳成绩,包括实例分割、边框目标检测以及人体关键点检测,获得了2017的冠军。
论文的研究内容
先来概述一下 Mask-RCNN 的几个特点:
⑴ 在边框识别的基础上添加分支网络,用于掩模识别;
⑵ 训练简单,相对于Faster R-CNN仅增加了一个小的开销,可以跑到5FPS;
⑶ 可以方便的扩展到其他任务,比如人的姿态估计等;
⑷ 不借助技巧,实例分割、边框目标检测以及人体关键点检测任务上,效果优于目前所有先前最先进的单一模型的结果;
A、ROI上的做法
Mask R-CNN在Faster R-CNN网络结构上,将 RoI Pooling 层替换成了 RoIAlign,该方法消除了对RoIPool的粗糙量化,并将提取的特征与输入精准的对齐。具体的对比如表1所示:
表1 不同RoI层下的掩模结果
从表中可以看出,RoIAlign相对于RoIPool将AP提高了约3个点,并且效果也明显比RoIWarp好了近3个点。(原因在本文中说到是因为RoIPool中进行了一些量化,这些量化操作使RoI与提取的特征错位,虽不会影响分类,但它对预测像素级精确的掩模有很大的负面影响。这里还没搞懂)
B、生成掩模的方法
Mask R-CNN添加并列的 FCN 层(产生掩模的一层),该层的全卷积层用了较少的参数,实现了更加准确的实验结果。
如图1所示,Mask R-CNN在Faster R-CNN基础上进行了如下两点的改动:
⑴ 将ROI Align替换了原有的ROI Pooling层;
⑵ 在损失函数中添加了一个,解耦了掩模和类预测,修改后的损失函数为:
图1 Mask R-CNN与Faster R-CNN的对比图
其中黑色部分为原来的 Faster-RCNN网络,红色部分为Mask R-CNN在 Faster网络上的修改。
针对于实例分割,Mask R-CNN的结构图如图2所示:
图2 Mask R-CNN的结构图
C、损失函数
在训练中,Mask R-CNN将每个采样后的RoI上的多任务损失函数定义为:
其中为每个类独立的预测掩模,依靠专用分类分支预测用于选择输出掩模的类标签,解耦了掩模和类预测:当现有的边框框分支预测类标签,Mask R-CNN为每个类生成一个掩模,而且不会产生类间竞争(通过像素级的sigmoid和二值化损失)。经过实验表明这种方法是改善实例分割结果的关键。(原因论文没讲,也没搜到。关于损失函数,在自己出现的问题中写了一点认识。)
D、网络架构
为了证明Mask R-CNN的通用性,论文构造了多种不同结构的Mask R-CNN。将整个网络分成两部分:
⑴、卷积主干结构用来提取整幅图像的特征。
⑵、网络头用来对ROI进行边框识别和掩模预测。
论文分别考察了50层和101层Resnet和ResNeXt网络作为卷积主干结构。还探索另一种有效的主干结构,叫作FPN( Feature Pyramid Network)。论文扩展了ResNet和FPN中提出的Faster R-CNN的上层网络,如图3所示:
图3 上层结构
图中灰色部分是原来的R-CNN结合ResNet或者FPN的网络,下面的黑色部分为新添加的并联Mask层,旨在说明作者所提出的Mask RCNN 方法的泛化适应能力,可以和多种 RCNN框架结合,表现都不错。
通过ResNeXt-101+FPN用作特征提取网络,达到了拥有强化的基础网络的目的,达到当前所能达到的最佳的效果。
论文的优点
本文的研究的有点主要通过对比试验体现出来。
⑴ 首先是与FCIS对比,解决了重叠的问题,如图4所示:
图4 FCIS和Mask R-CNN的对比图
⑵ 针对不同的结构、多项式和独立掩模、类相关和类无关掩模、掩模分支以及RoIAlign的对比结果如图5所示:
图5 对比结果图
⑶ 应用到其他方面:
在附录中,对于人和小汽车类别,Cityscapes数据集包含了大量的类内重叠目标(每个图像平均6人和9辆小汽车)。我们认为类内重叠是目标分割的核心难点。我们的方法在这两个类别相对前最佳结果有大幅度改善(人相对提升了约85%,从16.5提高到30.5,小汽车相对提升了约30%,从35.7提高到46.9)。
未来的工作
⑴ 速度问题
虽然Mask R-CNN很快,但本文的设计并没有针对速度进行优化,实现更好的速度和精度平衡。例如,通过改变图像尺寸和候选数量。
⑵ 针对人体检测方面:欠缺模型
本文系统利用了人类姿势的最小领域知识,因为实验主要是为了证明Mask R-CNN框架的通用性,相关领域专业知识(如建模结构)将会是简单方法的补充。
相关论文对Mask R-CNN的改进
⑴ 改进特征金字塔
针对Mask R-CNN目标检测方法未能充分利用所有层特征映射图信息而导致准确率不够精确的问题,提出一种基于改进特征金字塔的 Mask R-CNN 目标检测方法。
首先,对图像进行预处理,再对经特征金字塔提取的特征映射图采用自下而上的反向侧边连接方法进行连接;然后,将连接后的特征映射图分别输入区域建议网络和 RoIAlign,区域建议网络对其提取边界框再输入 RoIAlign;最后,对 RoIAlign 的输出进行分类和回归,根据损失函数对网络进行调整。
实验结果表明,相比于 Mask R-CNN 检测框架本文方法在不同的交并比阈值下的平均准确率均值在目标边缘和包围盒两项检测中平均提高了约2.4%和3.8%。尤其对于中等尺寸目标的检测准确率有较大的提高,分别为7.7%和8.5%,具有较强的鲁棒性。
⑵ 其他论文中提到其他改进点为:改进特征提取网络结构、改进候选窗口分类器结构和改进非极大值抑制算法。具体还没仔细看,先不总结了。
自己产生的问题
⑴ Pooling层是干嘛的?
Pooling 层对Filter的特征进行降维,形成最终的特征。一般在Pooling层之后连接全联接层神经网络,形成最后的分类过程。
⑵ 全连接层的原理以及作用?
全连接层之前的作用是提取特征,全理解层的作用是分类。
⑶ 什么是ROI呢?
ROI是Region of Interest的简写,指的是在“特征图上的框”;
1)在Fast RCNN中, RoI是指Selective Search完成后得到的“候选框”在特征图上的映射。
2)在Faster RCNN中,候选框是经过RPN产生的,然后再把各个“候选框”映射到特征图上,得到RoIs。
⑷ 什么是RPN?
替代Selective Search得到感兴趣的区域,并且一个重要的意义是算法的所有步骤都被包含在一个完整的框架中,实现了端到端的训练。
⑸ 什么是交叉熵代价函数?
交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式。与二次代价函数相比,它能更有效地促进ANN的训练。根据该链接有了一个简单的了解。
附录
附录一:
表2 术语对照表
英语表达 |
中文翻译 |
Object instance segmentation |
目标实例分割 |
Segmentation mask |
分割掩模 |
Object mask |
目标掩模 |
Bounding-box object detection |
边框目标检测 |
Person keypoint detection |
人体关键点检测 |
Single-model entry |
单一模型实体 |
Semantic segmentation |
语义分割 |
Fully convolutional network(FCN) |
全卷积网络 |
R-CNN |
区域卷积神经网络 |
Robustness |
鲁棒性 |
Region of Interest(ROI) |
感兴趣区域 |
Feature extraction |
特征提取 |
Quantization-free layer |
量化无关层 |
Decouple mask |
解耦掩模 |
Ablation experiment |
对比实验 |
COCO key-point dataset |
COCO关键点数据集 |
One-hot binary mask |
One-hot 二进制掩模 |
Instance-level recognition |
实例级识别 |
Region Proposal Network (RPN) |
区域建议网络 |
Attention mechanism |
注意机制 |
Segment proposal |
分割建议 |
Segment candidate |
分割候选区 |
Bounding box |
边框 |
Bounding box proposal |
建议边框 |
Bounding box offset |
边框偏移量 |
Bounding box regression |
边框回归 |
Class label |
类标签 |
Fully convolutional instance segmentation (FCIS) |
全卷积实例分割 |
pixel-to-pixel alignment |
像素到像素对齐 |
Per-pixel/pixel-level |
像素级 |
Average binary cross-entropy |
平均二进制交叉熵损失 |
Multinomial cross-entropy loss |
多项式交叉熵损失 |
Fully-connected (fc) layer |
全连接层 |
Pixel-to-pixel correspondence |
像素到像素匹配 |
Bilinear interpolation |
双线性插值 |
Bilinear resampling |
双线性重采样 |
Network-depth-feature |
网络深层特征 |
Feature Pyramid Network (FPN) |
特征金字塔网络 |
Lateral connection |
横向连接 |
Non-maximum suppression (NMS) |
非极大值抑制 |
receptive field (RF) |
感受野 |