insightface数据制作全过程记录
更新到新帖子中,各位看这里把
https://blog.youkuaiyun.com/CLOUD_J/article/details/100672392
测试insightface时发现需要调整数据,
insigtface/datasets属于存放数据的目录,insightface/src/data中存放了数据处理的一些代码,包括rec文件生成。
1数据对齐
我们用lfw数据做实验,你也可以自己找数据。
lfw数据
http://vis-www.cs.umass.edu/lfw/
我下载的是这个原图像https://drive.google.com/file/d/1p1wjaqpTh_5RHfJu4vUh8JJCdKwYMHCp/view?usp=sharing
datasets/lfwdata下存放数据
lfwdata下分目录存放每一类的数据,每个人一个文件夹,里面存图。
在src/align里提供了人脸对齐的代码,检测加对齐
python3 align_lfw.py --input-dir ../../datasets/lfwdata --output-dir ../../datasets/lfw2
注意:这里cfp-fp数据集的对齐和lfw不一样,原因在于目录层级不一样,cfp-fp数据目录下每个person还分正脸侧脸,所以在遍历时不太一致,我们又写了align_cfp.py文件。
这里我们复制一份align_lfw.py到align_cfp.py。然后改main函数里
1、数据路径遍历方式变为ytf,这个你去看face_image有定义
dataset = face_image.get_dataset('ytf', args.input_dir)
print('dataset size', 'lfw', len(dataset))
2、113行改一下生成新的路径存储图片这里
img = img[:,:,0:3]
_paths = fimage.image_path.split('/')
a,b,c = _paths[-3], _paths[-2],_paths[-1]
2生成list文件
这里insightface提供的face2rec2不能生成list,所以我们找了个程序稍后上传,用im2rec.py,这个程序也是生成rec的,我们加上参数–list 就生成lst文件 --recursive代表遍历文件下所有目录。
…/…/datasets/lfw/lfw输出目录最后lfw代表list的名字,不用加后缀。
…/…/datasets/lfw2图片目录
python3 im2rec.py --list --recursive ../../datasets/lfw/train ../../datasets/lfw2
补充必看,在做triplet时发现这种生成list的形式有问题,改为以下方法
先用附录2这个文件生成list,再用face2rec2.py文件生成rec和idx文件
3生成rec &idx 文件(依托于list)
生成rec文件,把–list去掉
…/…/datasets/lfw/train.lst代表lst的目录
…/…/datasets/lfw2原图存在的目录
python3 im2rec.py ../../datasets/lfw/train.lst ../../datasets/lfw2
4创建property配置文件
直接创建一个名为property的文件,没有后缀
写1000,112,112代表ID数量,尺寸,尺寸
目前datasets/lfw/目录下存在train.idx train.lst train.rec
5 创建pair文件
为了做测试我们需要生成验证集用的bin文件,bin文件生成前需要做pair文件,就是一对一对的数据,每一行分别是
图A的目录 空格 图B的目录 空格 标志0/1(代表两张图类别一致否)

利用generate_image_pairs.py(源文件有问题,已修改)
稍后上传,附录有
…/…/datasets/lfw2对齐图像目录
…/…/datasets/lfw/train.txt存放txt
100要多少个数据
python3 generate_image_pairs.py --data-dir ../../datasets/lfw2 --outputtxt ../../datasets/lfw/train.txt --num-samepairs 100
注意:这里生成pairs的方法不太好,数据集给了一些标准的pairs文件,我们可以写一个脚本取解读,具体如下:
lfw在insightface里面有pair.txt
cfp没有,只有一组FP对,需要我们自己写个脚本,这里我写好了上传来。我们依然放到src/data下cfp_make_bin.py
cfp给了这个目录有一组对
import mxnet as mx
from mxnet import ndarray as nd
import argparse
import pickle
import sys
import os
parser = argparse.ArgumentParser(description='Package LFW images')
# general
parser.add_argument('--data-dir', default='', help='')
parser.add_argument('--image-size', type=str, default='112,112', help='')
parser.add_argument('--output', default='', help='path to save.')
parser.add_argument('--num-samepairs',default=100)
args = parser.parse_args()
data_dir = args.data_dir
image_size = [int(x) for x in args.image_size.split(',')]
pairs_end = []
def get_paths():
pairs = []
prefix = os.path.join(data_dir,'Protocol/')
#prefix = "/Split/"
prefix_F = os.path.join(prefix, "Pair_list_F.txt")
pairs_F = []
prefix_P = os.path.join(prefix,"Pair_list_P.txt")
pairs_P = []
pairs_end = []
issame_list = []
#读pairlist文件
with open(prefix_F, 'r') as f:
for line in f.readlines()[0:]:
pair = line.strip().split()
pairs_F.append(pair

本文详述InsightFace人脸识别框架所需数据的准备过程,包括数据对齐、list文件生成、rec文件创建等关键步骤,适用于lfw和cfp-fp数据集。

最低0.47元/天 解锁文章
2034





