首页 > 解决方案 > 为什么数据增强会降低 Mask-RCNN 的性能?

问题描述

我训练了一个 Mask-RCNN,用于在有和没有数据增强的情况下进行实例分割。增强只是一种对相关数据有意义的旋转。我很惊讶增强运行(深蓝色)比非增强运行(浅蓝色)更差。

由于增强图看起来只是向下移动但具有相同的形状,我想知道是否还有其他东西在起作用。我使用的批量大小为 2,数据集有 40K 图像,这会影响事情吗?

训练损失 测试指标

标签: deep-learningpytorchfaster-rcnn

解决方案


不完全是一个答案。

我对它有类似的效果,我认为所有参数以及如何训练它都很重要。例如,使用更多层(resnet34 与 resnet18 用于主干),您需要更多信息来训练更大的网络。在这种情况下,增强是有用的。

另一个例子是网络解析。我用默认的 min_size=800 和 max_size=1333 对它进行了一些学习率的训练,并且分辨率越高,网络 AP 在更高的 LR 上的积极增长的潜力就越大。另一个与此相关的示例是您的 FPN 中有多少“级别”以及 AnchorGenerator 的网格设置是什么。如果您的增强生成的样本小于特定 FPN 级别上的锚点,那么它们可能会导致更多问题而不是任何好处。而且,如果您的增强生成的样本如此之小,以至于您的对象的细节不可见 - 同样不是很有用,尤其是在小型网络上。

有很多类似的小问题很重要。我有一种情况,旋转使结果变得更糟,因为在一些旋转角度下,旋转的样本开始看起来像背景的一部分,并且基于 maskrcnn 的检测器无法使用它。三次插值稍微修复了它,但最终,我想出了限制旋转角度的想法。

只需进行试验并找到适合您的特定任务的超参数。


推荐阅读