VPCFormer:一个基于transformer的多视角指静脉识别模型和一个新基准

news2024/12/25 12:20:07

文章目录

  • VPCFormer:一个基于transformer的多视角指静脉识别模型和一个新基准
    • 总结
    • 摘要
    • 介绍
    • 相关工作
      • 单视角指静脉识别
      • 多视角指静脉识别
      • Transformer
    • 数据库
      • 基本信息
    • 方法
      • 总体结构
      • 静脉掩膜生成
      • VPC编码器
        • 视角内相关性的提取
        • 视角间相关关系提取
        • 输出融合
        • IFFN
        • 近邻感知模块(NPM)
      • patch嵌入和输出层
        • patch嵌入
        • 输出层
    • 实验
      • 实验设置
        • 单视角识别
        • 多视角识别
        • 闭集协议
        • 开集协议
        • 跨视角识别
      • 进一步实验和讨论
        • 多视角识别视角数的影响
        • 消融实验
        • 全局token的讨论
        • 位置编码的讨论

VPCFormer:一个基于transformer的多视角指静脉识别模型和一个新基准

论文:
VPCFormer: A transformer-based multi-view finger vein recognition model and a new benchmark

总结

摘要

现有的血管模式映射实际上把一个3D网络拓扑映射到一个2D平面,不可避免地导致3D特征损失和2D图像的拓扑模糊性。除此之外,基于单视角的方法在实践中对于手指旋转和平移十分敏感。为了解决这些问题,我们首先建立了一个基准通过建立多视角指静脉数据库,名为清华多视角指静脉3视角(THUMVFV-3V)数据库,收集了两期的数据。THUMVFV-3V提供了三种ROI包括统一的处理过程。进一步,我们提出了一种新的基于Transformer的模型血管模式受限编码器(VPC编码器)和近邻视角模块(NPMs)。特别地,VPC编码器结合一个新颖的静脉模式注意力模块(VPAM)和一个集成的前向网络(IFFN)。受跨视角血管有很强相关性的事实启发,我们设计了VPAM。在静脉掩膜的辅助下,VPAM经过精心设计,专门提取静脉图案之间的视图内和视图间相关性。更进一步,我们提出了IFFN来有效聚合VPAM中先前的注意力和内容信息。除此之外,NPM提出来捕捉单视角内的相关信息,增强最后多视角指静脉的表达。丰富实验表明我们的VPCFormer的相似性。

介绍

近年来,指静脉识别领域取得了巨大的进展。这些算法主要使用单视角图片进行识别,被持续的挑战困扰,例如,所拍摄的图像往往无法覆盖手指静脉的广阔区域,造成有限的身份信息。重要的是,因为真实指静脉在手指中像一个3D网络结构,当血管以单视角捕捉会丢失掉3D信息。进一步,单视角采集的指静脉图片内容受手指的旋转和平移影响大,因此导致表现差。多视角指静脉识别为什么能够解决上述问题的原因总结如下:(1)对于多视角指静脉图片,相邻视角间的视觉相关性大大提高了窃取静脉图案的难度,并减少了利用印刷静脉图案进行攻击的可能性(2)多视角图像相比单视角图像包含了更丰富的内容,例如位置变化,多角度可以互为参考,因此弥补单视角下的静脉信息限制(3)多视角图片可以在3D空间封装指静脉的结构信息。算法可以潜在地从这些多视图输入推断手指静脉的空间特征,从而增强特征的可辨别性和鲁棒性

我们在这个工作的贡献总结如下:

  • 我们提出里THUMVFV-3V数据库,一个多视角指静脉数据库。
  • 一个基于Transformer的网络
  • 相比于多种方法,VPCFormer在多视角指静脉识别上取得了最好的表现。

相关工作

单视角指静脉识别

huang13受ViT成功的启发提出里指静脉Transformer(FVT),使用一个金字塔结构来进行多层次的特征提取。

多视角指静脉识别

yang15应用多视角指纹表面和血管图片来生成点云用来识别,进一步,它们结合注意力机制到MVCNN来有效处理多视角输入。最近,19FV-LT应用了预训练的Transformer并堆叠三个块,结合一个局部信息矩阵,来提取多视角指静脉特征。

与上面提到的方法不同,我们的VPCFormer在静脉模式限制下提取了视角间和视角内的相关关系,捕捉了近邻内背景和血管间的相互关系。这个设计增强了模型提取多角度指静脉特征的效率。

Transformer

受到ViT和它的变种的启发,我们提出了VPCFormer,一个基于Transformer结构的模型,用来探索视角间和视角内的血管模式相关性。

数据库

基本信息

为了收集足够的样本,我们邀请了180名志愿者参与我们的数据获取过程。完整的收集过程分为最小间隔30天,最大间隔106天,平均45.8天的两个阶段。除此之外,171个对象参与全程,而另外9名缺席了第二次采集。所有对象提供双手的中指和无名指成像,每根手指6个样本,每个样本由三张不同角度的图片构成,总共18张图片。

排除掉过曝和不合适的,我们的THUMVFV-3V包含660类,总数23670张指静脉图片,并且数据集是性别均衡的。

在这里插入图片描述

预处理操作有四个步骤(1)手指边缘的粗检测(2)手指边界的细化(3)角度对齐(4)ROI生成,在图二我们给了一个预处理步骤的简要介绍。

在我们的THUMVFV-3V中,提供了三种ROI

  • ROI1:包含所有内容只做角度矫正。
  • ROI2:只包含手指区域,所有非手指区域被手指掩膜掩盖掉
  • ROI3:基于ROI2,手指区域沿着列方向对手指区域进行线性插值以扩展静脉区域,覆盖整个图像。最后resize到100 x 200

在这里插入图片描述

方法

总体结构

在这里插入图片描述

手指静脉图像中的背景变化受到沿着近红外光路的皮下组织厚度和脂肪含量变化的影响,多个视图的参与在不同视图背景之间的相关性中引入了复杂性和不可预测性。另一方面,相邻视角的血管模式,位于相同的空间区域,应该从视角中提取到强烈的相关性,尽管两个视角图片间存在视觉差别。因此,更应该考虑不同视角间的静脉模式相关性和不是那些背景间的。

在指静脉图像中,静脉和周围的背景联合影响成像结果,因此,不仅仅考虑不同视角模式间关系是至关重要的,也要考虑血管和背景间的局部相关性。

基于这些观察结果,我们提出里一个基于Transformer的模型,称为VPCFormer来进行多视角指静脉特征提取。VPCFormer主要由一些VPC编码器和NPM堆叠而成。具体来说,一个VPC编码器由一个VOAM和一个IFFN构成。通过引入血管掩膜,VPAM旨在增强血管信息间的交互通过视角间和视角内的注意力。IFFN用来有效聚合前面的注意力和内容信息。更进一步,NPM设计用来捕捉一个局部区域内的像素相关性。

给定一个多视角手指图片输入 { I i } i = 1 U \{I^{i}\}^U_{i=1} {Ii}i=1U U U U表示视角的数目。每个视角 I i I^i Ii被变换到数据token序列 X 0 i ∈ R H W p 2 × d X_0^i \in{\mathbb{R}^{\frac{HW}{p^2}\times d}} X0iRp2HW×d通过patch嵌入层,这里 p p p表示patch大小, H , W H,W H,W表示高宽, d d d表示token维度。对于第 l l l个VPC编码器,其第 i i i个视角的输出表达为 X l i X_l^i Xli。最后,VPCFormer提取了多视角指静脉特征 f f f来进行识别。

静脉掩膜生成

为了限制自注意力模块的注意力到静脉模式,有必要获取相应的静脉掩膜。

起初,我们需要获取血管模板来表示血管像素的位置。迄今为止,没有包含血管分割ground-truth的指静脉数据集存在。手工分割和标注不仅是费时费力,而且会对算法泛化性造成不好的影响。从先前的工作10获得灵感,可以使用一些现存算法的输出作为血管模板,缓和单方法的影响。采用四种可信赖的方法,LMC,Kumar,EMC和EIFNet,后者是唯一一个在THU-FVS上训练的。在融合步骤,采用一个多数投票机制:当一个像素被三个或更多的算法认证为血管点,那么就会被标注为血管,否则,标注为背景点。对于融合模板,血管点为1,背景点为0。

在这里插入图片描述

之后,由 H W p 2 \frac{HW}{p^2} p2HW元素组成指静脉掩膜。特别是,一个 p × p p\times p p×p的所有值被设为1方形掩膜应用。使用步长 p p p和血管模板进行卷积。卷积结果称为 M ^ \hat{M} M^,上面提到的操作表达为:
M ^ ( i , j ) = ∑ m = 0 p − 1 ∑ n = 0 p − 1 T ( p ⋅ i + m , p ⋅ j + n ) \hat{M}(i,j) = \sum_{m=0}^{p-1}\sum_{n=0}^{p-1}T(p\cdot i+m,p\cdot j+n) M^(i,j)=m=0p1n=0p1T(pi+m,pj+n)
T ( i , j ) T(i,j) T(i,j)表示位置 ( i , j ) (i,j) (i,j)的值。因此,静脉掩膜 M M M可以被计算为
M ( i , j ) = { 1 if  M ^ ( i , j ) ≥ ζ , 0 otherwise , \mathbf{M}(i,j)=\begin{cases}1&\text{if}\ \hat{\mathbf{M}}(i,j)\geq\zeta,\\0&\text{otherwise},\end{cases} M(i,j)={10if M^(i,j)ζ,otherwise,
ζ \zeta ζ是预先设定的阈值避免小数目血管像素造成的错误。

在这里插入图片描述

VPC编码器

虽然应用自注意力模块可以捕捉全局信息和长距离依赖,但是,直接应用这些模块到多视角输入,允许模型自动学习所有可能的长距离依赖是不合适的,因为受限于有限的训练样本和不同视角间背景的弱相关性,我们设计了基于多头自注意力的VPAM,来提取视角间和内的血管模式的相关关系。VPAM的整体结构如上图所示。

视角内相关性的提取

对于第 i i i个视角的数据token X i X^i Xi,相应的查询 Q i Q^i Qi,键值 K i K^i Ki和值 V i V^i Vi计算如下:
Q i = X i W q , K i = X i W k V i = X i W v \begin{aligned} Q^i &= X^iW_q,\\ K^i &=X^iW_k \\ V^i &= X^iW_v \end{aligned} QiKiVi=XiWq,=XiWk=XiWv
W q , W k W_q,W_k Wq,Wk W v W_v Wv d × d h e a d d\times d_{head} d×dhead维的可学习权重矩阵。基于这三个向量,第 i i i个视角的注意力分数矩阵 S i i S_{ii} Sii可以计算为 S i i = Q i ⋅ K i ⊤ S_{ii} = Q^{i}\cdot K^{i^{\top}} Sii=QiKi。为了限制模型注意力到血管模式,我们使用上乘的掩膜 M i M^i Mi来设置 S i i S_{ii} Sii的相关分数,将和背景token相关的相关分数设定为负无穷,即
S i i ~ = − ε ( 1 − M i ) + S i i \tilde{S_{ii}} = -\varepsilon(1-\mathbf{M}^i)+S_{ii} Sii~=ε(1Mi)+Sii
ε \varepsilon ε表示一个非常大的整数值,在这篇文章中, ε = 2 31 − 1 \varepsilon=2^{31}-1 ε=2311。接下来,我们使用 s o f t m a x softmax softmax S ~ i i \tilde{S}_{ii} S~ii转化为概率分布 P ~ i i \tilde{P}_{ii} P~ii:

P ~ i i = s o f t m a x ( S ~ i i d k ) \tilde{P}_{ii} = softmax(\frac{\tilde{S}_{ii}}{\sqrt{d_k}}) P~ii=softmax(dk S~ii)

d k d_k dk表示 K i K^{i} Ki的维度。在这里 P ~ i i \tilde{P}_{ii} P~ii只保留了在第 i i i个视角内的不同位置和血管模式间的相关信息,而忽略了和背景区域的联系。最终,基于概率分布 P ~ i i \tilde P_{ii} P~ii,视角内自注意力可以计算为

O i n t r a i = A t t e n t i o n ( Q i , K i , V i ) = P ~ i i ⋅ V i O_{intra}^i = Attention(Q^{i}, K^{i},V^{i}) = \tilde{P}_{ii}\cdot V^i Ointrai=Attention(Qi,Ki,Vi)=P~iiVi

视角间相关关系提取

提取视角间相关性的操作和视角内相似。对于来自两个视角的给定数据token X i X^i Xi X j X^j Xj,我们需要将来自视角 i i i的查询 Q i Q^i Qi和来自视角 j j j的键值 K j K^j Kj相乘来计算视角 i i i j j j不同位置的注意力分数。称为 S i j = Q i ⋅ K j ⊤ S_{ij} = Q^i\cdot K^{j^\top} Sij=QiKj。对于 S i j S_{ij} Sij的第 c c c行( S c ∗ S_{c*} Sc),主要表示 X i X^{i} Xi的第 c c c个token和 X j X^{j} Xj中所有token的注意力分数。类似地,我们需要限制视角 j j j的注意力区域。因此,通过使用视角 j j j​的血管掩膜来屏蔽模型对非血管区域的注意力

S i j ~ = − ε ( 1 − M j ) + S i j \tilde{S_{ij}} = -\varepsilon(1-\mathbf{M}^j)+S_{ij} Sij~=ε(1Mj)+Sij

在这里, S ~ c ∗ \tilde{S}_{c*} S~c表示和 X i X^i Xi的第 c c c个token和所有 X j X^j Xj的表示血管的token间的注意力分数。

就像之前着重提到的,视角间注意力的关键目标在于捕捉不同视角间包含血管模式的token的相关关系。显然,如果 X i X^i Xi的第 c c c个token表示背景区域, S ~ c ∗ \tilde{S}_{c*} S~c表示一个 X i X^{i} Xi中的背景token和所有 X j X^j Xj中的token的相关关系,阻止 X i X^i Xi背景token的相应注意力分数至关重要。然而,直接操作 S ~ i j \tilde{S}_{ij} S~ij会导致需要对 s o f t m a x softmax softmax输出做二外的操作,我们直接将 s o f t m a x softmax softmax概率分布的输出直接设置为
P ~ i j = ( M i ⋅ 1 ⊤ ) ⊙ s o f t m a x ( S ~ i j d k j ) \tilde{P}_{ij} = (M^i \cdot 1^\top)\odot softmax(\frac{\tilde{S}_{ij}}{\sqrt{d_{k^{j}}}}) P~ij=(Mi1)softmax(dkj S~ij)
⊙ \odot 是哈达玛积, 1 ∈ R H W p 2 × 1 1\in\mathbb{R}^{\frac{HW}{p^2}\times 1} 1Rp2HW×1表示一个元素全为1的列向量。在这里, P ~ i j \tilde{P}_{ij} P~ij专门保留了视角 i i i j j j血管token之间的联系。最后我们将视角间注意力操作的输出记为

O i n t e r i j = P ~ i j ⋅ V j O^{ij}_{inter} = \tilde{P}_{ij}\cdot{V}^{j} Ointerij=P~ijVj

输出融合

当我们获取了两种注意力输出 O i n t r a i O^{i}_{intra} Ointrai O i n t e r i j O^{ij}_{inter} Ointerij,我们直接将他们相加来获得VPAM最后的输出

O i = O i n t r a i + O i n t e r i j O^{i} = O^{i}_{intra} + O^{ij}_{inter} Oi=Ointrai+Ointerij

在这里插入图片描述

IFFN

在ViT,包裹行注意力信息的token会被送入两层MLP来增强特征学习。尽管如此,我们观察得出传统地前向网络(FFN)在指静脉特征提取任务上存在缺陷,因此造成显著的表现下降。

特别地,为了适应图像数据和更好组合前面的注意力,我们结合1x1卷积核地点卷积,和3x3卷积核地深度卷积。IFFN地具体结构如上图所示。

在IFFN,我们首先在空间上重新排列包含视角间和视角内注意力信息地token O i ′ ∈ R H W p 2 × d O^{i^{'}}\in\mathbb{R}^{\frac{HW}{p^2}\times d} OiRp2HW×d来获取视角特征映射 F i ∈ R d × H p × W p F^i \in{\mathbb{R}^{d\times \frac{H}{p}\times \frac{W}{p}}} FiRd×pH×pW。接下类,一个点卷积用来将通道从 d d d扩展为 4 d 4d 4d。这个技术增强了它在高维空间的表现能力。在这之后,我们应用一个深度卷积,在不显著增加参数数量的情况下增强注意力和内容信息。然后在通过一个点卷积将维度复原回 d d d

近邻感知模块(NPM)

为了补充模型捕捉局部近邻相关性的能力,提出了NPM。卷积操作天然拥有捕捉近邻内图像像素间相关性的能力。通过设置卷积核大小或者调整卷积层数调整这一能力。最后,我们提出了使用两层3x3卷积核的卷积层的NPM用来捕捉5x5近邻内的像素间相关性。为了减少参数量没有直接使用5x5卷积层。对于NPM的输入,来自各个视角的数据token被排列为空间结构映射图像网格,允许我们有效适应卷积操作

patch嵌入和输出层

patch嵌入

为了使用基于Transformer的模型处理,图像首先送入嵌入层,将每个不重叠的patch变成嵌入token嵌入。我们使用Visformer的patch嵌入来实现参数和表现的平衡。

输出层

在经过 L − 1 L-1 L1NPM和 L L LVPC编码器,得到所有视角的数据token, { X L i } i = 1 U \{X_L^i\}^U_{i=1} {XLi}i=1U。下一步是融合 { X L i } i = 1 U \{X_L^i\}^U_{i=1} {XLi}i=1U以全视角指静脉特征 f f f用来识别。特别地,对于第 i i i个视角,对于横跨 X l i X_l^i Xli的每个位置计算平均值来获得视角表达 f i f^{i} fi:

f i = 1 H W p 2 ∑ j = 1 H W p 2 x j i f^i=\frac{1}{\frac{HW}{p^2}}\sum_{j=1}^{\frac{HW}{p^2}}\mathbf{x}_j^i fi=p2HW1j=1p2HWxji

平均操作在保持全局信息的同时有助于减轻噪声的影响。为了将拼接的视角表达 [ f 1 , . . . , f u ] [f^1,...,f^u] [f1,...,fu]映射到目标特征空间,一个线性层被用来学习视角表达间的隐含关系最终获得多视角指静脉特征 f f f来进行识别。这个过程表达为

f = L i n e a r ( C o n c a t ( f 1 , . . . , f U ) ) f=Linear(Concat(f^1,...,f^U)) f=Linear(Concat(f1,...,fU))

在这里插入图片描述

对于提取到的特征,我们使用最近邻分类器,采用余弦相似度作为距离度量进行指静脉识别。

实验

实验设置

所有传统地方法在Matlab中实现,输入ROI顺序经过中值滤波和对比限制自适应直方图均衡。所有subspace方法在Matlab中实现,所有ROI reshape为64 下144没有额外的预处理。包含的深度学习方法通过移除最后的分类层和用circle loss替代softmax loss来裁剪用于特征提取。

单视角识别

在这里插入图片描述

三种基于方向性特征的传统方法视角间的性能损耗低,具有良好的鲁棒性

多视角识别
闭集协议

多视图指静脉识别是指同时使用来自不同视图的多个指静脉图像进行完整的身份验证。

在这里插入图片描述

开集协议

在这个部分,分配80%的类别(528)用于训练,剩下的20%(132)用于评估。更重要的是,评估涉及132个看不见的类,其中包括来自第一期的注册样本和来自第二会话的探测样本。

在这里插入图片描述

跨视角识别

在这里插入图片描述

即使是存在重叠区域的跨视角识别,基于深度学习的方法也可以提供可接受的结果。我们认为通过进一步的数据扩充,基于深度学习的方法可以在跨视角识别上获得持续提升。

进一步实验和讨论

多视角识别视角数的影响

在这里插入图片描述

因此,有必要明智地选择输入视图的数量,以在模型性能和模型复杂性之间取得最佳平衡。

消融实验

在这里插入图片描述

全局token的讨论

在ViT中,输入要在patch嵌入层之后拼接类别token,认为类别token可以起到全局表达的作用。只有类token用于特征提取或分类。而一些研究反对使用类别token,而建议在数据token上使用平均池化来获取全局特征。对于具体的基于多视角输入的研究,提出了视角token的概念。简单地说,视角标记只是从特定视图中提取信息,这可以被视为相应视图的特征。我们设计了以下策略:

  • 只有类token

类token的描述会打乱token序列的空间排列。因此,类别token不会进入NPM和IFFN的深度卷积层,也不会参与VPAM。为了促进类别和数据token之间的交换,我们引入了一个新的多头注意力模块在VPAM之后。MHSA操作只更新类别token而不更改数据token。最后,只有类别token被用于表达输出特征 f f f

  • 只有视角特征

类似的,加入视角token也会打乱数据token的空间排列。由于视角token只和相应视角内的数据token交互,通过增加额外的掩膜使视角token参与在VPAM的视角内自注意力。视角token前向传播方向如图12所示。通过在合适的位置分开视角和数据token,我们可以防止模型中任何数据token流的孙环。最后,所有视角token被直接拼接进入一个线性层。

在这里插入图片描述

  • 两种token

如上所述,视角token构成了每个单独视角的抽象,而类别token表达了一个全局特征。当结合这两种全局token时,我们保留了视角token的刘翔。除此之外,在VPAM后插入一个新的多头注意力,以特别促进所有视角token和类别token。

在这里插入图片描述

效果差可能是因为有限训练数据下提取不同全局信息的挑战。出乎意料地是,两种token的结合导致网络未能收敛,是ERR保持在50%。这个情况可能是因为视角token很难表达每个视角的全局信息。因此,类别token很难从视角token中获取全局信息。

位置编码的讨论

许多研究将Transformer结构和位置编码结合来捕获输入的空间信息。在实验中,我们调查了位置编码在VPCFormer中的作用。

因为输入是由多视角图片组合而成,我们提出两种策略A和B。

在这里插入图片描述

策略A:相同的正弦编码应用在每个视角的输入token,确保不同视角间同一的位置嵌入。

策略B:来自不同视角的token以视角顺序拼接在一起。这些token增加正弦位置编码之后再切分回原来的视角序列。在这种情况下,不同视角图片的位置编码是连续的。

结果显示提升很少,可能是因为卷积的引入使得网络继承了卷积建模局部特征的能力,导致位置编码效果下降。

在这里插入图片描述

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

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

相关文章

使用jscpd对比重复代码

背景 检查项目中重复的代码,或者代码片段 jscpd 两个文件对比 Jscpd 是一个用于检测代码复制和粘贴的工具,它可以比较两个文件并报告相似性的百分比。 以下是如何使用 Jscpd 来比较两个文件的示例: 首先,确保你已经安装了 Nod…

数据库系统概论-第16章 数据仓库与联机分析处理技术

概念性的介绍,一略而过,不重要。 16.1 数据仓库技术 16.2 联机分析处理技术 16.3 数据挖掘技术 16.4 大数据时代的新型数据仓库 16.5 小结

大数据信用报告查询:三种查询方式揭秘,哪种更适合你?

了解大数据信用与人行信用的区别对于理解个人信用状况至关重要。本文将探讨大数据信用报告的查询方法,评估不同方式的优劣,并给出建议。 大数据信用报告的查询途径 1. 二维码分享查询 通过搜索引擎找到的相关文章可能会包含查询二维码。这类方式通常只提…

FMEA常见误区与能力提升方法——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 新版FMEA(故障模式与影响分析)作为一种重要的质量管理工具,被广泛应用于产品设计、生产和服务等领域。然而,在实际应用中,许多组织和个人常常陷入一些误区,导致FMEA的效果…

浅谈Javascript虚拟列表(virtaul list)改造成虚拟表格(virtaul table)的技术

前端加载百万条数据列表,如果采用真实的DOM插入100万个div(或li)标签,肯定是非常卡顿的。这就不得不使用虚拟列表技术方案,但是虚拟列表技术方案网上有很详细的实现方法,今天我就来谈谈根据网上的方案&…

【软考高项】十六、信息系统工程之安全工程

1、基础概念 定义:建造一个信息安全系统,它是整个信息系统工程的一部分,而且最好是与业务应用信息系统工程同步进行,主要围绕“信息安全”内容 信息安全系统三维空间: 包括安全机制、网络参考模型和安全服务 X轴是…

23 OpenCV 直方图比较

文章目录 直方图比较的目的相关性计算 (CV_COMP_CORREL)卡方计算 (CV_COMP_CHISQR)十字计算(CV_COMP_INTERSECT)巴氏距离计算 (CV_COMP_BHATTACHARYYA )compareHist 直方图比较算子示例 直方图比较的目的 直方图比较的目的是衡量两幅图像之间的相似度或差异度。通过计算图像的颜…

如何在 Windows 中恢复永久删除的文件

即使您从电脑或笔记本电脑中永久删除文件或文档,您也可以轻松恢复它们。因此,在本文的帮助下,我们将了解一些轻松恢复丢失数据的最佳和最值得信赖的方法。 生活中,难免会发生错误。这就是我们作为个人学习和成长的方式。这些错误…

OSError: We couldn‘t connect to ‘https://huggingface.co‘ to load this file

想折腾bert的同学,应该也遇到这个问题。 一、报错信息分析 完整报错信息:OSError: We couldnt connect to https://huggingface.co to load this file, couldnt find it in the cached files and it looks like google/mt5-small is not the path to a…

比堆垛机方案省电65% 实施快50% 四向车系统柔性化建设进程异军突起

对物流企业来说,供应链的数智化升级并非“赶时髦”,它需要找到一个既懂物流行业,又有数字化技术作基础的仓储方案提供商。而河北沃克基于AI底层技术、软硬一体化产品体系和技术创新行业经验双轮驱动的业务团队等“技术产品人才”三位一体优势…

杭州克鲁斯机器人控制信号线缆故障维修攻略,快来了解一下!

克鲁斯机器人作为工业自动化的重要组成部分,其稳定运行对于生产效率至关重要。克鲁斯机器人控制信号线缆作为机器人与外部控制设备之间的桥梁,承担着传输指令和反馈信号的重要任务。 一、克鲁斯机器人控制信号线缆故障识别与诊断 故障现象:当…

人工智能时代的引领者:AI提示工程激发大语言模型的无限潜能

文章目录 一、AI提示工程的概念与定义二、AI提示工程的应用领域三、AI提示工程的技术创新与突破四、AI提示工程的未来发展趋势《AI提示工程实战:从零开始利用提示工程学习应用大语言模型》亮点内容简介作者简介目录 一、AI提示工程的概念与定义 在当今日新月异的科…

【Python】为什么能用 tuple 的地方就不用 list

元组(tuple)和列表(list)的区别 相对于 list 而言,tuple 内的元素是不可变的,也就是tuple 不可对元素进行增删tuple是静态的固定大小的,而list是动态分配存储空间,自动扩容的。 内存比较 代码 listtest [1,2,3,4] tupletest …

洛谷_P2678 [NOIP2015 提高组] 跳石头_python写法

P2678 [NOIP2015 提高组] 跳石头 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) d, n, m map(int,input().split())data [0] for i in range(n):value int(input())data.append(value) data.append(d)def check(mid):now 0cnt 0for i in range(1,n2):if abs(data[now]-da…

十分钟快速入门 Python

本文以 Eric Matthes 的《Python编程:从入门到实践》为基础,以有一定其他语言经验的程序员视角,对书中内容提炼总结,化繁为简,将这本书的精髓融合成一篇10分钟能读完的文章。 读完本篇文章后,可对 Python …

Redis相关操作高阶篇--集群搭建

Redis相关操作大全一篇全搞定-CSDN博客 Redis集群 是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要seninel哨兵也能完成节点移除和故障转移的功能。需要将每个节点 设置成集群模式,这种集群模式没有中心节…

产品经理杂谈

像游戏一样设计联赛 1、通过互联网规模化,然后分析数据,哪里好,哪里不好,大家都喜欢你的产品了,然后反哺更大规模 2、产品分类 toC 工具 内容 游戏 社交 电商 交易 toB 内部办公类 – 提高企业内部效率,…

34 vue 项目默认暴露出去的 public 文件夹 和 CopyWebpackPlugin

前言 这里说一下 vue.config.js 中的一些 public 文件夹是怎么暴露出去的? 我们常见的 CopyWebpackPlugin 是怎么工作的 ? 这个 也是需要 一点一点积累的, 因为 各种插件 有很多, 不过 我们仅仅需要 明白常见的这些事干什么的即可 当然 以下内容会涉及到一部分vue-cli,…

一篇文章带你了解知乎热门话题的撰写技巧

在当今信息高速发展的时代,人们越来越依赖网络获取知识。而知乎作为一个知识分享和知识传播的平台,吸引了大量用户的关注和参与。那么,如何在知乎上撰写一篇引人注目的文章呢?接下来,腾轩科技传媒探讨一下知乎文章的撰…

【测试开发学习历程】MySQL数据类型 + MySQL表创建与操作

前言: 半夜梦到自己没有写今天的博客,结果惊醒起来看一看。 得,真的没写。QWQ 可谓垂死病中惊坐起了。 看看发博的时间6:16,而不是什么整点的,就知道我4点就起来了,不是定时发布&#xff01…