当前位置:
首页 >
制作lfw格式的数据集
发布时间:2023/12/20
45
豆豆
生活随笔
收集整理的这篇文章主要介绍了
制作lfw格式的数据集
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1 制作lfw格式的数据集代码
import glob import os.path import numpy as np import os from PIL import Imagedef make_lfw_format_dataset(INPUT_DATA, extensions, save_path):sub_dirs = [x[0] for x in os.walk(INPUT_DATA)]for sub_dir in sub_dirs[1:]:# 获取当前目录下所有的有效图片文件dir_name = os.path.basename(sub_dir)file_glob = os.path.join(INPUT_DATA, dir_name, '*.' + extensions)# glob.glob(file_glob)获取指定目录下的所有图片,存放在file_list中if not os.path.exists(save_path + dir_name):os.makedirs(save_path + dir_name)for j, img_path in enumerate(glob.glob(file_glob)):# print(j, img_path)format = "%s_%04d%s"img = Image.open(img_path)img.save(format % (save_path + dir_name + "\\" + dir_name, j, ".png"))returnif __name__ == '__main__':make_lfw_format_dataset("test\\", "jpg", "test0\\")print("SUCCEED !!!")pass2 生成lfw格式的人脸对代码
import glob import os.path import numpy as np import osdef find_not_zero_pos(sstr):s_flag = Falsefor i in range(len(sstr)):if sstr[i] != "0":s_flag = Truereturn iif s_flag == False:return len(sstr) - 1def get_real_str(sstr):i = 0i = find_not_zero_pos(sstr)return sstr[i:]def create_match_content():matched_result = set()k = 0sub_dirs = [x[0] for x in os.walk(INPUT_DATA)]while len(matched_result) < 3000:for sub_dir in sub_dirs[1:]:extensions = 'png'file_list = []dir_name = os.path.basename(sub_dir)file_glob = os.path.join(INPUT_DATA, dir_name, '*.' + extensions)# glob.glob(file_glob)获取指定目录下的所有图片file_list.extend(glob.glob(file_glob))if not file_list: continueif len(file_list) >= 2:label_name = dir_namelength = len(file_list)random_number1 = np.random.randint(length)random_number2 = np.random.randint(length)while random_number1 == random_number2:random_number1 = np.random.randint(length)random_number2 = np.random.randint(length)base_name1 = os.path.basename(file_list[random_number1 % length])base_name2 = os.path.basename(file_list[random_number2 % length])if(file_list[random_number1%length] != file_list[random_number2%length]):base_name1 = base_name1.split("_")[-1]base_name1 = base_name1.split(".")[0]base_name2 = base_name2.split("_")[-1]base_name2 = base_name2.split(".")[0]matched_result.add(label_name + ' ' + get_real_str(base_name1) + ' ' + get_real_str(base_name2))# print(label_name + ' ' + get_real_str(base_name1) + ' ' + get_real_str(base_name2))k = k + 1return matched_result, kdef create_unmatch_content():"""不同类的匹配对"""unmatched_result = set()k = 0while len(unmatched_result) < 3000:sub_dirs = [x[0] for x in os.walk(INPUT_DATA)]length_of_dir = len(sub_dirs)for j in range(24):for i in range(1, length_of_dir):class1 = sub_dirs[i]random_number = np.random.randint(length_of_dir)while random_number == 0 | random_number == i:random_number = np.random.randint(length_of_dir)class2 = sub_dirs[random_number]class1_name = os.path.basename(class1)class2_name = os.path.basename(class2)extensions = 'png'file_list1 = []file_list2 = []file_glob1 = os.path.join(INPUT_DATA, class1_name, '*.' + extensions)file_list1.extend(glob.glob(file_glob1))file_glob2 = os.path.join(INPUT_DATA, class2_name, '*.' + extensions)file_list2.extend(glob.glob(file_glob2))if file_list1 and file_list2:base_name1 = os.path.basename(file_list1[j % len(file_list1)])base_name2 = os.path.basename(file_list2[j % len(file_list2)])base_name1 = base_name1.split("_")[-1]base_name1 = base_name1.split(".")[0]base_name1 = get_real_str(base_name1)base_name2 = base_name2.split("_")[-1]base_name2 = base_name2.split(".")[0]base_name2 = get_real_str(base_name2)s = class2_name + ' ' + base_name2 + ' ' + class1_name + ' ' + base_name1if(s not in unmatched_result):unmatched_result.add(s)if len(unmatched_result) > 3000:breakk = k + 1return unmatched_result, kif __name__ == '__main__':# TODO 图片数据文件夹INPUT_DATA = r'lfw'txt_path = 'pairs.txt'if os.path.isfile(txt_path):os.remove(txt_path)result, k1 = create_match_content()print(k1)# print(result)result_un, k2 = create_unmatch_content()print(k2)# print(result_un)file = open(txt_path, 'w')result1 = list(result)result2 = list(result_un)file.write('10 300\n')for i in range(10):for pair in result1[i*300:i*300+300]:file.write(pair + '\n')for pair in result2[i*300:i*300+300]:file.write(pair + '\n')file.close()总结
以上是生活随笔为你收集整理的制作lfw格式的数据集的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: android 横向铺满,Android
- 下一篇: LeNet论文全文翻译《Gradient