0

我正在尝试实现一个场景,其中我有一些 900x900 图像,这些图像具有我想分割的一些功能。因此,我想创建一个输出二进制 900x900 图像的网络,指定每个像素是否包含所述特征。

我可以使用 tf.train.shuffle_batch 加载我的输入 900x900 int 32 图像和我的标签 900x900 二进制图像,但是图像和标签没有链接,这意味着每个图像都没有正确附加到它的相应标签上。

我在一个文件夹中有数据输入图像,目前在第二个文件夹中有标记的图像。

如何将输入图像与我的标签图像链接?

非常感谢!

4

1 回答 1

0

这个问题本质上是一个关于以根据您的训练数据排序的方式来表示您拥有的标签的最佳方式的问题。

表示 可以用于标签的简单表示可以是一个简单的 900 x 900 掩码(一个 numpy 数组),其中 1 和 0 表示相应像素是否具有该特征

顺序 假设您在连接输入图像和标签图像的文件名中有某种排序或标识符,您可以按文件名的顺序加载输入图像和标签图像:

def findpaths(path):
  print(path)
  im_paths = []
  im_dict = {}
  for root, dirs, files in os.walk(path, topdown=False):
    # print(root, dirs, len(files))
    for name in files:
      if name.find('.png') != -1:
        im_path = os.path.join(root, name)
        im_paths.append(im_path)
        im_id = int(re.findall('\d+', name)[0])
        im_dict[im_path] = im_id
  im_paths_sorted = sorted(im_paths, key=lambda x: im_dict[x])
return im_paths_sorted, im_dict

上面的示例显示了一个加载文件的函数,其命名约定为 d-1.png、d-2.png ... 等等。这将允许您按照文件名中的标识符的顺序创建文件路径列表。您可以对输入图像和标签图像执行此操作,然后按照标识符的顺序将它们维护为 numpy 数组。

希望这可以帮助!

于 2017-10-01T00:31:43.670 回答