按照lfw pairs.txt的格式生成自己的pairs.txt
生活随笔
收集整理的這篇文章主要介紹了
按照lfw pairs.txt的格式生成自己的pairs.txt
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、把自己的數(shù)據(jù)集按照官方命名格式修改
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Fri Oct 18 11:29:55 2019 change the name of the image @author: cong """import os #import re imgs_path = '/home/cong/facenet/dataset/foda_imgs'if os.path.isdir(imgs_path):for s in os.listdir(imgs_path):newdir=os.path.join(imgs_path,s)#print(newdir)filenames = os.listdir(newdir)filenames.sort()for name in filenames:newname = newdir.split('/')[-1]os.rename(newdir + '/' + name, os.path.join(newdir, newname + '_' + '%04d' % int(filenames.index(name)+1)) + '.png')#print(newname)2、生成自己的pairs.txt。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Fri Oct 18 13:38:56 2019@author: cong """import glob import os.path import numpy as np import os from itertools import combinations # 圖片數(shù)據(jù)文件夾 INPUT_DATA = '/home/cong/facenet/dataset/foda_imgs'def create_image_lists():matched_result = set()k = 0# 獲取當前目錄下所有的子目錄,這里x 是一個三元組(root,dirs,files),第一個元素表示INPUT_DATA當前目錄,# 第二個元素表示當前目錄下的所有子目錄,第三個元素表示當前目錄下的所有的文件sub_dirs = [x[0] for x in os.walk(INPUT_DATA)]for sub_dir in sub_dirs[1:]:# 獲取當前目錄下所有的有效圖片文件extensions = 'png'# 把圖片存放在file_list列表里file_list = []# os.path.basename(sub_dir)返回sub_sir最后的文件名file0_list = []dir_name = os.path.basename(sub_dir)file_glob = os.path.join(INPUT_DATA, dir_name, '*.' + extensions)# glob.glob(file_glob)獲取指定目錄下的所有圖片,存放在file_list中file_list.extend(glob.glob(file_glob))file0_list.extend(glob.glob(file_glob))file0_list.sort()# 通過目錄名獲取類別的名稱label_name = dir_name#print(label_name)length = len(file_list)d_com = []d = np.arange(length)for i,j in combinations(d, 2):d_com.append([i,j])base_name1 = file0_list.index(file_list[i])+1 # 獲取文件的名稱base_name2 = file0_list.index(file_list[j])+1s = label_name+'\t'+str(base_name1)+'\t'+str(base_name2)if s not in matched_result:# 將當前類別的數(shù)據(jù)放入結(jié)果字典matched_result.add(label_name +'\t'+ str(base_name1)+ '\t'+ str(base_name2))k = k + 1#print(len(matched_result))# 返回整理好的所有數(shù)據(jù)return matched_result, kdef create_pairs():unmatched_result = set() # 不同類的匹配對k = 0sub_dirs = [x[0] for x in os.walk(INPUT_DATA)]# sub_dirs[0]表示當前文件夾本身的地址,不予考慮,只考慮他的子目錄for sub_dir in sub_dirs[1:]:# 獲取當前目錄下所有的有效圖片文件extensions = ['png']file_list = []# 把圖片存放在file_list列表里dir_name = os.path.basename(sub_dir)for extension in extensions:file_glob = os.path.join(INPUT_DATA, dir_name, '*.'+extension)# glob.glob(file_glob)獲取指定目錄下的所有圖片,存放在file_list中file_list.extend(glob.glob(file_glob))length_of_dir = len(sub_dirs)a = np.arange(1,length_of_dir)a_com = []for i,j in combinations(a, 2):#print(i,j)a_com.append([i,j])class1 = sub_dirs[i]class2 = sub_dirs[j]# print(class1,'\n',class2)class1_name = os.path.basename(class1)class2_name = os.path.basename(class2)# 獲取當前目錄下所有的有效圖片文件extensions = 'png'file_list1 = []file_list11 = []file_list2 = []file_list22 = []# 把圖片存放在file_list列表里file_glob1 = os.path.join(INPUT_DATA, class1_name, '*.' + extension)file_list1.extend(glob.glob(file_glob1))file_list11.extend(glob.glob(file_glob1))file_list11.sort()file_glob2 = os.path.join(INPUT_DATA, class2_name, '*.' + extension)file_list2.extend(glob.glob(file_glob2))file_list22.extend(glob.glob(file_glob2))file_list22.sort()len_of_file = len(file_list1)if file_list1 and file_list2:b = np.arange(len_of_file)b_com = []for m,n in combinations(b, 2):#print(m,n)b_com.append([m,n])base_name1 = file_list11.index(file_list1[m % len(file_list1)])+1 # 獲取文件的名稱base_name2 = file_list22.index(file_list2[n % len(file_list2)])+1# unmatched_result.add([class1_name, base_name1, class2_name, base_name2])s = class1_name+'\t'+str(base_name1)+'\t'+class2_name+'\t'+str(base_name2)if s not in unmatched_result:unmatched_result.add(class1_name+'\t'+str(base_name1)+'\t'+ class2_name+'\t'+str(base_name2))k = k + 1return unmatched_result, kresult, k1 = create_image_lists() print(len(result)) # print(result)result_un, k2 = create_pairs() print(len(result_un)) # print(result_un)file = open('/home/cong/facenet/data/pairs_foda.txt', 'w')result1 = list(result) result2 = list(result_un)file.write('10 300\n')j = 0 for i in range(10):j = 0print("=============================================第" + str(i) + '次, 相同的')for pair in result1[i*200:i*200+200]:j = j + 1print(str(j) + ': ' + pair)file.write(pair + '\n')print("=============================================第" + str(i) + '次, 不同的')for pair in result2[i*200:i*200+200]:j = j + 1print(str(j) + ': ' + pair)file.write(pair + '\n')?
總結(jié)
以上是生活随笔為你收集整理的按照lfw pairs.txt的格式生成自己的pairs.txt的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle Demo库默认用户/密码为
- 下一篇: 如何设置软件开机自启