今天來介紹人臉嵌入技術(Face Embeddings)和Siamese Network,用於人臉特徵的數值表示。
人臉嵌入技術(Face Embeddings)和Siamese Network 是用於人臉識別的重要技術,尤其是用來將人臉特徵轉換成數值表示,方便後續進行相似度比較。
1. 人臉嵌入技術(Face Embeddings)
人臉嵌入(Face Embeddings) 是將一張人臉圖像轉換成高維的向量表示的一種方法,這些向量代表了人臉的獨特特徵。具體來說,人臉嵌入模型會將每個輸入的人臉轉換成一個固定大小的向量(通常是128維或512維),這個向量包含了該人臉的核心特徵,例如眼睛的間距、嘴巴的形狀等,這些特徵可以用來比較不同人臉之間的相似性。
人臉嵌入技術的核心思想是:相同人的人臉應該轉換為相近的向量,而不同人的人臉則應該轉換為相對較遠的向量。最著名的應用之一是 FaceNet,其將人臉映射到一個嵌入空間,在這個空間中,歐幾里得距離可以用來衡量人臉之間的相似度。
工作流程:
預處理:對圖像進行裁剪、對齊和歸一化,以便統一格式。
嵌入生成:使用深度學習模型(如卷積神經網絡,CNN)生成人臉的嵌入表示。
相似度度量:使用歐幾里得距離或餘弦相似度來衡量兩張人臉的嵌入向量之間的距離,從而判斷它們是否屬於同一個人。
2. Siamese Network
Siamese 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 則用來比較這些向量的相似性,最終達到人臉驗證的目的。