从 Google Earth Engine 中提取 10'000 张图像

Extract 10'000 images from Google Earth Engine

我想从 Earth Engine 获取每张 100x100x[nBands] 像素的 10k 张图像。

我制作了一个区域,我想从中获取select张图片。

我计划在 区域 中创建 10k 个随机点,并为每个点 select 在周围区域创建 100x100 像素。然后我将使用 Export.image.toDrive 函数单独导出每个图像。

导出格式为TFRecords,适用于Tensor Flow Records,一种特殊的压缩数据类型。

我认为这种方法很糟糕。可能有更合适的方法从 Earth Engine 中提取数据集。截至目前,我可以将整个 Region 导出为一张巨大的图像。

我计划使用这些数据来训练卷积神经网络。

  1. Earth Engine 中是否有更好的方法来提取 10k 图像?
  2. 如果不是,那么在 TensorFlow 方面,我们可以使用带有某种内核的整个 Region 图像来为算法提供新的随机训练样本吗?

欢迎任何帮助!预先感谢您的回答。

Export.image 支持导出图像的 规则间隔,可能重叠 块。如果你想这样做,你可以通过一次导出来完成。但在这种情况下,如果您想在集合中的每个预定义点导出补丁而不是规则间隔的补丁,您应该使用 Export.table, which also supports TFRecord export format.

您必须在图像上使用 neighborhoodToArray 显式构建 100×100 块,然后在您选择的点对图像进行采样。

(假设您在 Python 中工作,Python 中的示例代码。)

# Exactly 100x100 kernel
kernel = ee.Kernel.fixed(100, 100, [[1] * 100] * 100)

neighborhoodImage = myImageToBeSampled.neighborhoodToArray(kernel)
samples = neighborhoodImage.sampleRegions(collection=myTrainingRandomPoints)
Export.table.toDrive(
 collection=samples,
 fileFormat='TFRecord',
 selectors=[... training data band name and feature property names go here ...])

我个人并不熟悉进行 TensorFlow 训练的全部细节,但我有过 this complete example recommended as a starting point(我用它来写上面的草图)。请注意,此示例进行了多次导出,因为它在多个多边形内进行采样,但如果您只有一个标记点​​集合,那么您可以只使用一个导出任务,正如我在上面概述的那样。