Mask-RCNN 的不准确掩码:阶梯效应和突然停止
Inaccurate masks with Mask-RCNN: Stairs effect and sudden stops
我一直在使用 matterport 的 Mask R-CNN 在自定义数据集上进行训练。但是,似乎有些参数我未能正确定义,因为在几乎所有图像上,对象遮罩的底部或顶部都被切断了:
如您所见,边界框很好,因为它覆盖了整个叶片,但遮罩似乎突然停在底部的水平线上。
另一方面,像这个这样的更大和更弯曲的对象的蒙版有类似阶梯的效果(除了底部和顶部截止):
- 使用“正方形”模式将原始图像缩小到
IMAGE_MIN_DIM = IMAGE_MAX_DIM = 1024
。
USE_MINI_MASK
设置为 true MINI_MASK_SHAPE = (512, 512)
(不知何故,如果我将其设置为关闭,RAM 会被填满并且训练会崩溃)。
RPN_ANCHOR_SCALES = (64, 128, 256, 512, 1024)
因为物体占据了很大的图像 space。
感觉不是训练量的问题。这两个预测来自 6 个时期,每个时期 7000 步(大约需要 17 个小时)。而且这个问题从早期就出现了,并且一直存在。
知道要进行哪些更改吗?
这就是 Mask-RCNN
的工作原理,并且是已知的副作用。您无法采取任何明智的实施措施来使其不出现。 PointRend讨论了问题(证明不只是你),也提出了自己的算法(是Mask-RCNN
的扩展)来解决。在下图中,您可以看到该论文中的图像。在左上角,他们 运行 Mask-RCNN 在 28x28 图像上,您也可以在其中看到楼梯。其他图像与他们如何解决它有关。
坏消息当然是将 PointRend 代码猛击到 Mask-RCNN 上并不容易,至少我不知道有什么好的实现。 PointRend github 本身也不允许对您自己的数据进行任何再训练。
编辑:
对于后处理,您可以采用多种方法。这个怎么样:
我一直在使用 matterport 的 Mask R-CNN 在自定义数据集上进行训练。但是,似乎有些参数我未能正确定义,因为在几乎所有图像上,对象遮罩的底部或顶部都被切断了:
如您所见,边界框很好,因为它覆盖了整个叶片,但遮罩似乎突然停在底部的水平线上。
另一方面,像这个这样的更大和更弯曲的对象的蒙版有类似阶梯的效果(除了底部和顶部截止):
- 使用“正方形”模式将原始图像缩小到
IMAGE_MIN_DIM = IMAGE_MAX_DIM = 1024
。 USE_MINI_MASK
设置为 trueMINI_MASK_SHAPE = (512, 512)
(不知何故,如果我将其设置为关闭,RAM 会被填满并且训练会崩溃)。RPN_ANCHOR_SCALES = (64, 128, 256, 512, 1024)
因为物体占据了很大的图像 space。
感觉不是训练量的问题。这两个预测来自 6 个时期,每个时期 7000 步(大约需要 17 个小时)。而且这个问题从早期就出现了,并且一直存在。
知道要进行哪些更改吗?
这就是 Mask-RCNN
的工作原理,并且是已知的副作用。您无法采取任何明智的实施措施来使其不出现。 PointRend讨论了问题(证明不只是你),也提出了自己的算法(是Mask-RCNN
的扩展)来解决。在下图中,您可以看到该论文中的图像。在左上角,他们 运行 Mask-RCNN 在 28x28 图像上,您也可以在其中看到楼梯。其他图像与他们如何解决它有关。
坏消息当然是将 PointRend 代码猛击到 Mask-RCNN 上并不容易,至少我不知道有什么好的实现。 PointRend github 本身也不允许对您自己的数据进行任何再训练。
编辑:
对于后处理,您可以采用多种方法。这个怎么样: