【问题标题】:Why is data augmentation degrading performance for Mask-RCNN?为什么数据增强会降低 Mask-RCNN 的性能?
【发布时间】:2021-04-19 21:01:50
【问题描述】:

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

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

【问题讨论】:

  • 如何旋转图像?您的旋转蒙版是否以相同的方式(例如,它是白盒中的数据)?浅蓝色似乎表现更好,平均精度更好,召回率也更高,损失也更低,我不确定你的意思是非增强更好。
  • @SzymonMaszke 抱歉,把我的忧郁弄混了——我更正了文字。在图像和蒙版上执行相同的旋转,我还检查并仔细检查了任何其他奇怪的东西,比如插值等。一切看起来都很好,我也看到了使用水平翻转增强而不是旋转的类似效果。
  • 如果您不确定,请尝试使用和不使用数据增强的更强大的主干。还可以尝试批量累积,2 号的批量太小而无法获得合理的结果。
  • 很酷,谢谢尝试更大的批量,我认为 Resnet50 FPN 应该没问题,除非我一直到 Resnet101
  • 在损失方面似乎还有改进的余地。如果模型太弱而无法过度拟合给出的数据,增强可能无助于/破坏结果,这里似乎就是这种情况。

标签: deep-learning pytorch faster-rcnn


【解决方案1】:

不完全是一个答案。

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

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

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

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

【讨论】:

  • 感谢您的评论,我实际上正在处理这个问题:stackoverflow.com/questions/65694335/… 如果您有任何指导。我的网络使用 Resnet50 FPN,图像为 1000x1000
  • 感谢您对这个问题的贡献,非常感谢。
猜你喜欢
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 2020-01-31
  • 1970-01-01
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多