日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

仿照LFW的pair.txt生成自己数据集的txt文件

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 仿照LFW的pair.txt生成自己数据集的txt文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在跑facenet的valida_on_lfw.py的樣例,想要在自己的數據集上運行該代碼。
關于pair.txt的描述,見http://vis-www.cs.umass.edu/lfw/README.txt
編寫代碼生成自己的pair.txt文件:

import glob import os.path import numpy as np import os# 圖片數據文件夾 INPUT_DATA = r'F:\dataset\MIX'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)]while len(matched_result) < 3000:for sub_dir in sub_dirs[1:]:# 獲取當前目錄下所有的有效圖片文件extensions = 'png'# 把圖片存放在file_list列表里file_list = []# os.path.basename(sub_dir)返回sub_sir最后的文件名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))if not file_list: continue# 通過目錄名獲取類別的名稱label_name = dir_namelength = len(file_list)random_number1 = np.random.randint(50)random_number2 = np.random.randint(50)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]):# 將當前類別的數據放入結果字典matched_result.add(label_name +'\t'+ base_name1+ '\t'+ base_name2)k = k + 1# 返回整理好的所有數據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)for j in range(24):for i in range(length_of_dir):class1 = sub_dirs[i]class2 = sub_dirs[(length_of_dir-i+j-1) % length_of_dir]if ((length_of_dir-i+j-1) % length_of_dir):class1_name = os.path.basename(class1)class2_name = os.path.basename(class2)# 獲取當前目錄下所有的有效圖片文件extensions = 'png'file_list1 = []file_list2 = []# 把圖片存放在file_list列表里file_glob1 = os.path.join(INPUT_DATA, class1_name, '*.' + extension)file_list1.extend(glob.glob(file_glob1))file_glob2 = os.path.join(INPUT_DATA, class2_name, '*.' + extension)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)])# unmatched_result.add([class1_name, base_name1, class2_name, base_name2])s = class2_name+'\t'+base_name2+'\t'+class1_name+'\t'+base_name1if(s not in unmatched_result):unmatched_result.add(class1_name+'\t'+base_name1+'\t'+class2_name+'\t'+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(r'F:\dataset\pairs.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*300:i*300+300]:j = j + 1print(str(j) + ': ' + pair)file.write(pair + '\n')print("=============================================第" + str(i) + '次, 不同的')for pair in result2[i*300:i*300+300]:j = j + 1print(str(j) + ': ' + pair)file.write(pair + '\n')

完成以后再修改一下lfw.py中get_paths()的代碼,

修改為:

for pair in pairs:if len(pair) == 3:path0 = os.path.join(lfw_dir, pair[0], pair[1])path1 = os.path.join(lfw_dir, pair[0], pair[2])issame = Trueelif len(pair) == 4:path0 = os.path.join(lfw_dir, pair[0], pair[1])path1 = os.path.join(lfw_dir, pair[2], pair[3])issame = Falseif os.path.exists(path0) and os.path.exists(path1): # Only add the pair if both paths existpath_list += (path0, path1)issame_list.append(issame)else:print(pair)nrof_skipped_pairs += 1

總結

以上是生活随笔為你收集整理的仿照LFW的pair.txt生成自己数据集的txt文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。