deep-learning - 为什么数据增强会降低 Mask-RCNN 的性能?
问题描述
我训练了一个 Mask-RCNN,用于在有和没有数据增强的情况下进行实例分割。增强只是一种对相关数据有意义的旋转。我很惊讶增强运行(深蓝色)比非增强运行(浅蓝色)更差。
由于增强图看起来只是向下移动但具有相同的形状,我想知道是否还有其他东西在起作用。我使用的批量大小为 2,数据集有 40K 图像,这会影响事情吗?
解决方案
不完全是一个答案。
我对它有类似的效果,我认为所有参数以及如何训练它都很重要。例如,使用更多层(resnet34 与 resnet18 用于主干),您需要更多信息来训练更大的网络。在这种情况下,增强是有用的。
另一个例子是网络解析。我用默认的 min_size=800 和 max_size=1333 对它进行了一些学习率的训练,并且分辨率越高,网络 AP 在更高的 LR 上的积极增长的潜力就越大。另一个与此相关的示例是您的 FPN 中有多少“级别”以及 AnchorGenerator 的网格设置是什么。如果您的增强生成的样本小于特定 FPN 级别上的锚点,那么它们可能会导致更多问题而不是任何好处。而且,如果您的增强生成的样本如此之小,以至于您的对象的细节不可见 - 同样不是很有用,尤其是在小型网络上。
有很多类似的小问题很重要。我有一种情况,旋转使结果变得更糟,因为在一些旋转角度下,旋转的样本开始看起来像背景的一部分,并且基于 maskrcnn 的检测器无法使用它。三次插值稍微修复了它,但最终,我想出了限制旋转角度的想法。
只需进行试验并找到适合您的特定任务的超参数。
推荐阅读
- powershell - Powershell 工厂模式作为静态方法
- selenium - robotsframework + Selenium:如何等到页面重新加载
- maven - 硒/JAVA/MAVEN/詹金斯/文件未发现异常
- avr - Linux:ATtiny1616 的串行引导加载程序应用程序
- swift - 如何制作由 Swift 中的函数返回的 url 发布请求
- java - 单击按钮后无法在 Java Netbeans 中隐藏和取消隐藏 jPanel
- php - 我如何计算laravel中具有特定值的未读通知的数量
- python - Add group membership to AD with PyAD
- java - 成功计费java后Anjlab没有调用onProductPurchased
- core-data - 在CoreData中保存数组的值时,只保存一个值