Insightface测试Megaface流程!
https://blog.csdn.net/jmu201521121021/article/details/81151758#commentBox
insightface github地址: https://github.com/deepinsight/insightface
megaface database地址: http://megaface.cs.washington.edu/
一、简介
insightface 测试megaface数据集的流程:
对megaface和 facescrub数据集中的人脸对齐
提取megaface和facescrub中对齐后人脸的特征
移除megaface和facescrub中不干净的数据特征
进行megaface测试
二、环境准备
mxnet-cu80
tensorflow
openCV2.4
三、具体步骤
1.对megaface和 facescrub数据集中的人脸对齐
cd $INSIGHTFACE_ROOT/src/align/
# 由于facescrub中的部分图片没有后缀,所以要修改图片的名称。
python align_facescrub.py --input-dir='你的facescrubs数据地址' --output-dir='对齐后保存结果地址'
# align megaface
python align_megaface.py --input-dir=你的megaface数据地址' --name=' megaface' --output-dir='对齐后保存结果地址'
(本人在跑此步骤时,没有跑align_facescrub.py,整理facescrub数据集时,一直没有成功,问题有以下几点1.有些图片没有图片后缀2.图片,文件夹里有空格3.有些.jpg实际非图片,最终采用了megaface官网提供的对其好的facescrub数据集)
2.提取megaface和 facescrub对齐后的人脸特征
cd $INSIGHTFACE_ROOT/src/megaface
# gen_mefaface.py中需要修改变量:
# parser.add_argument('--model', type=str, help='', default='../model/spherefacei-s60-p0_15_96_112_0,95') ../model/spherefacei-s60-p0_15_96_112_0代表模型的地址和开头, 95代表第95个保存的模型
# megaface_out = '/raid5data/dplearn/megaface/MegaFace_Features' #输出特征的指定地址
# facescrub_out = '/raid5data/dplearn/megaface/FaceScrub_Features'
# megaface_lst = "/raid5data/dplearn/megaface/megaface_mtcnn_112x112/lst" 对齐后的文件地址下list
# facescrub_lst = "/raid5data/dplearn/megaface/facescrubr/small_lst"
python -u gen megaface.py
(本人的变量设置:
megaface_out = '/home/songsl/f/insightface/src/megaface/MegaFace_Features'
facescrub_out = '/home/songsl/f/insightface/src/megaface/FaceScrub_Features'
megaface_lst = "/home/songsl/f/insightface/src/megaface/out_megaface/lst"
facescrub_lst = "/home/songsl/f/insightface/src/megaface/out_facescrub/lst"
)
3.移除megaface和facescrub中不干净的数据特征
cd $INSIGHTFACE_ROOT/src/megaface
# remove_noises.py 中需要修改变量
# parser.add_argument('--suffix', type=str, help='', default='r100_cm_112x112') #算法名称
# parser.add_argument('--megaface-lst', type=str, help='', default='/raid5data/dplearn/megaface/megaface_mtcnn_112x112/lst')
# parser.add_argument('--facescrub-lst', type=str, help='', default='/raid5data/dplearn/megaface/facescrubr/small_lst')
# parser.add_argument('--megaface-feature-dir', type=str, help='', default='/raid5data/dplearn/megaface/MegaFace_Features')
# parser.add_argument('--facescrub-feature-dir', type=str, help='', default='/raid5data/dplearn/megaface/FaceScrub_Features') )
# parser.add_argument('--megaface-feature-dir-out', type=str, help='', default='/opt/jiaguo/MegaFace_Features_cm')
# parser.add_argument('--facescrub-feature-dir-out', type=str, help='', default='/opt/jiaguo/FaceScrub_Features_cm')
python -u remove_noises.py
(本人的环境变量设置
parser.add_argument('--suffix', type=str, help='', default='mxsphereface20c_112x112') #r100_cm_112x112
parser.add_argument('--megaface-lst', type=str, help='', default='/home/songsl/f/insightface/src/megaface/out_megaface/lst')
parser.add_argument('--facescrub-lst', type=str, help='', default='/home/songsl/f/insightface/src/megaface/out_facescrub/lst')
parser.add_argument('--megaface-feature-dir', type=str, help='', default='/home/songsl/f/insightface/src/megaface/MegaFace_Features')
parser.add_argument('--facescrub-feature-dir', type=str, help='', default='/home/songsl/f/insightface/src/megaface/FaceScrub_Features')
parser.add_argument('--megaface-feature-dir-out', type=str, help='', default='/home/songsl/f/insightface/src/megaface/MegaFace_Features_cm')
parser.add_argument('--facescrub-feature-dir-out', type=str, help='', default='/home/songsl/f/insightface/src/megaface/FaceScrub_Features_cm')
)
4.测试megaface (注意openCV版本为2.4 !!!!)
cd $devkit_ROOT/experiments
python run_experiment.py -p $devkit_ROOT/templatelists/facescrub_uncropped_features_list.json $MegaFace_Features_cm_82的文件夹地址 $FaceScrub_Features_cm_82文件夹地址 _mxasmr50_112x112.bin $保存结果的地址
# 其中 _mxasmr50_112x112.bin是算法的名称+ .bin,由remove_noises.py中的--suffix 参数决定
(本人测试命令:使用的是facescrub croped的图片
python run_experiment.py ../MegaFace_Features_cm ../FaceScrub_Features_cm _mxsphereface20c_112x112.bin ../results_f2/ -s 1000000 2>&1|tee log_f2
)
5.测试结果
Done matching! Score matrix size: 3530 1000000
Saving to ../results_f1/otherFiles/facescrub_megaface_mxsphereface20c_112x112_1000000_1.bin
Loaded 3530 probes spanning 80 classes
Loading from ../results_f1/otherFiles/facescrub_facescrub_mxsphereface20c_112x112.bin
Probe score matrix size: 3530 3530
distractor score matrix size: 3530 1000000
Done loading. Time to compute some stats!
Finding top distractors!
Done sorting distractor scores
Making gallery!
Done Making Gallery!
Allocating ranks (1000080)
Rank 1: 0.819454
Creating feature list of 1000000 photos for set 1
生成的文件如下:
#######################################################
本次使用的模型(作者提供)为:LResNet100E-IR,ArcFace@ms1m-refine-v2
最终测试结果见下图:
以下为insightface 作者megaface跑分:
rank 1:搜索结果中最靠前的一张图是正确结果的概率,一般通过实验多次来取平均值。测试搜索的rank1 accuracy
需要注意的是,测试时,对facescrub里的每个人,例如此人有N张图片,则每次取1张图片连同所有的distractor作为gallery,将此人的所有剩余其他图片作为probe来进行查询,统计rank-1和rank-10准确率。如果有M个人,每人有N张图片,则总计统计M*N*(N-1)次查询的rank-1和rank-10准确率。
"这29人在统计结果时会形成55608条记录,实际我们的算法使其中25232条均为Rank-1错误,错误率高达45.37%。若扣除这29人,则我们的算法在余下51个人的Rank-1准确率为88.87%。因此可以解释为什么我们的Rank-10准确率与megaface榜上前三接近,但Rank-1准确率相差很多。"
此外,80个人的3530张人脸中,其中至少有6张身份错误,这6张身份错误的图片对结果统计也有一定影响,但远远小于上述29个人的影响。
未去除之前 3530张图片
去除29人以后(1236张),还剩2294张图片.
本人扣除这29人,则算法在余下51个人的Rank-1准确率为83.97%.
最后,切记,megaface的测试是以L2距离来度量的,需要根据你训练的模型实际情况,确定是否要对特征进行归一化。
#########################################
本测试内存为32G,跑100w 计算Rank 1时,内存消耗高达28G.
此文章仅供参考,如有不对,请指出,谢谢!
#############主要参考博客如下##################
1.megaface初试
https://blog.csdn.net/nus_cs/article/details/78426486
2.megaface测试流程
https://blog.csdn.net/realmanma/article/details/77429726?utm_source=blogxgwz9#commentBox
3.【ArcFace/Insightface论文中文版】ArcFace: Additive Angular Margin Loss for Deep Face Recognition
https://blog.csdn.net/generalsong/article/details/83625751
4.insightface测试megaface流程
https://blog.csdn.net/jmu201521121021/article/details/81151758#commentBox
Insightface测试Megaface流程!相关推荐
- insightface测试megaface流程
insightface github地址: https://github.com/deepinsight/insightface megaface database地址: http://megafac ...
- 软件项目管理 用户测试,1对软件研发过程中用户需求研发设计项目测试交付实施测试等流程监督管理.doc...
1对软件研发过程中用户需求.研发设计.项目测试.交付实施测试等流程监督管理 精品文档 --------------------------精品文档,可以编辑修改,等待你的下载,管理,教育文档----- ...
- 测试环境搭建流程_案例解析:一个完整的项目测试方案流程,应该是怎么的?...
作为一名软件测试工程师,为项目制作完成的测试方案并执行,是我们日常工作的重要部分,同时,也是一名合格的软件测试工程师应有的专业素养.那么,很多小白和测试新手肯定要问了:一个完整的项目测试方案流程,应该 ...
- 渗透测试工作流程渗透测试类型法律边界
渗透测试工作流程渗透测试类型法律边界 渗透测试工作流程 渗透测试与其它评估方法不同.通常的评估方法是根据已知信息资源或其它被评估对象,去发现所有相关的安全问题.渗透测试是根据已知可利用的安全漏洞,去发 ...
- 【学习笔记】APP测试基本流程及测试要点
APP测试基本流程以及APP测试要点 APP测试流程梳理 APP测试要点梳理 1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即1 ...
- 小白学渗透——渗透测试基本流程
了解到很多想从事网络安全工作,或对网络安全感兴趣的小伙伴不知道该如何学起,网上的资料琳琅满目,却没有一套分系统化的学习大纲供大家参考学习.所以从现在开始开辟一个专栏:网络安全基础篇,主要讲解一些网络安 ...
- 什么是IC封测?语音芯片封装与测试的流程步骤
封装与测试的定义 封装(Package):将晶圆厂生产的芯片.塑料.陶瓷.金属外壳包装起来,以保护芯片在工作时不受外界的水气.灰尘.静电等影响,封装的材质必须考虑成本与散热的效果. 测试(Test): ...
- 小白入门黑客之渗透测试基本流程
所以全网最详细的渗透测试流程来了!!! 如果对学习黑客感兴趣的同学,可以点下方参加我们的实战训练营.从这里开始进入体系化的学习,还有小白到进阶的实战靶场,新手老手都适用 渗透测试 渗透测试其实就是通过 ...
- Ix Chariot测试路由器流程
Ix Chariot测试路由器流程 1.查看本机IP与另一台电脑的IP;将一台电脑连接到路由器WAN口,另一台连接到Lan口. 2.进入192.168.1.1进行Wan配置(可通过窜口命令设置) 2. ...
最新文章
- DX:ASPxGridView使用选择事件的前置条件
- Git叉子实际上是Git克隆吗?
- 三种睡眠时间函数的区别:linux 的sleep()、usleep()、nanosleep()函数
- android 单选框 icon,Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解...
- CA/TA通信的share memory设计思想解读
- SQL 查询总是先执行SELECT语句吗?
- linux 系统如何防止攻击
- 【C++深度剖析教程35】函数模板的概念和意义
- CEF3:https 请求返回状态码canceled
- WebView断网提示
- Windows下实现gettimeofday()函数
- Opmanager研究笔记
- DiskGenius 强行拆分黑苹果HFS硬盘分区以给Windows扩容
- 每个广告组放多少个关键字合适?
- 微博、微信和QQ OAuth2.0开发记录
- C语言函数指针和函数的首地址
- 用计算机画画内容,用计算机画画的教案
- 2023北京林业大学计算机考研信息汇总
- gzip解析 python
- 中文分词工具探析(一):ICTCLAS (NLPIR)