通过更改批量大小和输入图像大小来提高准确性

Increasing accuracy by changing batch-size and input image size

我正在从卫星图像中提取道路网络。这里的像素分类是二进制的(0 = 非道路,1 = 道路)。因此,6400 x 6400 像素的完整卫星图像的掩码显示了一个大型道路网络,其中每条道路都连接到另一条道路。为了实施 U-net,我将该大图像分成 625 张 256 x 256 像素的图像。

我的问题是:神经网络是否可以随着批量大小的增加更容易找到结构(因此它可以找到不同批次之间的结构),还是只能在输入图像大小扩大时才能找到结构?

如果你的模型是一个常规的卷积网络(没有任何奇怪的黑客攻击),一批中的样本将不会相互连接。

根据您使用的损失函数,批量大小可能也很重要。对于常规函数(可用'mse'、'binary_crossentropy'、'categorical_crossentropy'等),它们都保持样本相互独立。但有些损失可能会考虑整批。 (例如,F1 指标)。如果您使用的损失函数不独立处理样本,那么批量大小非常重要。

也就是说,拥有更大的批量可能有助于网络更轻松地找到它的方式,因为一个图像可能将权重推向一个方向,而另一个可能需要不同的方向。批次中所有图像的平均结果应该更能代表一般权重更新。

现在,进入一个实验领域(在我们测试它们之前,我们永远不会了解关于神经网络的一切),请考虑以下比较:

  • 具有 1 个巨大图像的批次与
  • 同一图像的一批补丁

两者将具有相同数量的数据,并且对于卷积网络而言,这不会产生巨大差异。但是对于第一种情况,网络可能会更好地找到道路之间的连接,可能会找到更多道路可能被某些东西覆盖的路段,而充满边界的小块可能会更多地关注纹理并且不是很好识别这些差距。

当然,所有这些都是猜测。测试是最好的。

我在 GPU 中的网络不能真正使用大补丁,这对我来说很糟糕...