【问题标题】:Extract 10'000 images from Google Earth Engine从 Google 地球引擎中提取 10'000 张图像
【发布时间】:2020-07-21 04:36:28
【问题描述】:

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

我创建了一个区域,我想从中选择图像。

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

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

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

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

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

欢迎任何帮助!提前感谢您的回答。

【问题讨论】:

    标签: tensorflow conv-neural-network google-earth-engine


    【解决方案1】:

    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(我用它来写上面的草图)。请注意,此示例执行多个导出,因为它在多个多边形内进行采样,但是如果您有一个标记点​​集合,那么您可以只使用一个导出任务,正如我在上面所概述的那样。

    【讨论】:

    • "Export.image 支持导出定期间隔的、可能重叠的图像块。如果你想这样做,你可以通过一次导出来完成。" 这比我目前的计划要好!谢谢!你会使用“尺寸”参数吗?这就是我尝试过的,但它没有任何结果......
    • @FlorianFasmeyer 查看同一文档页面上的Exporting images 部分,尤其是patchDimensionskernelSize 参数,以及显示补丁如何重叠的图。
    猜你喜欢
    • 2017-10-07
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多