python - 使用 Mask-RCNN 的不准确蒙版:楼梯效果和突然停止
问题描述
我一直在使用 Matterport 的 Mask R-CNN 在自定义数据集上进行训练。但是,似乎有些参数我未能正确定义,因为在几乎所有图像上,对象蒙版的底部或顶部都被切断:
如您所见,边界框很好,因为它覆盖了整个刀片,但遮罩似乎突然停在底部的一条水平线上。
另一方面,对于较大和弯曲的对象的蒙版,例如这个(除了底部和顶部截止),有一个类似楼梯的效果:
- 原始图像被缩小为
IMAGE_MIN_DIM = IMAGE_MAX_DIM = 1024
使用“方形”模式。 USE_MINI_MASK
设置为 trueMINI_MASK_SHAPE = (512, 512)
(不知何故,如果我将其设置为关闭,RAM 会被填满并训练 chrashes)。RPN_ANCHOR_SCALES = (64, 128, 256, 512, 1024)
因为物体占据了图像的很大空间。
感觉问题不在于训练量。这两个预测来自每个 epoch 7000 步的 6 个 epoch(大约需要 17 小时)。这个问题从早期就出现了,并且贯穿了所有的时代。
知道要进行哪些更改吗?
解决方案
这只是Mask-RCNN
工作原理,并且是已知的副作用。您无法明智地执行任何操作以使其不出现。PointRend讨论了这个问题(证明它不仅仅是你),并且还提出了他们自己的算法(这是对 的扩展Mask-RCNN
)来解决它。在下图中,您可以看到该论文的图像。在左上角,他们在 28x28 图像上运行 Mask-RCNN,您也可以在其中看到楼梯。其他图像与他们如何解决它有关。
坏消息当然是仅仅将 PointRend 代码猛烈抨击到 Mask-RCNN 上并不容易,我至少不知道有什么好的实现。PointRend github本身也不允许对您自己的数据进行任何重新训练。
编辑:
对于后处理,您可以采用很多方法。这个怎么样:
推荐阅读
- google-chrome - 会话 Cookie 的生命周期
- python - 手动登录后如何使用 selenium 抓取多个链接?
- angular - 如何将动画添加到 NGX-Bootstrap 下拉菜单
- vue.js - 在部署时放大清除缓存
- javascript - 离线版本中的 HTML2canvas - 可能无法导出受污染的画布
- c# - 如何对两层深的对象执行 LINQ Where 操作并从中生成平面列表?
- javascript - CSV 中的数据分组(D3.js 和 Chart.js)
- matlab - MATLAB的ocr能识别数学公式吗?
- xml - xml中特定属性值的总和是多少?
- python - Python folium 颜色图格式