今天来介绍人脸嵌入技术(Face Embeddings)和Siamese Network,用于人脸特徵的数值表示。
人脸嵌入技术(Face Embeddings)和Siamese Network 是用于人脸识别的重要技术,尤其是用来将人脸特徵转换成数值表示,方便后续进行相似度比较。
1. 人脸嵌入技术(Face Embeddings)人脸嵌入(Face Embeddings) 是将一张人脸图像转换成高维的向量表示的一种方法,这些向量代表了人脸的独特特徵。具体来说,人脸嵌入模型会将每个输入的人脸转换成一个固定大小的向量(通常是128维或512维),这个向量包含了该人脸的核心特徵,例如眼睛的间距、嘴巴的形状等,这些特徵可以用来比较不同人脸之间的相似性。
人脸嵌入技术的核心思想是:相同人的人脸应该转换为相近的向量,而不同人的人脸则应该转换为相对较远的向量。最着名的应用之一是 FaceNet,其将人脸映射到一个嵌入空间,在这个空间中,欧几里得距离可以用来衡量人脸之间的相似度。
工作流程:预处理:对图像进行裁剪、对齐和归一化,以便统一格式。嵌入生成:使用深度学习模型(如卷积神经网络,CNN)生成人脸的嵌入表示。相似度度量:使用欧几里得距离或余弦相似度来衡量两张人脸的嵌入向量之间的距离,从而判断它们是否属于同一个人。
2. Siamese NetworkSiamese Network(孪生网络) 是一种特殊的神经网络架构,主要用于学习不同对象之间的相似性。该网络由两个共享相同权重的子网络组成,这两个子网同时处理两个输入,然后将它们的输出进行比较。Siamese Network 的主要用途就是在比较任意两个输入(例如两张人脸)的相似性。
特点:共享权重:两个子网共享相同的参数和结构,保证它们对输入进行相同的特徵提取。相似性评估:最终输出两个向量,通过比较这两个向量之间的距离来衡量相似性,常用的距离度量方式是欧几里得距离。工作原理:将两张人脸图像分别输入到两个相同的子网中。子网提取人脸特徵,输出两个嵌入向量。计算这两个嵌入向量之间的距离。距离越小,说明两张图像越相似(可能是同一个人)。距离越大,说明两张图像越不相似(可能是不同的人)。Siamese Network 常被应用于人脸验证,也就是判断两张人脸是否属于同一个人。这种技术在训练时不仅需要大量的人脸数据,还需要通过三元组损失(Triplet Loss)或者对比损失(Contrastive Loss)来优化网络,使得网络学习到更有效的相似度度量方法。
三元组损失(Triplet Loss)这是一种常见的损失函数,用来训练Siamese Network。三元组损失基于三个输入:Anchor(锚点)、Positive(正样本)、Negative(负样本)。目标是让锚点和正样本之间的距离比锚点和负样本的距离小,并且这个距离要至少大于某个阈值。
𝐿=max(0,𝑑(𝑎,𝑝)−𝑑(𝑎,𝑛)+𝛼)L=max(0,d(a,p)−d(a,n)+α)
其中:𝑑(𝑎,𝑝),d(a,p) 是锚点和正样本之间的距离。𝑑(𝑎,𝑛),d(a,n) 是锚点和负样本之间的距离。𝛼,α 是一个设置好的阈值,用来保证正负样本之间的距离差异足够大。
小结人脸嵌入技术和Siamese Network 是人脸识别技术中的核心组成部分。人脸嵌入将人脸特徵转换为向量表示,而Siamese Network 则用来比较这些向量的相似性,最终达到人脸验证的目的。