【发布时间】: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