我有一个不平衡的小数据集,其中包含4116 224x224x3 (RGB)航空图像。由于数据集不够大,我很可能会遇到过度拟合的问题。图像预处理和数据增强有助于解决这个问题,如下所述。
“过度拟合是因为样本太少,无法从中学习,使你无法训练出一个可以推广到新数据的模型。给定无限大的数据,你的模型将暴露在手头数据分布的每一个可能的方面:你永远不会过度适应。数据增强的方法是从现有的训练样本中生成更多的训练数据,通过一些随机转换来增强样本,从而产生可信的图像。” 深入学习与Python,由弗朗索瓦乔莱特,第138-139页,5.2.5使用数据增强。
我读过神经网络中图像数据的预处理,也看过斯坦福大学的CS230 -数据预处理和CS231 -数据预处理课程。它在所以问题中再次被强调,我理解没有“一刀切”的解决方案。以下是迫使我问这个问题的原因:
“因为我们想要获得高的空间分辨率,所以没有使用平移增强。” 参考文献:基于深度卷积神经网络的城市遥感图像小目标语义分割与不确定性建模研究
我知道我将使用Keras - ImageDataGenerator类,但不知道在小对象任务上使用哪些技术和参数来进行语义分割。有人能指点我吗?提前谢谢。:)
from keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
rotation_range=20, # is a value in degrees (0–180)
width_shift_range=0.2, # is a range within which to randomly translate pictures horizontally.
height_shift_range=0.2, # is a range within which to randomly translate pictures vertically.
shear_range=0.2, # is for randomly applying shearing transformations.
zoom_range=0.2, # is for randomly zooming inside pictures.
horizontal_flip=True, # is for randomly flipping half the images horizontally
fill_mode='nearest', # is the strategy used for filling in newly created pixels, which can appear after a rotation or a width/height shift
featurewise_center=True,
featurewise_std_normalization=True)
datagen.fit(X_train)发布于 2019-07-24 10:24:40
增强和预处理阶段始终取决于您遇到的问题。您必须考虑所有可能的增强,以扩大您的数据集。但最重要的是,你不应该进行极端的增强,这使新的训练样本的方式,不可能发生在实际的例子。如果您不期望真正的示例将水平翻转,请不要执行水平翻转,因为这将给您的模型错误信息。想一想输入图像中可能发生的所有更改,并尝试从现有图像中人为地生成新图像。您可以使用许多来自Keras的内置函数。但是您应该知道每个示例都不会产生新的示例,这些示例不太可能出现在模型的输入中。
正如您所说,没有“一刀切”的解决方案,因为一切都依赖于数据。分析数据并构建与其相关的所有内容。
关于小物体,你应该检查的一个方向是损失函数,它强调与背景相比,目标体积的影响。看看骰子损失或一般骰子损失。
https://stackoverflow.com/questions/57133877
复制相似问题