python手写lfw数据集转pair.txt形式
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                python手写lfw数据集转pair.txt形式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                python手寫lfw數據集轉pair.txt形式
最近在搞facenet的人臉識別,用到了lfw數據集,發現沒有個合適的將自己數據集轉為lfw_pair.txt的代碼,所以自己擼了一個。
數據集用的就是lfw,文件夾是名字,名字文件夾內放的就是人臉圖像。沒有其他文件所有沒有做是否是圖像的校驗。
主要思路就是根據lfw的要求,匹配數據通過同一個人有多張人臉構造,不匹配數據通過不同文件夾的內容構造。
利用python的set數據結構去重特性,一直往里面加就行了,加到數量夠了就break。
然后將兩個set集合都轉為list,根據順序構造lfw_pair.txt,構造時參考了原來的排序方式,做了sorted。
歡迎批評指教喲
# -*- coding: utf-8 -*- # @Time : 2022/3/21 14:39 # @Author : ChangXinliang # @Software: PyCharmimport os.path import random import osdef create_matched_result(lfw_dir, all_number):matched_result = set()# 獲取所有數據名字names = os.listdir(lfw_dir)while len(matched_result) < all_number:for name in names:length = len(os.listdir(os.path.join(lfw_dir, name)))if length <= 1:continueelse:# 構造兩個隨機數number_1, number_2 = sorted(random.sample(range(1, length + 1), 2))s = name + '\t' + str(number_1) + '\t' + str(number_2)# 沒有必要做判斷,set會自行處理matched_result.add(s)if len(matched_result) == all_number:breakreturn list(matched_result)def create_unmatched_result(lfw_dir, all_number):unmatched_result = set()names = os.listdir(lfw_dir)while len(unmatched_result) < all_number:# 隨機取兩個名字name1, name2 = sorted(random.sample(names, 2))numbers = []for name in [name1, name2]:images = os.listdir(os.path.join(lfw_dir, name))# 隨機取人臉number = random.sample(range(1, len(images) + 1), 1)[0]numbers.append(number)# 沒有必要做判斷,set會自行處理s = name1 + '\t' + str(numbers[0]) + '\t' + name2 + '\t' + str(numbers[1])unmatched_result.add(s)return list(unmatched_result)if __name__ == '__main__':# 圖片數據文件夾lfw_dir = 'lfw'# 重復次數repeat_count = 10# 每次匹配數量pair_number = 300# 總數量all_number = repeat_count * pair_number# 構造同一張人臉的集合matched_result = create_matched_result(lfw_dir, all_number)# 構造不同人臉的集合unmatched_result = create_unmatched_result(lfw_dir, all_number)out_path = r'lfw_pair.txt'with open(out_path, 'w') as f:f.write('%d %d\n' % (repeat_count, pair_number))for i in range(repeat_count):for pair in sorted(matched_result[i * pair_number: (i + 1) * pair_number]):f.write(pair + '\n')for pair in sorted(unmatched_result[i * pair_number: (i + 1) * pair_number]):f.write(pair + '\n')總結
以上是生活随笔為你收集整理的python手写lfw数据集转pair.txt形式的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: java 接口和抽象类的区别6_JAVA
 - 下一篇: Android免root字体,字体大师免