我试图实现一个场景,我有一些900x900的图像,这些图像有一些我想要分割的功能。因此,我想创建一个输出二进制900x900图像的网络,指定每个像素是否包含所述特征。
我可以使用tf.train.shuffle_batch加载我的输入900x900 int 32图像和我的标签900x900二进制图像,但图像和标签没有链接,这意味着每个图像都没有正确附加到它相应的标签。
我将数据输入图像放在一个文件夹中,将标记的图像放在第二个文件夹中。
如何将输入图像与我的标签图像链接起来?
非常感谢!
答案 0 :(得分: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数组。
希望这有帮助!