import os
import random # 后续用来将数据随机打乱和生成确定随机种子,保证每次生成的随机数据一样便于测试模型精准度
def _get_img_info(rng_seed,split_n,mode):
image_path_list = [] #用来存放图片的路径
label_path_list = [] #用来存放图片对应的标签
data_dir = r'C:UsersfutiangeDesktopZero to Heroexpression_test
aw_data'
for root,dirs,files in os.walk(data_dir):
for file in files:
path_file = os.path.join(root,file)
print(path_file)
if path_file.endswith(".jpg"): #判断该路径下文件是不是以.jpg结尾
#print(os.path.basename(root)) #输出图片路径
#print(os.path.basename(root)[0]) #输出该图片所在的文件夹的第一个字符,我这里文件夹的第一个字符就是图片的标签,测试时可以根据自己的文件夹名称更改
#print(int(os.path.basename(root)[0]))
image_path_list.append(path_file) #将图片路径加入列表
label_path_list.append(os.path.basename(root)[0]) #根据文件夹名称确定标签,并加入列表
data_info = [[n,l] for n,l in zip(image_path_list,label_path_list)] #将图片路径-标签 关联起来
random.seed(rng_seed) # 该方法中传入参数,确保每次生成的种子都是一样的
random.shuffle(data_info) #上一行代码生成的种子是确定的,保证了每次将列表元素打乱后的结果一样,便于测试模型性能
split_idx = int(len(data_info) * split_n) # data_len * 0.9 # split_n代表数据集划分的比例
if mode == 'train':
img_set = data_info[:split_idx]
elif mode == 'val':
img_set = data_info[split_idx:]
else:
raise Exception("mode 无法识别,仅支持(train,valid)")
return img_set #返回随机打乱后的数据集,后续在对其进行格式化即可将数据集加载进模型测试
if __name__ == '__main__':
_get_img_info(1,0.9,'train')