以下链接是个人关于insightFace所有见解,如有错误欢迎大家指出,我会第一时间纠正,如有兴趣可以加QQ:17575010159 相互讨论技术。
人脸识别0-00:insightFace目录:https://blog.csdn.net/weixin_43013761/article/details/99646731:
这是本人项目的源码:https://github.com/944284742/1.FaceRecognition
其中script目录下的文件为本人编写,主要用于适应自己的项目,可以查看该目录下的redeme文件。

数据制作

为了简单,已经还是拿LWF数据来做讲解,制作bin文件之前,我们需要一个pairs.txt文件,那么这个文件给干嘛的?为什么需要一个这样的文件?首先我们来看看,该文件的内容格式:

Jane_Pauley  0002    0001
Andre_Agassi    0017    0007
Blythe_Hartley  0001    0002
Natalie_Cole    0003    0002
......
......
Mary_Catherine_Correll  0001    Hilda_Fortune   0001
Ronnie_Jagday   0001    Christopher_Conyers 0001
Bob_Stoops  0001    Steve_Coterill  0001
Gillian_Anderson    0001    Mike_Flanagan   0001

可以看到该文件主要有两种格式,第一种为每行3个内容(相同图片),第二种为每行4个内容(不相同图片)主要解释如下:

Jane_Pauley  0002    0001
#在Jane_Pauley目录下的Jane_Pauley_0002.jpg与Jane_Pauley_0001.jpg为相同的一个人
Ronnie_Jagday    0001    Christopher_Conyers 0001
#在Ronnie_Jagday目录下的Ronnie_Jagday_0001.jpg
#与Christopher_Conyers_0001目录下Christopher_Conyers_0001.jpg不是相同的一个人

在源码中没有生成pairs.txt文件的脚本,在这里为大家提供一分,负责粘贴即可,insightface-master\script\generate_pairs_txt.py:

# coding:utf-8
import glob
import os.path
import numpy as np
import os
import re
'''
创建验证集bin的pairs.txt
'''
import random
# 图片数据文件夹
INPUT_DATA = '/data/zwh/1.FaceRecognition/2.Dataset/2.PaidOnData/2.Dataset_divi/1.ShunDe/4.dataset_divi/pack2/test'
pairs_file_path = '/data/zwh/1.FaceRecognition/2.Dataset/2.PaidOnData/2.Dataset_divi/1.ShunDe/4.dataset_divi/pack2/test/pairs.txt'rootdir_list = os.listdir(INPUT_DATA)
idsdir_list = [name for name in rootdir_list if os.path.isdir(os.path.join(INPUT_DATA, name))]id_nums = len(idsdir_list)def produce_same_pairs():matched_result = []  # 不同类的匹配对for j in range(6000):id_int= random.randint(0,id_nums-1)id_dir = os.path.join(INPUT_DATA, '%08d'% id_int)id_imgs_list = os.listdir(id_dir)id_list_len = len(id_imgs_list)id1_img_file = id_imgs_list[random.randint(0,id_list_len-1)]id2_img_file = id_imgs_list[random.randint(0,id_list_len-1)]id1_path = os.path.join(id_dir, id1_img_file)id2_path = os.path.join(id_dir, id2_img_file)same = 1#print([id1_path + '\t' + id2_path + '\t',same])matched_result.append((id1_path + '\t' + id2_path + '\t',same))return matched_resultdef produce_unsame_pairs():unmatched_result = []  # 不同类的匹配对for j in range(6000):id1_int = random.randint(0,id_nums-1)id2_int = random.randint(0,id_nums-1)while id1_int == id2_int:id1_int = random.randint(0,id_nums-1)id2_int = random.randint(0,id_nums-1)id1_dir = os.path.join(INPUT_DATA, '%08d'% id1_int)id2_dir = os.path.join(INPUT_DATA, '%08d'% id2_int)id1_imgs_list = os.listdir(id1_dir)id2_imgs_list = os.listdir(id2_dir)id1_list_len = len(id1_imgs_list)id2_list_len = len(id2_imgs_list)id1_img_file = id1_imgs_list[random.randint(0, id1_list_len-1)]id2_img_file = id2_imgs_list[random.randint(0, id2_list_len-1)]id1_path = os.path.join(id1_dir, id1_img_file)id2_path = os.path.join(id2_dir, id2_img_file)same = 0unmatched_result.append((id1_path + '\t' + id2_path + '\t',same))return unmatched_resultsame_result = produce_same_pairs()
unsame_result = produce_unsame_pairs()all_result = same_result + unsame_resultrandom.shuffle(all_result)
#print(all_result)file = open(pairs_file_path, 'w')
for line in all_result:file.write(line[0] + str(line[1]) + '\n')file.close()

运行时,只需要设定src以及dst即可,就能生成pairs.txt文件,然后运行script/mydata2pack.py(该文件是本人自己编写)

import mxnet as mx
from mxnet import ndarray as nd
import argparse
import pickle
import sys
import os
import numpy as np
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'eval'))parser = argparse.ArgumentParser(description='Package LFW images')
# general
parser.add_argument('--data-dir', default='/data/zwh/1.FaceRecognition/2.Dataset/2.PaidOnData/2.DataDivi/1.Shunde/5.dataset_divi/pack3/test', help='')
parser.add_argument('--image-size', type=str, default='112,112', help='')
parser.add_argument('--output', default='/data/zwh/1.FaceRecognition/2.Dataset/2.PaidOnData/2.DataDivi/1.Shunde/5.dataset_divi/pack3/test/shunde.bin', help='path to save.')
args = parser.parse_args()
lfw_dir = args.data_dir
image_size = [int(x) for x in args.image_size.split(',')]def read_pairs(pairs_filename):pairs = []with open(pairs_filename, 'r') as f:for line in f.readlines():pair = line.strip().split()pairs.append(pair)return np.array(pairs)def get_paths(data_dir, pairs, file_ext):nrof_skipped_pairs = 0path_list = []issame_list = []for pair in pairs:if len(pair) == 3:path0 = os.path.join(data_dir, pair[0])path1 = os.path.join(data_dir, pair[1])if int(pair[2]) == 1:issame = Trueelse:issame = Falseelif len(pair) == 4:path0 = os.path.join(data_dir, pair[0], pair[0] + '_' + '%04d' % int(pair[1]) + '.' + file_ext)path1 = os.path.join(data_dir, pair[2], pair[2] + '_' + '%04d' % int(pair[3]) + '.' + file_ext)issame = Falseif os.path.exists(path0) and os.path.exists(path1):  # Only add the pair if both paths existpath_list += (path0, path1)issame_list.append(issame)else:print('not exists', path0, path1)nrof_skipped_pairs += 1if nrof_skipped_pairs > 0:print('Skipped %d image pairs' % nrof_skipped_pairs)return path_list, issame_listdata_pairs = read_pairs(os.path.join(lfw_dir, 'pairs.txt'))
data_paths, issame_list = get_paths(lfw_dir, data_pairs, 'jpg')
print(len(data_paths))
print(len(issame_list))lfw_bins = []
#lfw_data = nd.empty((len(lfw_paths), 3, image_size[0], image_size[1]))
i = 0
for path in data_paths:with open(path, 'rb') as fin:_bin = fin.read()lfw_bins.append(_bin)#img = mx.image.imdecode(_bin)#img = nd.transpose(img, axes=(2, 0, 1))#lfw_data[i][:] = imgi+=1if i%1000==0:print('loading data', i)with open(args.output, 'wb') as f:pickle.dump((lfw_bins, issame_list), f, protocol=pickle.HIGHEST_PROTOCOL)

指定输入以及输出目录即可就能生成.bin文件。bin文件的测试可以参考之前的链接:
人脸识别0-1:insightFace-模型复现-史上最全:(https://blog.csdn.net/weixin_43013761/article/details/99647292

在测试之前,我们需要配置insightface-master\recognition\config.py文件,

dataset.retina.val_targets = ['lfw', 'cfp_fp', 'agedb_30']
dataset.emore.val_targets = ['lfw', 'cfp_fp', 'agedb_30']

只需要在其中添加你自己的.bin文件,训练时,会以其为目标进行测试。现在对于源码的操作流程基本弄明白了,接下来开始分析源码的每一个细节。如果大家觉得不错,希望可以给个赞,你的赞是我的动力。

人脸识别0-03:insightFace-测试集数据制作-史上最全相关推荐

  1. 人脸识别0-02:insightFace-模型训练与训练数据制作-史上最全

    以下链接是个人关于insightFace所有见解,如有错误欢迎大家指出,我会第一时间纠正,如有兴趣可以加QQ:944284742相互讨论技术. 人脸识别0-00:insightFace目录:https ...

  2. 【前沿技术】美国脑计划2.0!投5亿美元,绘制史上最全人脑地图

    来源:智能研究院 [新智元导读]今天,脑科学计划宣布启动的「细胞图谱网络项目」,目标是绘制世界上最全面的人类大脑细胞图谱.这种雄心,堪比当年的人类基因组计划. 今天,美国国立卫生研究院(NIH)宣布了 ...

  3. 中标麒麟5.0安装(内含安装包)-小白手把手史上最全教程!

    首先插入一个剩余空间至少4G的U盘或光盘! 安装包: 链接:https://pan.baidu.com/s/1DST7mxjV3ImQS2d1f7HXpg 提取码:80uy 1.将压缩包解压 2.打开 ...

  4. 压力测试实战,压力测试步骤压力测试数据 (史上最全最详细教程)

    目录:导读 前言 一.为什么准备数据 二.测试数据分类 三.测试数据准备要求 四.测试数据准备思路 五.总结 前言 压力测试只有在服务器处于高压状态时,才能真正反映各种设置暴露出来的问题.现在很多压力 ...

  5. 人脸识别2:InsightFace实现人脸识别Face Recognition(含源码下载)

    人脸识别2:InsightFace实现人脸识别Face Recognition(含源码下载) 目录 人脸识别2:InsightFace实现人脸识别Face Recognition(含源码下载) 1. ...

  6. 人脸识别0-01:insightFace-模型复现-史上最全

    以下链接是个人关于insightFace所有见解,如有错误欢迎大家指出,我会第一时间纠正,如有兴趣可以加微信:17575010159 相互讨论技术. 人脸识别0-00:insightFace目录:ht ...

  7. Vue2.0史上最全入坑教程(中)—— 脚手架代码详解

    2019独角兽企业重金招聘Python工程师标准>>> 书接上文我们说道,如何利用脚手架(vue-cli)构建一个vue项目,本回书我们一起来学习分析下代码. 回顾下创建后的项目目录 ...

  8. 人脸识别开源项目--insightface

    目录 1 insightface简介 2 安装insightface 3 使用insightface 4 结合Flask框架 1 insightface简介 最近人脸识别等机器学习的项目很火,偶然间发 ...

  9. 人脸识别有漏洞!测试的19款国产手机全部被破解

    近日,清华大学人工智能研究院对20款手机的人脸识别功能进行测试,结果发现除了一款iPhone 11外,其余的19部安卓手机在15分钟内全部解锁. 这也就意味着,这19款手机只要搭载了人脸识别功能的应用 ...

最新文章

  1. php 运维系统开发,PHP开发运维管理系统笔记
  2. linux LVM 系统盘扩容
  3. Java代码规范、格式化和checkstyle检查配置文档
  4. 动态字段插入及查询redis小结
  5. 计算力学专业和计算机专业区别,力学类包括哪些专业
  6. java map大小_Java中HashMap的size()方法: HashMap.size() - Break易站
  7. 在URL中使用另一个url作为参数时会被``截断的问题
  8. oracle pga建议值,Oracle PGA作用
  9. HTML5关于上传API的一些使用(上)
  10. 精确打印程序的运行时间
  11. Java 发送 Http请求工具类
  12. Java中使用poi导入、导出Excel
  13. ValueError: Object arrays cannot be loaded when allow_pickle=False 报错解决
  14. C语言实现简易计算器
  15. python参考手册第四版_Python参考手册 PDF 第4版
  16. html css 博客园,分享几个博客园代码样式的CSS配置(复制黏贴即可)
  17. 大华设备无法注册EasyGBS国标视频平台,是什么原因?
  18. 《长安十二时辰》中的计算社会学 | 数据科学赋能人文创新论坛
  19. 网易彩票APP:世界杯竞彩 细节定成败
  20. html5 video标签播放视频流解决方案

热门文章

  1. Python:向ndarray中插入一个元素
  2. Spring事务管理一:Spring事务管理的优点
  3. 和利时PLC主从站通讯
  4. 怎么批量新建文件夹并命名?
  5. 面试蚂蚁金服(意外拿到offer)分享四面经历,从线程锁到数据库
  6. android怎么加矩形框,Android shape 矩形框子
  7. 【安卓培训 App培训】自动释放内存!Android图片库Fresco
  8. wireless tools工具的移植和使用
  9. 算法设计 (分治法应用实验报告)基于分治法的合并排序、快速排序、最近对问题
  10. 网络安全关于Windows下BAT脚本使用