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

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值