我需要对我的数据集进行实时扩充,以便输入CNN,但我很难找到合适的库。我尝试过caffe
,但DataTransform
不支持许多实时扩充,如旋转等。因此,为了便于实现,我选择了Lasagne
。但它似乎也不支持实时增强。我看到一些与Facial Keypoints detection
相关的帖子,他使用nolearn.lasagne
的Batchiterator
。但我不确定它是否实时。没有合适的教程。最后,我应该如何通过nolearn
或其他方式在Lasagne
中进行实时增强?
您可以使用Keras框架对CNN训练进行实时数据增强。以下是github中CIFAR10数据集的示例代码。您也可以更改它以适应您的需求,或者复制源代码并添加到千层面项目中,但我以前从未尝试过导入到千层面中。这背后的基本思想是在每个批次中随机增加数据。若你们有适合网络的批次循环,你们可以在将数据发送到网络之前调用扩充函数。
是的,您可以在Lasagne中进行实时数据增强。最简单的方法是使用高斯噪声层。只需将其插入您的输入层之后。如果高斯噪声不是你所需要的,那么至少你有GaussianNoiseLayer作为如何实现你自己的例子。
请注意deterministic
参数是如何在Lasagne中使用的。默认情况下,它处于禁用状态,因此在训练过程中会添加噪波。在测试过程中,您设置了deterministic=True
,这样就可以简单地避免增加。
是的,您提到的面部关键点识别教程确实使用实时(动态)增强来随机翻转输入图像(和目标坐标)。
nolearn-utils库有很多迭代器的例子,它们可以进行几种类型的扩充。例如,AffineTransformBatchIteratorMixin
在飞行中进行随机仿射变换。