数据扩充:steps_per_epoch 到底是什么意思?

Data Augmentation: What exactly does steps_per_epoch mean?

我是深度学习的新手。我有一个基本的疑问。这对你来说可能听起来很愚蠢。
我正在研究从卫星图像中提取道路。我只有 1080 张样本图像。这就是我应用数据增强的原因。

以下是数据增强的代码

aug = ImageDataGenerator(rotation_range=10,
zoom_range=0.15,
horizontal_flip=True,
fill_mode="nearest")

所有这 3 个属性,即 rotation_range、zoom_range 和 horizontal_flip 将单独应用。我的意思是我将获得一张旋转图像、一张缩放图像和一张水平翻转图像。我猜对了吗?

len(trainX)  # output 875

现在,我正在将我的训练数据拟合到我的模型上

batch_size = 4
epochs = 10
roadModel_train = roadModel.fit(
    x=aug.flow(trainX, trainY, batch_size=batch_size),
    validation_data=(validX, validY),
    epochs=epochs,
  verbose=1,steps_per_epoch=len(trainX)//batch_size)

我的输出:

我的问题是,这个 218 表示什么?我知道,它通常表示样本总数(或我的情况下的图像)。

但是当我们应用数据增强时它表示什么?它是拍摄 218 张图像还是拍摄 218 * 3(数据扩充中的应用属性)= 654 张图像?

我的数据集图像的像素大小是 10m。那我应该如何扩充数据呢?我应该申请哪些属性?

我非常乐意为您提供帮助!

提前致谢!

在您的 roadModel.fit() 中,您将批量大小设置为 4。这意味着每批拍摄 4 张图像,并从该批次计算损失。得到训练集中的每一张图片需要218步。

如果我们取 218*4,我们会得到 872。你的训练集的长度是 875,所以这是有道理的。

批处理用于限制 运行 网络所需的 RAM 数量。我建议在这种情况下设置 batch_size=35,因为这会导致每个纪元 25 步。

ImageDataGenerator 增强随机应用于每个图像。根据您的参数,有些会翻转,有些会放大到 1.15 倍。

我希望这能回答你的问题。

可以找到所有增强的更多详细信息here