Kaiming He 以及其团队于 2018 在 FAIR 开发了的 Mask R-CNN ,是当下主流的实例分割算法。而且 Mask R-CNN 在许多实际商业项目中也有着出色的表现。
kaimingHe现在 Mask R-CNN 无意是目标识别技术堆栈中最强大的算法之一。Mask R-CNN 的变体 (基于原始论文进行了一些修改) 在这里被 Fractal 图像团队广泛用于各种用例中。 Mask R-CNN 的强大源于其复杂的结构。
mask r-cnn上图简要介绍了数据如何通过 Mask R-CNN 算法流动。对 Mask R-CNN 的正确理解对于调整其参数以及如何在 Mask R-CNN 使用这些参数。
Mask R-CNN 使用额外的遮罩头(mask head) 对目标检测算法 Faster R-CNN 的扩展。通过额外的遮罩头使我们能够对每个对象进行像素分割,并且还可以在没有任何背景的情况下分别提取每个目标(这是语义分割所无法实现的)。
Mask R-CNN 的优势所在
- Mask R-CNN 简单便于训练
- Mask R-CNN在所有任务(包括COCO 2016挑战赛获胜者)上均胜过所有现有的单一模型
- 为每个实例分割的对象提供了边界框和分割 mask
历史回归
- Fast R-CNN 优化包括移除了 SVM 分类器,使用回归和分类层来完成分类和边界框的精修。而且 selective search 不是在原图片生成候选框而是在特征层上生成候选框
- Faster R-CNN 在 Fast R-CNN 基础优化内容主要是不再使用 selective search 生成候选框,而是使用深度卷积网络 RPN 来生成候选框,这样也将候选框生成的阶段也融入到神经网络中。
- Mask R-CNN 是对 Faster R-CNN 扩展可以为每张图片生产高质量的分割遮罩。
Mask R-CNN
根据其研究论文,类似于其前身 Faster R-CNN,Mask R-CNN 是一个分为两个阶段的框架:第一阶段目标候选框,第二阶段候选框进行分类以生成边界框和mask。
检测分支(分类和边界框偏移)和 mask 分支彼此并行运行。对特定类别的分类不依赖于 Mask 预测。但是,我们认为 Mask R-CNN 是一个三阶段框架,边界框和 Mask 的生成是两个不同的阶段,因为我们不会在 RPN 的所有提议上都生成 Mask,而只是在检测时才从 box head 获得 Mask。
图片预处理
图FPN(Feature pyramid networks)
Faster R-CNN 使用标准的 Resnet 网络结构对图像进行编码。在每一层,特征图的大小减小一半,特征图的数量增加一倍。如图所示,我们从 resnet-50 架构的 4 个特征图中提取了特征(第1层,第2层,第3层,第4层输出)。
为了生成最终的特征图,使用一种称为从上至下路径(top-bottom path)的方法。从最小的特征图开始,然后通过扩维操作(upscale) 逐步得到更大的 256 特征图。然后逐个元素地将其添加到上一次迭代的上采样输出中。此过程的所有输出都经过 卷积层以创建最终的 4 个特征图(P2,P3,P4,P5。第五个特征图(P6) 是通过对 P5 进行 max pooling 而生成的特征图。
注意在这里我们一定要关注尺寸,上采样操作涉及的最小尺寸特征图是 (w/32,h / 32。这里需要确保输入张量的尺寸可被 32 整除。
通过一个例子进行说明假设图片大小 w = 800 和 h = 1080。w/32 = 25,h/32 = 33.75,得到的特征图的大小为 (25,33)。接下来在上采样时,尺寸将为 (50,66),应该将其逐元素添加到另一个尺寸为 (50,67) 的特征图中,因为需要维度保持一致才能进行相加,否则将抛出错误。因此我们在使用 FPN 时,输入张量必须为 32 的倍数。
网友评论