三维指静脉生物识别成像设备设计和多视图验证研究

文章目录

  • 三维指静脉生物识别成像设备设计和多视图验证研究
    • 总结
    • 摘要
    • 介绍
    • 多视角指静脉识别
      • 模型结构
      • 内容特征编码Transformer(CFET)
      • 主导特征选择模块(DFSM)
    • 实验和结果
      • 数据集
      • 实施细节
      • 视角研究
      • 池化层的作用
      • 消融实验
      • 和SOTA方法比较

论文: Study of 3D Finger Vein Biometrics on Imaging Device Design and Multi-view Verification

三维指静脉生物识别成像设备设计和多视图验证研究

总结

这是一个基于深度学习的指静脉识别方法。从任务类型上来说是分类任务。具体来说是多视角方法。
整体结构的组件来说,相比EIFNet,加入了Transformer编码器。思路上来说和多视角方法HCAN相似,将特征分为全局特征和局部特征两类,全局特征更多指视角间特征,局部特征更多指视角内特征。最后特征是两类特征的聚合。全局特征即将所有视角图片看作整体,研究其属性,比如视角间的关系。而局部特征是单张图片内的纹理等特征,选出评分最高的两个特征作为代表性的特征信息。然后和全局特征进行聚合。那么问题在于,整体特征包含局部特征,整体包含局部,那么为什么不会引起冗余?或许局部主导特征提取器更多承担了局部特征提取的任务,可以使得全局特征提取器相对更关注于视角间信息,又或者这种人为划分特征属性本身有些中途半端,不如在Transformer中完成整个流程。

问题

从直觉来说,如果网络能够很好的学习到整体信息,或者说从整体而来的信息,自然也能学习到例如选择更好视角的能力,那么为什么还需要下面的视角选择器来增强这部分特征?如果上面的全局特征提取器是CNN这种结构,能否学习到选择视角或者特征的能力呢?举例如果在不同类别中其中一个视角始终更适合,那么即使这些视角共用一个CNN参数,也会朝着利于这个视角特征提取的方向发展,但是问题在于,并不一定存在一个始终更适合的视角,虽然消融结果显示90度和270度是最佳角度,但不排除有具体某一类由于数据采集等问题产生不同,因此如果是一个CNN,不会有根据输入数据更对应地得出最佳视角,最多是惯性认为某一个视角最佳,简单来说,CNN参数不存在数据依赖性,即判断标准是固定的,不会和输入有交互,因此注意力机制解决了这个问题,而本文的全局特征提取器正是Transformer编码器,因此应当有根据输入更好选择视角的能力。而文中描述局部特征与视角解耦,因此局部特征提取器虽然可能倾向于从最佳视角中选取特征,但两者还是有所不同,毕竟聚合的单位是单个特征而不是视角。既然视角解耦,本身就隐含“全局”的含义,因为与视角无关,因此全局特征指视角间的空间位置,视角间的联系,即视角间的特征,而局部特征表示视角内的特征。所以局部主导特征提取器的主导特征标准应该是大多数类别的标准,是”最大公约数“,因其无法做到参数的数据依赖,所以不可能是“全部”的标准。数据不依赖的如卷积的方法认为只有一个最优的卷积核,而数据依赖的方法如动态卷积认为有多个可用的卷积核,根据输入数据不同动态选择。

摘要

单视角指静脉识别受到受到有限特征,手指旋转平移敏感和2D映射造成的模糊性影响,阻碍了系统表现的提升。为了解决这些问题增强指静脉识别表现。我们应用了多视角指静脉图片,可以提供一个3D指静脉的更丰富特征。我们设计了一种新的低造价全视角指静脉成像设备。我们提出里一个多视角指静脉特征编码和选择网络(MFV-FESNet),基于Transformer编码器可以学习到不同视角间的依赖。通过融合提取到的全局内容特征和局部主导特征,网络可以生成高维特征描述子。

介绍

凭借2D图像处理网络的优势,基于视角的方法在3D目标识别展示了优异的表现。然而,在多视角指静脉识别的3D指静脉生物识别研究还不充分,现存的方法在视角间一致地提取特征而忽略视角间显著信息的差别。现存的多视角指静脉数据集稀缺难以获取。在这边文章中,我们设计了一个新颖的低成本全视角指静脉成像设备并且建立了多视角指静脉数据集。除此之外,我们提出里一个多视角指静脉识别网络,称为多视角指静脉特征编码和选择网络,可以有效提取3D血管特征并且增强识别表现通过融合局部主导特征和全局内容特征。我们的贡献总结如下:

  • 一个新颖的低成本全视角指静脉成像设备
  • 多视角指静脉数据集
  • 多视角指静脉特征编码和选择网络
  • 提出的方法取得优秀的表现

多视角指静脉识别

模型结构

在这里插入图片描述

一个浅层网络保存更多的底层图片信息,当网络变深时,可以提取到丰富的语义信息。因此我们采用一个千层全卷积神经网络(FCN)来提取原始描述子并通过一个CNN来生成视角描述子。FCN部分包含ResNet-18的最上面5层,CNN则包含了ResNet18剩余的层。给定一组多视角指静脉图片,每个视角通过FCN和CNN并顺序获取它们相应的视角描述子。之后,视角描述子和原始描述子被送入到内容特征编码Transformer(CFET)中和主导特征选择模块(DFSM)来获取对应全局内容特征和局部主导特征。最后,这两个特征融合生成最后的描述子。

内容特征编码Transformer(CFET)

为了学习到不同视角间的关系并且提取全局信息,我们设计了CFET来进一步处理生成的视角描述子 V = { v 1 , v 2 , . . . , v 3 } , v i ∈ R 1 × D 0 V = \{v_1,v_2,...,v_3\},v_i\in \mathbb{R}^{1\times D_0} V={v1,v2,...,v3},viR1×D0。最后我们将视角描述子映射到D维,并初始化可学习的全局类token v c l a s s ∈ R 1 × D v_{class} \in \mathbb{R}^{1\times D} vclassR1×D到序列的头部。 E p o s ∈ R ( N + 1 ) × D E_{pos}\in{\mathbb{R}^{(N+1)\times D}} EposR(N+1)×D被添加到序列来获取每个角度的位置信息。
Z 0 = [ v c l a s s ; v 1 E ; v 2 E ; . . . ; v N E ] + E p o s Z 0 ∈ R ( N + 1 ) × D , E ∈ R D 0 × D Z_0 = [v_{class};v_1E;v_2E;...;v_NE]+E_{pos} \\ Z_0 \in{\mathbb{R}^{(N+1)\times D}},E\in{\mathbb{R}^{D_0 \times D}} Z0=[vclass;v1E;v2E;...;vNE]+EposZ0R(N+1)×D,ERD0×D
在transformer编码器中有四种操作,层归一化,多头注意力,多层感知机和残差连接。长程交互可以通过自注意力捕捉,在这个模型,可以进一步探索不同视角间的关系。多头注意力使模型可以联合关注一个位置不同表达子空间的信息,因此在视角间提取并创建多种联系。
Z ^ 0 = L N ( Z 0 ) , Z ^ 0 ∈ R ( N + 1 ) × D Z 1 = M S A ( Z ^ 0 ) + Z 0 , Z ^ 1 ∈ R ( N + 1 ) × D \hat{Z}_0 = LN(Z_0),\hat{Z}_0 \in{\mathbb{R}^{(N+1)\times D}}\\ Z_1 = MSA(\hat{Z}_0)+Z_0,\hat{Z}_1 \in{\mathbb{R}^{(N+1)\times D}} Z^0=LN(Z0),Z^0R(N+1)×DZ1=MSA(Z^0)+Z0,Z^1R(N+1)×D
MLP帮助增强模型的泛化表现,更好适应复杂的过程。因此, Z 1 Z_1 Z1 L N LN LN后被送入 M L P MLP MLP层获取 Z ^ 1 \hat{Z}_1 Z^1 M L P MLP MLP包含两个线性层并且应用GELU激活函数
Z ^ 1 = M L P ( L N ( Z 1 ) ) + Z 1 , Z ^ 1 ∈ R ( N + 1 ) × D \hat{Z}_1 = MLP(LN(Z_1))+Z_1,\hat{Z}_1 \in{\mathbb{R}^{(N+1)\times D}} Z^1=MLP(LN(Z1))+Z1,Z^1R(N+1)×D
Z ^ 1 \hat{Z}_1 Z^1包含全视角图片的全局类别token z ^ c l a s s \hat{z}_{class} z^class和不同视角的局部信息 { z ^ 1 , z ^ 2 , z ^ 3 , . . . z ^ N } \{\hat{z}_1,\hat{z}_2,\hat{z}_3,...\hat{z}_N \} {z^1,z^2,z^3,...z^N},我们通过平均池化聚合来得到紧凑的描述子,我们可以获取有易理解3D指静脉特征的全局上下文描述子。
Y c = A v g [ z ^ 1 , z ^ 2 , . . . , z ^ N ] Y_c = Avg[\hat{z}_1,\hat{z}_2,...,\hat{z}_N] Yc=Avg[z^1,z^2,...,z^N]

主导特征选择模块(DFSM)

在这里插入图片描述

在这里插入图片描述

和上面整体结构中的DFSM对比,可以看到下图所谓的特征生成就是上图的CNN,而主导评估就是上图的主导评分部分中的FCN,FC。而特征选择对应上面的特征选择及之后的聚合。

DFSM旨在扫描两个表达视角并解耦在一组多视角指静脉图片中的主导特征。因为CFET生成的特征关注于表达3D指静脉的全局特征和不同视角间的关系,融合DFSM产生的主导特征可以增强最终描述子的可分辨性。

DFSM的结构如图三所示。FCN收集原始描述子的频道特征通过FC层获取每个视角的初始值,表示为 { x 1 ^ , x 2 ^ , . . . x N ^ } \{\hat{x_1}, \hat{x_2},...\hat{x_N}\} {x1^,x2^,...xN^}。下面的测度用来计算每个视角的主导分数,定义为:
S c o r e ( x i ) = s i g m o i d ( l o g ( a b s ( x i ) ) ) Score(x_i)=sigmoid(log(abs(x_i))) Score(xi)=sigmoid(log(abs(xi)))
我们选择最高两个分数的视角描述子并把它们相加来获取3D指静脉的局部主导特征。值得注意的是这里同一模块的不同视角的CNN是共用参数的。

实验和结果

数据集

THU-MVFV数据集,一根手指静脉的8个不同视角,照相机每旋转45度拍摄一张图片。总共75个对象,拍摄中指和食指,因此共有75 x 2 x 2 = 300类别。两期间隔一到三个月。共有24000张图片,分辨率1280 x 960。

实施细节

使用EER进行结果评估,介绍见上篇文章。

视角研究

我们评估了不同视角在单视角方案上的验证表现,除此之外,我们也融合了不同数量的视角来进行特征提取来研究视角数量的影响。实验结果如图1所示。确保验证公平性,我们采用了ResNet-18来进行单视角验证,用MVCNN来进行多视角验证。

在这里插入图片描述

如图一所示,不同视角的验证表现相差较大,手指的正上方正下方效果最好,表明这两个视角保存了更多的信息。左右两个方向导致了最高的ERR,因为这些视角血管的稀疏性。在多视角验证中,我们选择2, 4, 8 角度相同的视角。表明了多视角的优越性。

池化层的作用

在这里插入图片描述

我们比较了平均池化和最大池化。可以看到平均池化表现更好,因为平均池化保存了不同视角的整体信息

消融实验

我们对每个模块的有效性做了验证。结果显示在表三。CFET设计用来学习不同视角间的关系并且提取3D指静脉的全局上下文特征,而DFSM用来通过一组图片中的主导特征选择视角。CEFT表现比DFSM好。

和SOTA方法比较

在这里插入图片描述

所有方法除HCAN外都采用ResNet18作为backbone。View-GCN基于图神经网络结构,GVCNN基于CNN,OVPT基于TransFormer。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——进程通信(三)命名管道

前言 我们在之前学习了匿名管道与匿名管道的应用——进程池,但是匿名管道的通信,需要有血缘关系的进程(通过fork创建的进程们),如果我想让两个毫不相干的进程进行通信,可以采样命名管道的方式(…

简单算法题收录

展开嵌套数组 检查数组中的项是数组的话也要对其进行展开&#xff0c;将展开的结果通过concat拍平放到当前数组中&#xff0c;完成数组展开 function flat(ar) {let arr []for (var i 0; i < ar.length; i) {if (Array.isArray(ar[i])) arr arr.concat(flat(ar[i]))else…

uniapp rich-text组件在苹果手机上最多显示两行样式失效

rich-text在苹果部分手机上溢出隐藏显示…样式失效的问题 .rich-text-container>rich-text {display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;line-height: 48rpx;height: 96rpx; }完整代码 <view class"rich-text-co…

Go语言中的锁与管道的运用

目录 1.前言 2.锁解决方案 3.管道解决方案 4.总结 1.前言 在写H5小游戏的时候&#xff0c;由于需要对多个WebSocket连接进行增、删、查的管理和对已经建立连接的WebSocket通过服务端进行游戏数据交换的需求。于是定义了一个全局的map集合进行连接的管理&#xff0c;让所有…

80后深圳设计师原创设计 妙解中小学生午休难题

3月17日至21日&#xff0c;深圳国际智能家居博览会在宝安国际会展中心举办。智慧校园展区成为焦点&#xff0c;吸引了众多目光。智荟康科技展出的午休课桌椅产品&#xff0c;为解决中小学生“趴睡”问题而研发&#xff0c;创新实用&#xff0c;在智慧校园展区中备受好评。 &…

Leetcode 79. 单词搜索

心路历程&#xff1a; 做完这道题才发现是回溯&#xff0c;一开始想的是递归&#xff0c;判断完第i个字符后&#xff0c;只需要挨个判断第i1个字符在不在第i个字符的邻域。后来发现由于不能重复使用元素&#xff0c;所以需要维护一个visited列表&#xff0c;并且在遍历所有可能…

蓝桥杯---代分数

import java.util.Scanner;public class top4 {//全排列分数的那个题目//首先进行n个数的全排列//然后将这n个数字拆分为3个数字&#xff0c;即插入两个板子//然后判断等式是否成立&#xff08;判断条件就是在if里面去进行相关的判断是吗&#xff1f;&#xff1f;&#xff09;s…

Spring项目部署到linux上

目录 一、环境配置 1、数据准备 2、程序配置文件修改 二、打包项目 三、上传jar包到服务器 四、开放端口号 五、运行程序 六、查看日志 七、常见问题 1、服务未启动 2、端口号已被占用 3、端口未开放 一、环境配置 1、数据准备 需要先在linux环境下的数据库中创建…

【前端】input表单 type属性详解

前言 前端页面开发中&#xff0c;html表单是网页中最常见元素之一&#xff0c;通过form元素定义表单,表单中包含各种表单项。 input 元素可以用来生成一个供用户输入数据的简单文本框。 在默认的情况下&#xff0c; 什么样的数据均可以输入。而通过不同的type属性值&#xff…

代码随想录算法训练营第四十五天|动态规划|70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 文章 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 输入描述&#xff1a;输入共一行&…

Go语言之函数、方法、接口

一、函数 函数的基本语法&#xff1a; func 函数名&#xff08;形参列表&#xff09;&#xff08;返回值列表&#xff09; {执行语句...return 返回值列表 } 1.形参列表&#xff1a;表示函数的输入 2.函数中的语句&#xff1a;表示为了实现某一功能的代码块 3.函数可以有返回…

安卓基础面试题

自定义view Android自定义View-CSDN博客 view和viewgroup View和ViewGroup的区别- view的事件分发 事件分发详解---历史最容易理解 组件化 Android-组件化开发 什么是ANR Android ANR详解-CSDN博客 Android性能优化 Android 优化-CSDN博客 Aroute 原理 Arouter框架原理…

mysql逗号分隔字段拆成行简述

概述 在实际业务中总有一些字段内容是逗号分隔的&#xff0c;然后后续业务需要扩展时就很难受&#xff1b; 所以一般在这种情况下都是需要建立关联表&#xff0c;将字段内容拆分&#xff1b; 当前使用mysql版本 8.0.32 拆分demo 这里要注意mysql.help_topic表的记录行数&a…

【Linux】进程排队的理解进程状态的表述僵尸进程和孤儿进程的理解

一、进程排队的理解 进程不是一直运行的&#xff0c;进程可能会在等待某种软硬件资源。即使把进程加载到CPU中&#xff0c;也不是一直会运行的。而进程排队&#xff0c;一定是在等待某种软硬件资源&#xff08;可以是CPU&#xff0c;键盘&#xff0c;磁盘&#xff0c;网卡等等设…

rabbitmq-spring-boot-start配置使用手册

rabbitmq-spring-boot-start配置使用手册 文章目录 1.yaml配置如下2.引入pom依赖如下2.1 引入项目resources下libs中的jar包依赖如下2.2引入maven私服依赖如下 3.启动类配置如下4.项目中测试发送消息如下5.项目中消费消息代码示例6.mq管理后台交换机队列创建及路由绑定关系如下…

PyTorch学习笔记之基础函数篇(九)

文章目录 统计运算5.1 torch.mean()函数5.2 torch.median()函数5.3 torch.sum()函数5.4 torch.prod()函数5.5 torch.std()函数5.6 torch.var()函数 统计运算 5.1 torch.mean()函数 torch.mean() 是 PyTorch 中的一个函数&#xff0c;用于计算张量&#xff08;Tensor&#xff…

深入探讨Python中的文件操作与文件IO操作【第141篇—Python实现】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 深入探讨Python中的文件操作与文件IO操作 在Python编程中&#xff0c;文件操作和文件IO操作…

ES集群和分片以及脑裂

文章目录 概要一、概念二、节点角色三、master节点脑裂四、参考 概要 在工作中不可避免会用到ES&#xff0c;而用到ES就不得使用其集群模式了。 单节点的话不得不面临两个重大缺陷&#xff1a;单点故障&#xff08;高可用&#xff09;和海量数据存储搜索。 ES通过集群模式解决…

数据库增删改查复习

增删改查 插入数据 #插入一行 insert into student values(xwz,男&#xff0c;18); #插入多行数据 insert into student values(xwz,男&#xff0c;18)&#xff0c;(jesse,女,12); #插入行的一部分 insert into studnet(name,gender,age) values(xwz,男,18) #插入查询出来的数…

使用动态日志简化开发时间

1.游戏日志的重要性 日志,无论是对于开发环境,还是生产环境,都有着非常重要的作用,具体如下: 跟踪和记录应用程序的运行状态,以便进行故障排查和问题定位。提供应用程序的运行性能数据,以便优化和改进应用程序的性能。收集用户行为和反馈,以便进行用户行为分析和用户体…