insightface数据制作全过程记录

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

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
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值