Face-anti-spoofing实验记录(通过val_public_list.txt制作val数据集)

https://sites.google.com/qq.com/chalearnfacespoofingattackdete/contest-details

数据集官方获取网站

 

网友总结

https://blog.csdn.net/baidu_40840693/article/details/89060374

网友的FeatherNets论文笔记

https://blog.csdn.net/u014640980/article/details/89473862

创新点
提出轻量级网络Feather:
thin CNN stem——计算代价小;
提出流模块——比GAP(Global Average Pooling)精确度更高;
设计了一种新的融合分类器体系结构,将从多模态数据(depth 和 IR 数据)中学习到的多模型进行组合和级联;
成就
仅用depth image进行训练,0.00168 ACER, 0.35M parameters and 83M FLOPS;
in the Face Anti-spoofing Attack Detection Challenge@CVPR2019 and
got the result of 0.0013(ACER), 0.999(TPR@FPR=10e-2),
0.998(TPR@FPR=10e-3) and 0.9814(TPR@FPR=10e-4).
数据集 MMFD
原理
真实人脸的depth image是不均匀的,攻击人脸的depth image是平面的

 

 

由于网上找到的数据集资源并没有val文件夹,通过对比发现val数据集中的图片是从test数据集中选取的图片,于是自己制作了val数据集。如下所示:

 1 # coding: utf-8
 2 from pathlib import Path  #从pathlib中导入Path
 3 import os
 4 import fileinput
 5 
 6 import shutil
 7 rgb = open('./rgb_train.txt','a')
 8 pwd = os.getcwd() +'/'# the val data path 训练集的路径
 9 test_pwd = '/home/tay/Videos/Anti_spoofing/Face_anti_spoofing/datasets/CASIA-SURF/Testing/'
10 dst_pwd = '/home/tay/Videos/Anti_spoofing/Face_anti_spoofing/Val/'
11 for line in fileinput.input("val_public_list.txt"):
12     list = line.split(' ')
13     print('list[0]', list[0])
14     # print('list[0] is', list[0].split('.jpg')[0].split('/')[-1])
15     print('list[1] is', list[1])
16     print('list[2] is', list[2])
17     # print('rgb is', pwd + list[0].split('.jpg')[0]+ '_tr' + '.jpg')
18     # rgb.write(pwd +list[0]+'\n')
19     # depth.write(pwd +list[1]+'\n')
20     # ir.write(pwd +list[2]+'\n')
21     #src = test_pwd +'/'+ list[0].split('Val/')[-1]+'\n'
22     #dst = list[0].split('/')[-2]
23     if os.path.exists(os.path.join(dst_pwd, list[0].split('/')[-2])):
24         shutil.copy(test_pwd + list[0].split('Val/')[-1], os.path.join(dst_pwd, list[0].split('/')[-2]))
25     else:
26         os.makedirs(os.path.join(dst_pwd, list[0].split('/')[-2]))
27         shutil.copy(test_pwd + list[0].split('Val/')[-1], os.path.join(dst_pwd, list[0].split('/')[-2]))
28 
29     if os.path.exists(os.path.join(dst_pwd, list[1].split('/')[-2])):
30         shutil.copy(test_pwd + list[1].split('Val/')[-1], os.path.join(dst_pwd, list[1].split('/')[-2]))
31     else:
32         os.makedirs(os.path.join(dst_pwd, list[1].split('/')[-2]))
33         shutil.copy(test_pwd + list[1].split('Val/')[-1], os.path.join(dst_pwd, list[1].split('/')[-2]))
34 
35     if os.path.exists(os.path.join(dst_pwd, list[2].split('/')[-2])):
36         shutil.copy(test_pwd + list[2].split('Val/')[-1], os.path.join(dst_pwd, list[2].split('/')[-2]))
37     else:
38         os.makedirs(os.path.join(dst_pwd, list[2].split('/')[-2]))
39         shutil.copy(test_pwd + list[2].split('Val/')[-1], os.path.join(dst_pwd, list[2].split('/')[-2]))
40     # rgb.write(test_pwd + list[0].split('Val/')[-1]+'\n')
41     # rgb.write(test_pwd + list[1].split('Val/')[-1]+'\n')
42     # rgb.write(test_pwd + list[2].split('Val/')[-1]+'\n')
43     # shutil.copy(local_img_name+'/'+new_obj_name, path+'/'+new_obj_name) #shutil.copy(src, dst) src是要复制的图像的文件路径,dst是将要复制到的路径
44 
45 # rgb.close()

 

posted @ 2019-07-23 11:45  铃铃漆007  阅读(569)  评论(0编辑  收藏  举报