首页 > 解决方案 > 使用在线数据增强是 CNN 模型之间的公平比较吗

问题描述

我正在使用我输入卷积神经网络的图像的在线数据增强。我为此使用 Keras ImageDataGenerator。在每批中对图像进行增强,然后在这些图像上训练模型。

我正在比较不同的模型,但由于图像是动态增强的,这真的公平吗,因为每个模型得到的图像略有不同?

标签: pythontensorflowmachine-learningkerasconvolutional-neural-network

解决方案


如果我理解你是正确的,你想知道数据增强引起的随机性是否会影响结果?

如果您训练足够长的时间,则增强的随机性不会影响结果(至少不会在一定程度上产生影响)。您拥有的其他选择是(我认为):

  1. 在将图像插入模型之前,确定性地对图像应用相同的转换来增强数据。这些转换可以是 (a) 随机的,例如将图像旋转一些限制之间的随机度数,或 (b) 预先确定的转换,例如将所有图像旋转 1、3 和 5 度。
  2. 根本不增加您的数据。使用您的初始数据来训练您的模型。

这些选择的效果是:

  1. 您将应用的转换数量是有限的,即使选择了选项 1a,也将是预定义的设置。如果您愿意显着增加这一点,则会出现其他问题,例如您将在哪里存储所有这些数据,您将如何在训练期间处理它等。因此,动态的优势在于您的数据存储不会改变,您处理数据的方式也不是。缺点当然是使用了较慢的过程(这取决于转换可能会产生很大的不同)。
  2. 这个选择是有效的意味着你有很多数据。并且通过意义很多(当然取决于问题)有时很多是不够的。由于您(可能)使用不同的数据进行测试,因此您的训练数据和测试数据之间会出现许多方面的差异。例如,对于人体检测(任意选择),姿势、颜色、光照条件、图像清晰度、图像大小、纵横比的差异很常见。你怎么处理?您要么收集大量数据,要么(可能)使用数据增强,对吧?

总而言之,这是公平的,因为从长远来看,它并没有太大的区别。例如,考虑为您的模型提前停止的选项。比较那些在最佳迭代中停止训练的模型是否公平?好吧,这并不完全公平,但并没有什么不同。


推荐阅读