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

文章目录

  • 三维指静脉生物识别成像设备设计和多视图验证研究
    • 总结
    • 摘要
    • 介绍
    • 多视角指静脉识别
      • 模型结构
      • 内容特征编码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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

openfeign使用fallback指定降级方法无法执行问题

直接点上代码: package com.fuXiApi.api;import com.common.util.MyResult; import com.fuXiApi.api.fallback.UserClientFallback; import com.fuXiApi.dto.UserDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bi…

【Python】使用selenium对Poe批量模拟注册脚本

配置好接码api即可实现自动化注册登录试用一体。 运行后会注册账号并绑定邮箱与手机号进行登录试用。 测试结果30秒一个号 import re import time import requests from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.options imp…

#Ubuntu(修改root信息)

(一)发行版:Ubuntu16.04.7 (二)记录: (1)命令行终端: a.右键,open terminal b.快捷键 ctrlaltt (2)进行root修改 sudo passwd &a…

3月19日做题

[NPUCTF2020]验证🐎 if (first && second && first.length second.length && first!second && md5(firstkeys[0]) md5(secondkeys[0]))用数组绕过first1&second[1] 这里正则规律过滤位(Math.) (?:Math(?:\.\w)?) : 匹配 …

PX4|基于FAST-LIO mid360的无人机室内自主定位及定点悬停

目录 前言环境配置运行fast-lio修改px4位置信息融合方式编写位置坐标转换及传输节点 前言 在配置mid360运行环境后,可使用mid360进行室内的精准定位。 环境配置 在livox_ros_driver2的上级目录src下保存fast-lio的工程 git clone https://github.com/hku-mars/F…

在Ubuntu20.04(原为cuda12.0, gcc9.几版本和g++9.几版本)下先安装cuda9.0后再配置gcc-5环境

因为自己对Linux相关操作不是很熟悉,所以因为之前的代码报错之后决定要安cuda9.0,于是先安装了cuda9.0。里面用到的一些链接,链接文件夹时直接去copy它的路径,就不那么容易错了。 今天运行程序之后发现gcc环境不太匹配cuda9.0&am…

2024/03/19(网络编程·day5)

一、思维导图 二、selec函数实现TCP并发服务器 #include<myhead.h>#define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.117.116" //服务器IP int main(int argc, const char *argv[]) {//1、创建一个套接字int sfd -1;sfd socket(AF_INET,SOC…

Vue技能树总结01

Vue vs React 相似之处: 它们都有使用 Virtual DOM&#xff1b;提供了响应式&#xff08;Reactive&#xff09;和组件化&#xff08;Composable&#xff09;的视图组件。将注意力集中保持在核心库&#xff0c;而将其他功能如路由和全局状态管理交给相关的库。React 比 Vue 有更…

备战蓝桥杯---牛客寒假训练营2VP

题挺好的&#xff0c;收获了许多 1.暴力枚举&#xff08;许多巧妙地处理细节方法&#xff09; n是1--9,于是我们可以直接暴力&#xff0c;对于1注意特判开头0但N&#xff01;1&#xff0c;对于情报4&#xff0c;我们可以把a,b,c,d的所有取值枚举一遍&#xff0c;那么如何判断有…

关系数据库:关系数据结构基础与概念解析

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

微信小程序开发学习笔记——4.4常见的导航栏api接口

>>跟着b站up主“咸虾米_”学习微信小程序开发中&#xff0c;把学习记录存到这方便后续查找。 课程连接&#xff1a;https://www.bilibili.com/video/BV19G4y1K74d?p29&vd_source9b149469177ab5fdc47515e14cf3cf74 一、属性 界面 / 导航栏 / wx.showNavigationBar…

使用Java JDBC连接数据库

在Java应用程序中&#xff0c;与数据库交互是一个常见的任务。Java数据库连接&#xff08;JDBC&#xff09;是一种用于在Java应用程序和数据库之间建立连接并执行SQL查询的标准API。通过JDBC&#xff0c;您可以轻松地执行各种数据库操作&#xff0c;如插入、更新、删除和查询数…

python二级--jieba库知识点简明整理

前言 本文是我学习过程的总结。 &#xff08;针对的是二级对于jieba库的考点&#xff09; jieba简介 用于把中文长句分割成中文词组。 jieba三模式 精确模式&#xff1a;把文本精确的切分开&#xff0c;不存在冗余单词 全模式&#xff1a;把文本中所有可能的词语都扫描出…

CTFHUB-web-信息泄漏

题目所在位置&#xff1a;技能树->web->信息泄漏 目录遍历 打开题目&#xff0c;我们进入的是这个页面 翻译过来就是 得到的信息就是&#xff1a;flag要在这些目录里面寻找&#xff0c;我们直接一个一个点开查看就行 发现得到一个flag.txt&#xff0c;点击打开得到flag …

堆排序(数据结构)

本期讲解堆排序的实现 —————————————————————— 1. 堆排序 堆排序即利用堆的思想来进行排序&#xff0c;总共分为两个步骤&#xff1a; 1. 建堆 • 升序&#xff1a;建大堆 • 降序&#xff1a;建小堆 2. 利用堆删除思想来进行排序. 建堆和堆删…

自动驾驶决策 - 规划 - 控制 (持续更新!!!)

总目录 Frenet与Cartesian坐标系 Apollo基础 - Frenet坐标系 车辆模型 车辆运动学和动力学模型 控制算法 PID控制器轨迹跟随实现 Pure Pursuit控制器路径跟随 路径跟踪算法Stanley 实现 c 无人驾驶LQR控制算法 c 实现 MPC自动驾驶横向控制算法实现 c 双环PID控制详细讲解 …

鸿蒙开发实战:【网络管理-Socket连接】

介绍 本示例主要演示了Socket在网络通信方面的应用&#xff0c;展示了Socket在两端设备的连接验证、聊天通信方面的应用。 效果预览 使用说明 1.打开应用&#xff0c;点击用户文本框选择要登录的用户&#xff0c;并输入另一个设备的IP地址&#xff0c;点击确定按钮进入已登录…

JavaScript高级系列(三) - JavaScript的运行过程

一. 全局代码的执行过程 1.1. ECMA的版本说明 在ECMA早期的版本&#xff08;ECMAScript3&#xff09;&#xff0c;代码的执行流程的术语和ECMAScript5以及之后的术语会有所区别&#xff1a; 目前网上大多数流行的说法都是基于ECMAScript3版本的解析&#xff0c; 并且在面试问…

实现el-table合并列

效果图如下 <el-table :data"atlasDataList" style"width: 100%" :span-method"spanMethod"><el-table-column prop"stationName" label"" width"180" /><el-table-column prop"atlasNumbe…

网络编程—DAY5

select实现的TCP并发服务器 #include <myhead.h> #define SER_PORT 8888 #define SER_IP "192.168.117.96"int main(int argc, const char *argv[]) {int sfd -1;sfd socket(AF_INET,SOCK_STREAM,0);if(sfd -1){perror("socket");return -1;}prin…