-
Notifications
You must be signed in to change notification settings - Fork 508
How to evaluate TAR FAR on your dataset
(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%
创建一个批处理文件比如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存,只需要40%的空间。
注意3: 注意最后那个ZQCNN-Face-12000_X_15-40的测试集有接近30万张图,即便是short存储,也需要370G左右的硬盘空间,排一次序需要10个小时(固态硬盘)这个量级。