• 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]+'
    ')
    19     # depth.write(pwd +list[1]+'
    ')
    20     # ir.write(pwd +list[2]+'
    ')
    21     #src = test_pwd +'/'+ list[0].split('Val/')[-1]+'
    '
    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]+'
    ')
    41     # rgb.write(test_pwd + list[1].split('Val/')[-1]+'
    ')
    42     # rgb.write(test_pwd + list[2].split('Val/')[-1]+'
    ')
    43     # shutil.copy(local_img_name+'/'+new_obj_name, path+'/'+new_obj_name) #shutil.copy(src, dst) src是要复制的图像的文件路径,dst是将要复制到的路径
    44 
    45 # rgb.close()
  • 相关阅读:
    关于Mysql几周的整理文档
    压力开关
    【团队】汇总
    2017级面向对象程序设计——团队作业1
    东风吹十里,风华一笔得。
    【团队】实验品
    【2017级面向对象程序设计】作业四
    【C#】C#学习笔记_1
    【2017级面向对象程序设计】作业三
    【2017级面向对象程序设计】作业二
  • 原文地址:https://www.cnblogs.com/tay007/p/11208797.html
Copyright © 2020-2023  润新知