臉部嵌入技術全解析 — 512維向量背後的數學
當您在TianTangXX上上傳一張照片時,您的臉部在毫秒內被轉換為512個浮點數的向量。這篇文章深入探討這個過程背後的數學和工程。
從像素到向量
原始圖片首先經過RetinaFace偵測器處理。偵測器在圖片中定位所有面孔,並為每張臉輸出五個關鍵地標點:左眼、右眼、鼻尖、左嘴角和右嘴角。
仿射變換
使用這五個地標,我們計算一個仿射變換矩陣,將臉部裁剪並對齊到標準的112×112像素畫布。這確保所有臉部都處於相同的姿勢和比例。
ArcFace損失函數
ResNet-100骨幹網絡使用ArcFace(Additive Angular Margin Loss)訓練。與傳統的softmax損失不同,ArcFace在角度空間中添加一個邊距懲罰,迫使同一身份的嵌入更加緊密。
餘弦相似度的直覺理解
- 兩個向量的餘弦相似度衡量它們在高維空間中方向的一致性
- 值為1.0表示完全相同的方向(100%匹配)
- 值為0.0表示正交——完全無關
- 我們使用0.45(45%)作為「可見相似性」的閾值
FAISS索引結構
Facebook AI Similarity Search(FAISS)庫允許我們在數百萬個向量中進行亞毫秒搜尋。我們使用IVF-PQ(倒排文件量化)索引,將搜尋空間劃分為Voronoi單元,每次查詢只掃描最近的單元。