What is face recognition?

Face verification

  • 應該只有一個人
  • 確認臉是否為該 ID

Face recognition

  • 有 K 個人
  • 辨識該臉是哪個 ID

One Shot Learning

傳統方法 (或 deep learning) 不管用

  • 資料太少
  • 想多辨識一個人就要重 train model

Learning a "similarity" function

:degree of difference between images

  • if :同個人
  • if :不同人
  • :可以調整的 hyperparameter
  • 常使用 L2-norm 作為 d function
    • 就是 input image 之後 NN output 的 vector

Siamese Network

Triplet Loss

固定一個 anchor (A) image

  • positive (P):和 anchor 是同一人
  • negative (N):和 anchor 是不同人
  • 希望 ,即
    • 那它就全部 output 0 就好啦 安捏母湯
  • 改成希望
    • 是可以調整的 hyperparameter,又稱作 margin,和 SVM 的 margin 很類似

Loss Function

  • 這樣只要 ,那 loss 就是 0
  1. 要從 data 找到這樣的三元組,training data 同個人必須要有不只一張圖片,(A, P) 才能湊成對。
  2. 之後想要辨識的人可能只需要一張圖片就夠了

Example:

  • training set:1千個人的1萬張圖片 (平均每人十張)

然而要滿足 這樣的式子並不難

  • 因為對於反例樣本,本來就很有可能和 anchor 差很多,導致 gradient descent 學不到東西 (NN 本來就可以分得好了)
  • 因此需要挑選一些 非常難 train 的三元組來訓練 siamese network

Face Verification and Binary Classification

另一種訓練 siamese network 的方式

(img) 將 差異丟給 logistic regression 判斷是否同一人 - binary classification

    • 應該是 吧,影片寫錯?
  • 可以將上式的 換成 ,其實就是 chi-square similarity ()

  • logistic regression 應該是用原始的 training data 訓練?
  • 之前看到有用 KNN 做為後面的 classifier,但是它是用我們要辨識的人的 data 來訓練

一個 trick

  • 可以預先算好想辨識的人的 data 的 encoding,不用每次要比都要算一次

results matching ""

    No results matching ""