首先你需要给你的数据统一命名,也就是数据集和label的前缀是一样的,其次,两个在不同的文件夹下,这样就可以提出一种想法,如果文件是validation.jpg,label是validation.png,直接截取文件中的名字validation,然后根据路劲直接读取,如果路径是/data0/data/fenge,那么存在validation.jpg文件名的一定会存在validation.png,所以只需要改不同路径就好了。
另一种思想的代码如下,就是对文件名排序,让他们一致读取。
import os
from PIL import Image
import tensorflow as tf
import re
import scipy.misc as misc
import numpy as np
IMAGE_SIZE = 224
train_path = r'/data0/data/fenge/Data_zoo/MIT_SceneParsing/ADEChallengeData2016/images/validation'
train_label_path=r'/data0/data/fenge/Data_zoo/MIT_SceneParsing/ADEChallengeData2016/annotations/validation_lable'
# validation_lable
# writer = tf.python_io.TFRecordWriter('fenge_test.tfrecords') #输出成tfrecord文件
re_digits = re.compile(r'(\d+)')
def embedded_numbers(s):
pieces = re_digits.split(s) # 切成数字与非数字
pieces[1::2] = map(int, pieces[1::2]) # 将数字部分转成整数
return pieces
def sort_strings_with_embedded_numbers(alist):
return sorted(alist, key=embedded_numbers)
train_label = os.listdir(train_label_path)
train= os.listdir(train_path)
train_label = sort_strings_with_embedded_numbers(train_label)
train = sort_strings_with_embedded_numbers(train)
__channels = True
image = np.array()
image = misc.imread(train_label)
if __channels and len(image.shape) < 3: # make sure images are of shape(h,w,3)
image = np.array([image for i in range(3)])
else:
resize_image = np.array(image)