facenet中pairs文件制作
1.对图片进行重命名 """Rename the image based on the folder name""" import os
import shutil
import sys
import argparse def main(args):
original_path = args.data_dir
original_path = original_path + "/"
saved_path = args.save_dir
saved_path = saved_path + "/"
make_path(saved_path)
all_folders = traversalDir_FirstDir(original_path)
for folder in all_folders:
files = os.listdir(original_path + folder)
i = 1
for file in files:
suffix = '.png'
name = folder + '_' + str(i).zfill(4) + suffix
i = i + 1
sub_saved_path = saved_path + folder
make_path(sub_saved_path)
shutil.copyfile(original_path + folder + '/' + file, sub_saved_path + '/' + name)
print("rename over") # To get all sub folders in one folder
def traversalDir_FirstDir(path):
list = []
if (os.path.exists(path)):
files = os.listdir(path)
print("files",files)
for file in files:
m = os.path.join(path, file)
print("m",m)
if (os.path.isdir(m)):
h = os.path.split(m)
print("h",h)
list.append(h[1])
return list # To judge whether a folder is existed.
def make_path(path):
if not os.path.exists(path):
os.makedirs(path) def parse_arguments(argv):
parser = argparse.ArgumentParser()
parser.add_argument('data_dir', type=str, help='Directory with aligned images.')
parser.add_argument('save_dir', type=str, help='Directory to save renamed images.')
return parser.parse_args(argv) if __name__ == '__main__':
main(parse_arguments(sys.argv[1:])) 2.生成pairs文件
#!/usr/bin/env python
# _*_ 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.
"""
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'
def generate(self):
# The repeate times. You can edit this number by yourself
folder_number = self.get_folder_numbers()
# This step will generate the hearder for pair_list.txt, which contains
# the number of classes and the repeate times of generate the pair
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):
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)
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))
file2 = random.choice(os.listdir(self.data_dir + other_dir))
f.write(name + "\t" + file1.split("_")[1].lstrip("0").rstrip(self.img_ext) \
+ "\t" + other_dir + "\t" + file2.split("_")[1].lstrip("0").rstrip(self.img_ext) + "\n") def parse_arguments(argv):
parser = argparse.ArgumentParser()
parser.add_argument('data_dir', type=str, help='Directory with aligned images.')
parser.add_argument('saved_dir', type=str, help='Directory to save pairs.')
parser.add_argument('--repeat_times', type=str, help='Repeat times to generate pairs', default=30)
return parser.parse_args(argv) if __name__ == '__main__':
generatePairs = GeneratePairs(parse_arguments(sys.argv[1:]))
generatePairs.generate()
facenet中pairs文件制作的更多相关文章
- [转]MSI安装程序中的文件替换
原文链接:http://teach.hanzify.org/article/652-1233562028.html 前言 最近有汉化朋友问起如何不重新制作MSI文件,而直接用汉化好的文件替换MSI安装 ...
- 如何利用excel中的数据源制作数据地图
关于这个问题,制作数据地图的方法已不新奇,总体来说有这么几类方案: 一类方案:直接在excel里制作 优势:个人小数据量应用较为方便简单 缺点:需要熟悉VBA,且更强大的功能对VBA水平要求较高 1. ...
- Radmin Server-3.5 完美绿色破解版(x32 x64通用) 第三版 + 单文件制作方法
Radmin Server v3.5 汉化破解绿色版(x32 x64通用) 第三版 下载链接: https://pan.baidu.com/s/1qYVcSQo 2016年7月8日更新第三版1.修复在 ...
- linux中Makefile文件相关内容
第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...
- 安装文件制作工具Wix概念快速入门
前言 Wix==Windows installer XML 顾名思议. 用于制作WINDOWS安装文件的XML格式的描述文件. 因为其实现方式为基于声明的方式,而非命令的方式. 特整理一下其相关的概念 ...
- iOS 服务器端推送证书p12文件制作
A.苹果服务器地址: Production和development用的push的服务器不同pdev是:$apnsHost = 'gateway.sandbox.push.apple.com';pro是 ...
- iOS静态库.a文件制作和导入使用
iOS静态库.a文件制作: 1.新建Cocoa Touch Static Library工程 新建工程 - 选择iOS-FrameWork&Libary,选择 Cocoa Touch Stat ...
- -05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作
2011-07-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作 ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp ...
- iOS 库文件制作
一.静态库和动态库的介绍 一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链 ...
随机推荐
- 【Zookeeper】利用zookeeper搭建Hdoop HA高可用
HA概述 所谓HA(high available),即高可用(7*24小时不中断服务). 实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA. ...
- Altera DDR2控制器学习笔记
Altera DDR2控制器使用IP的方式实现,一般很少自己写控制器代码. ddr22 ddr22_inst ( .aux_full_rate_clk (mem_aux_full_rate_clk), ...
- python3使用tkinter之Menu坑
添加菜单之后,下拉菜单的第一行是一条虚线,点击会在窗口的左上角独立显示下拉菜单,如下图所示: 去掉的方法是:创建文件菜单的时候,添加 tearoff=0参数 tearoff 有 0 和 1 两个值,分 ...
- pycharm右键运行unittest、pytest文件
在实际学习过程中,有时候会出现右键运行文件,但没有任何结果的情况.这就是没有使用unittest/pytest 的方式运行. 解决方法: 添加好
- [CF544D]Destroying Roads_最短路_bfs
D. Destroying Roads 题目大意: In some country there are exactly n cities and m bidirectional roads conne ...
- 22.把hive表中数据导入到mysql中
先通过可视化工具链接mysql,在链接的时候用sqoop 用户登录 在数据库userdb下新建表 保存,输入表名upflow 现在我们需要把hive里面的数据通过sqoop导入到mysql里面 sqo ...
- 微信图片上传 wx.Imagechoose
拍照或从手机相册中选图接口 wx.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩 ...
- [转帖]yum与apt-get的区别以及两者更新源(阿里/网易【163】)
yum与apt-get的区别以及两者更新源(阿里/网易[163]) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/one_super_dreamer ...
- [转帖]InfluxDB 1.2.0安装及新旧版本的注意事项
InfluxDB 1.2.0安装及新旧版本的注意事项 http://haibing.org/245?zwlqby=npztq3 挺好的文章 很好的解决了 上一个文档里面 关于 web admin 的问 ...
- linux用户和组 之 用户管理
一. linux 用户和组的基本介绍 1.linux下 有三种用户: 1. root: 权限最大的. 2. 系统用户: UID小于1000的.系统服务管理用户,一般是不允许登录系统的.(比如mysql ...