Skip to content

How to evaluate TAR FAR on your dataset

左庆 edited this page Oct 24, 2018 · 17 revisions

一、先清洗数据

(1)人脸检测与裁剪

SampleCropImagesForArcFaceFast.exe src_root dst_root max_thread_num strict_check

参数说明:

src_root: 源目录的根目录,存放格式为src_root\person_name\xxx.jpg

dst_root: 待生成的根目录,存放格式为dst_root\person_name\xxx.jpg (运行前请手动删除这个名字的文件夹)

max_thread_num: 准备用多少线程

strict_check: 请填1

如果要生成H=112,W=112的图片请调用SampleCropImagesForArcFaceFast.exe,如果要生成H=112,W=96的图片请调用SampleCropImagesForSphereFaceFast.exe

(2)构造人脸库

SampleFaceDatabaseZQCNN.exe make database_root feats_file names_file proto_file model_file out_blob_name type max_thread_num

参数说明:

make: 这是个字符串

database_root: 人脸图片的根目录,存放格式为database_root\person_name\xxx.jpg

feats_file:这是要生成的文件,用于存储人脸特征

names_file: 这是要生成的文件,用于存储人名

proto_file: 模型的描述文件

model_file: 模型的权重文件

out_blob_name:模型最后的output blob name

type: 请填2

max_thread_num: 准备用多少个线程

只支持H=112,W=112和H=112,W=96的模型

如果要用caffe格式的模型, 请用SampleFaceDatabaseOpenCV.exe 而且参数make必须改成make112X112或者make112X96, out_blob_name要填caffe模型的output layer name

(3)筛选子集

SampleFaceDatabaseZQCNN.exe select_subset_desired_num out_file feats_file names_file desired_person_num desired_image_num similarity_thresh max_thread_num

参数说明:

select_subset_desired_num:这是个字符串

out_file: 这是要生成的文件,用于描述你筛选出了那些图片

feats_file: 填上一步生成的feats_file

names_file: 填上一步生成的names_file

desired_person_num: 你准备筛选出多少人

desired_image_num: 你准备每个人筛选多少张图

similarity_thresh:人脸相似度阈值,每个人的图片中会先选出pivot,与pivot相似度低于阈值的图会扔掉

max_thread_num:你准备用多少线程

如果要用caffe格式的模型, 请用SampleFaceDatabaseOpenCV.exe

(4)根据筛选的结果拷备图片

SampleFaceDatabaseZQCNN.exe copy_subset_to_fold list_file dst_fold

参数说明:

copy_subset_to_fold:这是个字符串

list_file:上一步生成的out_file

dst_fold: 根据list_file把图片拷贝到这个文件夹,存放格式为dst_fold\person_name\xxx.jpg,会自动生成这个文件夹

如果你不想看上面这些东西,那就看下面

新建一个批处理文件比如说clean-112X112.bat, 用记事本/写字板/notepad++打开,填入以下

set src_root=CASIA-Webface

set dst_root=webface1000X50

set desired_person_num=1000

set desired_image_num=50

set proto_file=model\mobilefacenet-res4-8-16-4-dim512.zqparams

set model_file=model\mobilefacenet-res4-8-16-4-dim512-emore.nchwbin

set out_blob_name=fc5

set thread_num=10

SampleCropImagesForArcFaceFast.exe %src_root% %src_root%-112X112 %thread_num% 1

SampleFaceDatabaseZQCNN.exe make %src_root%-112X112 crop.feats crop.names %proto_file% %model_file% %out_blob_name% 2 %thread_num%

SampleFaceDatabaseZQCNN.exe select_subset_desired_num select_list.txt crop.feats crop.names %desired_person_num% %desired_image_num% 0.5 %thread_num%

SampleFaceDatabaseZQCNN.exe copy_subset_to_fold select_list.txt %dst_root%

二、测试TAR-FAR

创建一个批处理文件比如evaluate-tar-far.bat 用记事本/写字板/Notepad++打开,填入以下命令

set proto_file=model\mobilefacenet-res4-8-16-4-dim128.zqparams

set model_file=model\mobilefacenet-res4-8-16-4-dim128-emore.nchwbin

set blob_name=fc5

set src_root=webface1000X50

set thread_num=10

set quantization=1

SampleFaceDatabaseZQCNN.exe make_compact %src_root% tar-far-database.feats tar-far-database.names %proto_file% %model_file% %blob_name% 2 %thread_num%

SampleFaceDatabaseZQCNN.exe compute_similarity_compact tar-far-score.raw tar-far-flag.raw tar-far-info.txt tar-far-database.feats tar-far-database.names %thread_num% %quantization%

SampleFaceDatabaseZQCNN.exe evaluate_tar_far tar-far-score.raw tar-far-flag.raw tar-far-info.txt %quantization%

最终tar-far数据会在控制台显示。你也可以在cmd里运行 call evaluate-tar-far.bat>log.txt 这样运行过程及最终结果都会写在log.txt里

注意1: 如果你想测caffe格式的模型,把SampleFaceDatabaseZQCNN.exe换成SampleFaceDatabaseOpenCV.exe, 参数make_compact换成make112X112_compact或者make112X96_compact,set blob_name=fc5里fc5改成caffe模型的output layer name

注意2: 参数quantization=0是用float存相似度,quantization=1是用short存相似度。如果是用float存,测的库有5万张图,需要50000 x 49999 / 2 x (4+1) x 3 Bytes = 17.46 GB的硬盘空间(还得考虑硬盘空间是不是连续),测的库有10万张图,则需要约70 GB的硬盘空间(还得考虑硬盘空间是不是连续),测的库有20万张图,则需要约280 GB的硬盘空间(还得考虑硬盘空间是不是连续)。如果是用short存,只需要60%的空间。

注意3: 注意最后那个ZQCNN-Face-12000_X_15-40的测试集有接近30万张图,即便是short存储,也需要370G左右的硬盘空间,排一次序需要10个小时(固态硬盘)这个量级。