megaface测试流程
来源:互联网 发布:怎么淘宝开店 编辑:程序博客网 时间:2024/06/09 23:54
前段时间利用caffe训练了一个人脸识别的模型,在megaface“Rank-1 Identification Accuracy with 1 Million Distractors”上达到了78.23%,勉强居于第7名(截止至2017-08-26),结果链接:http://megaface.cs.washington.edu/results/facescrubresults.html(笔者只是本地测一下玩玩,检验一下自己模型的性能,尚未提交至官方)
本次测试只针对Challenge 1的FaceSrub,也是最具代表性的情形。通俗地说,就是给定probe(FaceSrub)数据集,在100万的distractors环境下,测试搜索的rank1 accuracy。
闲话少说,首先看看需要做哪些准备工作
(1)人脸预处理工具(检测+对齐),人脸特征提取器(亦即你所使用的人脸识别模型)
(2)megaface测试数据集和devkit,我下载的文件有:
①MegaFace Dataset(65GB),即Gallery dataset,或Distractors
②FaceScrub full tgz —16.4 GB,即probe(我选的是原始图片,即uncropped)
③Linux Development Kit (.zip) (.tar.gz) —16 MB,python程序,给定特征文件,用来计算测试结果的
这些在官网上都能找到,当然前提要邮箱申请,基本秒回,不用等哈
接下来就是图片的预处理以及特征文件如何保存了
大体上来讲,经过检测+对齐裁剪之后的人脸图片,其保存的目录结构要和原始图片一致,例如原始图片目录为FlickrFinal2/999/99900781@N08/9838939723_0.jpg,对齐裁剪后保存为Megaface_1m_aligned/999/99900781@N08/9838939723_0.jpg。每张原图都有一张对应的对齐图片,不能多也不能少,尽量保存为同名文件。
如果只是本地自己测试不想提交的话,为了节省处理时间,按照devkit/templatelists/目录下的megaface_features_list.json_1000000_1和facescrub_uncropped_features_list.json处理对应的文件列表就行了。前者包含1000000张干扰图片,后者包含80个名人约3000多张用于做搜索目标的图片。Megaface Dataset的处理和FaceScrub是有些区别的
①Megaface Dataset作为干扰项,处理不需要多精细,并且每张原图片都有一个对应的json文件里面存放了bbox坐标。我的办法是:先做人脸检测,选取和bbox的overlap最大且在0.5以上的那个rect作为目标检测框,继而进行对齐裁剪;如果未检测到人脸或者overlap不合格,直接按照bbox进行裁剪即可
②FaceScrub直接关系到搜索的准确率,不能马虎。我的处理办法是:先对每张图片进行人脸检测,没检测到的,文件名打印出来,直接从原图截图去抠;因为图片量本身不多,所以再人工检查下,80个目录,每个目录下面都是同一个人,把错误的图片替换掉(同样是从原图上抠)
图片对齐好之后,即开始提取特征了,这里需要注意几点
①特征文件保存的目录结构也要遵循之前原则,例如Megaface_1m_features/999/99900781@N08/9838939723_1.jpg_my-algorithm.bin,在原始文件名后面加后缀(_算法名称.格式)
②每个图片文件保存一个特征文件,特征文件的保存方法是:先保存文件头,后面再存特征,我的特征是512维,C++示例代码
struct head_t{ int32_t rows; int32_t cols; int32_t step; int32_t dtype;};struct head_t header;header.rows = 512;header.cols = 1;header.step = 4;header.dtype = 5;FILE* fp;fp = fopen(savedPath.c_str(), "wb");fwrite(&header, 4, 4, fp);fwrite(feature.data(), 4, 512, fp);fclose(fp);
最后,就是调用devkit里面的python测试程序了,具体的使用方法大可以参考readme,这里贴上我的调用命令吧,涉及到个人信息的部分隐藏:
python run_experiment.py -p ../templatelists/facescrub_uncropped_features_list.json YOUR_PATH/Megaface_1m_features YOUR_PATH/facescrub_features _YOUR_ALGORITHM.bin YOUR_PATH/results -s 1000000
经过约十几二十分钟的等待,就能看到结果啦
最后,切记,megaface的测试是以L2距离来度量的,需要根据你训练的模型实际情况,确定是否要对特征进行归一化。
- megaface测试流程
- megaface使用
- megaface初试
- 腾讯优图再创世界纪录 列MegaFace海量人脸识别测试榜首
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 测试流程
- 【Hibernate】的一对多与多对一映射
- Java SSM 整合 freemarker
- Android数据存储(一)---SharedPreferences
- 制作ubuntu烧录镜像
- 《文学理论》
- megaface测试流程
- POSIX多线程程序设计学习篇之六(线程属性)
- C++Primer Plus(第六版) 第十四章 第五题
- codeforces 744A
- JAVA new流程(实例化过程)
- sklearn(二)----强大的数据库
- 信息系统项目管理师考试备考经验和心得(50天一次性通过)
- hdu 1196 lowest bit
- 什么函数不能声明为虚函数