首页 > 其他分享 >facenet生成自己的pairs.txt

facenet生成自己的pairs.txt

时间:2022-10-10 18:23:31浏览次数:55  
标签:pairs self facenet split txt data dir

# _*_ coding:utf-8 _*_
import os
import random
import argparse  
import sys
class GeneratePairs:
    """
    Generate the pairs.txt file for applying "validate on LFW" on your own datasets.
    """
    #写成命令行格式就用args解析参数
    # def __init__(self, args):
    #     """
    #     Parameter data_dir, is your data directory.
    #     Parameter pairs_filepath, where is the pairs.txt that belongs to.
    #     Parameter img_ext, is the image data extension for all of your image data.
    #     """
    #     self.data_dir = args.data_dir
    #     self.data_dir =self.data_dir + "/"
    #     self.pairs_filepath = args.saved_dir + "/" + 'pairs.txt'
    #     self.repeat_times = int(args.repeat_times)
    #     self.img_ext = '.png'
    #在pycharm上直接运行,就用这种直接修改参数的方法比较方便,自己选择
    def __init__(self):
        """
        Parameter data_dir, is your data directory.
        Parameter pairs_filepath, where is the pairs.txt that belongs to.
        Parameter img_ext, is the image data extension for all of your image data.
        """
        self.data_dir = 'my_data/my_dataset_align'
        self.data_dir =self.data_dir + "/"    #验证集路径
        self.pairs_filepath = '../data' + "/" + 'my_pairs.txt'    #pairs.txt存放路径
        self.repeat_times = int(30)
        # self.img_ext = '.png'  #因为我自己验证集png和jpg格式都有,所以不固定图片格式后缀
    def generate(self):
        # The repeate times. You can edit this number by yourself
        folder_number = self.get_folder_numbers()
        print('folder_number--',folder_number)
        # This step will generate the hearder for pair_list.txt, which contains
        # the number of classes and the repeate times of generate the pair
        #如果存在旧的pairs先删除
        if os.path.exists(self.pairs_filepath):    
            os.remove(self.pairs_filepath)
        #删完重开一个pair.txt
        if not os.path.exists(self.pairs_filepath):
            with open(self.pairs_filepath,"a") as f:
                f.write(str(self.repeat_times) + "\t" + str(folder_number) + "\n")
        for i in range(self.repeat_times):
            print('第 %d 次:'%int(i))
            self._generate_matches_pairs()
            self._generate_mismatches_pairs()
 
    def get_folder_numbers(self):
        count = 0
        for folder in os.listdir(self.data_dir):
            if os.path.isdir(self.data_dir + folder):
                count += 1
        return count
    def _generate_matches_pairs(self):
        """
        Generate all matches pairs
        """
        for name in os.listdir(self.data_dir):
            if name == ".DS_Store" or name[-3:] == 'txt':
                continue
            a = []
            for file in os.listdir(self.data_dir + name):
                if file == ".DS_Store":
                    continue
                a.append(file)
            with open(self.pairs_filepath, "a") as f:
                temp = random.choice(a).split("_") # This line may vary depending on how your images are named.
                w = temp[0]
                # l = random.choice(a).split("_")[1].lstrip("0").rstrip(self.img_ext)
                # r = random.choice(a).split("_")[1].lstrip("0").rstrip(self.img_ext)
                l = random.choice(a).split("_")[1].lstrip("0").split(".")[0]
                r = random.choice(a).split("_")[1].lstrip("0").split(".")[0]
                print ('写入 %s ,%s ,%s'%(w,l,r))
                f.write(w + "\t" + l + "\t" + r + "\n")
 
    def _generate_mismatches_pairs(self):
        """
        Generate all mismatches pairs
        """
        for i, name in enumerate(os.listdir(self.data_dir)):
            if name == ".DS_Store" or name[-3:] == 'txt':
                continue
            remaining = os.listdir(self.data_dir)
            del remaining[i]
            remaining_remove_txt = remaining[:]
            for item in remaining:
                if item[-3:] == 'txt':
                    remaining_remove_txt.remove(item)
            remaining = remaining_remove_txt
            other_dir = random.choice(remaining)
            with open(self.pairs_filepath, "a") as f:
                file1 = random.choice(os.listdir(self.data_dir + name))
                name1=file1.split("_")[0]
                file2 = random.choice(os.listdir(self.data_dir + other_dir))
                name2=file2.split("_")[0]
                f.write(name1 + "\t" + file1.split("_")[1].lstrip("0").split(".")[0] \
                        + "\t" + name2 + "\t" + file2.split("_")[1].lstrip("0").split(".")[0] + "\n")
 
 
if __name__ == '__main__':
    gen=GeneratePairs()
    gen.generate()

 

标签:pairs,self,facenet,split,txt,data,dir
From: https://www.cnblogs.com/xiaochouk/p/16776725.html

相关文章

  • python将print的数据输出到txt文件中
    前言:在写一些小的测试脚本时,需要查看一些日志,我们不会去搭建一个logger工具;而是选择直接输出到txt文件中,测试完后,也方便查看结果。在需要输出打印前面,打开txt文件,以追加的......
  • [20221008]sql profile优化失效问题.txt
    [20221008]sqlprofile优化失效问题.txt--//生产系统一条sql语句存在性能问题,使用sqlprofile优化固定执行计划,再次出现问题,以前也遇到类似的问题,做一个记录.1.环境:SY......
  • Java中如何使用Scanner类读取.txt文件呢?
    转自:http://www.java265.com/JavaJingYan/202111/16359892761682.html 文件是日常开发中,使用最多的一种东西,在操作系统中,万物都以文件的形式存在,如:磁盘,网络,内存都都以......
  • robots.txt在SEO中作用
    robots.txt是什么robots.txt是一个协议,而不是一个命令。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是......
  • 我的CMakeLists.txt模板
    我的CMakeLists.txt模板,适用于windowsSDK风格的程序,不考虑测试和安装问题.rc资源文件部分,适用windows项目。#####################################################......
  • 使用Python实现读取TXT小说文件按每一回显示打印出来
    大家好,我是皮皮。一、前言前几天在Python铂金交流群【红色基因代代传】问了一个Python处理的问题,提问截图如下:文件里边的部分截图如下:大概的需求如下所示:二、实现过程这里【......
  • 使用Python将TXT文件提取到Excel表格当中
    importrowasrowimportxlwtdefwriteinexcel():f=open('bZhanRank.txt','r',encoding='utf-8')#打开数据文本文档,注意编码格式的影响wb=xlwt.......
  • python下使用pip freeze >requirements.txt命令迁移模块
    当我们开发项目的时候,会用virtualenv创建很多python独立环境,这时候就会出现在不同环境下安装相同的模块的时候,为了避免我们通过联网下载所需模块,不如我们直接从之前pytho......
  • 【C#】TXT操作汇总
    一、读写TXT///<summary>///读取txt///</summary>publicstaticstring[]ReadTxt(stringpath){List<string......
  • 使用Python实现读取TXT小说文件按每一回显示打印出来
    大家好,我是皮皮。一、前言前几天在Python铂金交流群【红色基因代代传】问了一个Python处理的问题,提问截图如下:文件里边的部分截图如下:大概的需求如下所示:二、实现......