【问题标题】:How to convert a HyperSpectral image or an image with many bands in TFRecord format?如何转换超光谱图像或 TFRecord 格式的多波段图像?
【发布时间】:2020-05-25 09:09:43
【问题描述】:

我一直在尝试使用 .mat 文件中的高光谱图像数据集。我发现使用 scipy 库及其 loadmat 函数可以加载高光谱图像并选择一些波段以将它们视为 RGB。

    def RGBread(image):   
      images = loadmat(image).get('new_image')
      return abs(images[:,:,(12,6,4)])
    def SIread(image):
      images = loadmat(image).get('new_image')
      return abs(images[:,:,:])

在尝试实现 pix2pix 架构后,我发现了一个意外错误。当通过负责加载数据的函数(仍然是 .mat 文件)传递数据集文件的名称列表时,Tensor Flow 没有直接的读取或编码方法,所以我用我的 RGBread 和 SIread 方法,然后我把它们变成了张量。

    def load_image(filename, augment=True): 

      inimg = tf.cast( tf.convert_to_tensor(RGBread(ImagePATH+'/'+filename)
             ,dtype=tf.float32),tf.float32)[...,:3]
      tgimg = tf.cast( tf.convert_to_tensor(SIread(ImagePATH+'/'+filename)
             ,dtype=tf.float32),tf.float32)[...,:12]

      inimg, tgimg = resize(inimg, tgimg,IMG_HEIGH,IMG_WIDTH)

      if augment:
        inimg, tgimg = random_jitter(inimg, tgimg)

      return inimg, tgimg

使用 load_image 方法加载图像时,使用我的数据集的单个 .mat 文件(高光谱图像)的名称和路径作为我的函数的参数,该方法运行良好。

plt.imshow(load_train_image(tr_urls[1])[0])

当我创建我的 dataSet 张量时问题就开始了,因为我的 RGBread 函数没有接收张量作为参数,因为 loadmat('.mat') 需要一个字符串。出现以下错误。

train_dataset = tf.data.Dataset.from_tensor_slices(tr_urls)
train_dataset = train_dataset.map(load_train_image,
                num_parallel_calls=tf.data.experimental.AUTOTUNE)
TypeError: expected str, bytes or os.PathLike object, not Tensor

在阅读了很多关于读取 .mat 文件的内容后,我找到了一位建议将数据传递为 TFrecord 格式的用户。我一直在努力,但我做不到。有人可以帮助我吗?

【问题讨论】:

    标签: tensorflow image-processing dataset tfrecord


    【解决方案1】:

    Rasterio 在这里可能很有用。

    https://rasterio.readthedocs.io/en/latest/

    它可以读取可以使用 tf.keras 数据生成器传递给 tf.data 的高光谱 .tif。它可能有点慢,也许应该在训练之前而不是在运行时完成。

    另一种方法是询问您是否需要 geotiff 元数据。如果没有,您可以预处理并保存为 tfrecords 的 numpy 数组。

    【讨论】:

    • 谢谢,但我用 tf.keras.Sequential 解决了我的问题,这个库允许我创建一个 DataGenerator。
    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    相关资源
    最近更新 更多