深度学习

目标检测系列 Mask R-CNN

2020-08-20  本文已影响0人  zidea
mask-rcnn.jpg

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

根据其研究论文,类似于其前身 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 使用标准的 Res​​net 网络结构对图像进行编码。在每一层,特征图的大小减小一半,特征图的数量增加一倍。如图所示,我们从 resnet-50 架构的 4 个特征图中提取了特征(第1层,第2层,第3层,第4层输出)。

为了生成最终的特征图,使用一种称为从上至下路径(top-bottom path)的方法。从最小的特征图开始,然后通过扩维操作(upscale) 逐步得到更大的 256 特征图。然后逐个元素地将其添加到上一次迭代的上采样输出中。此过程的所有输出都经过 3 \times 3 卷积层以创建最终的 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 的倍数。

上一篇下一篇

猜你喜欢

热点阅读