2018年1月21日 星期日

人臉識別在無人商店的應用 (Apply Face Recognition in Unmanned Store)

去年2017年,發生了兩件事情:
  1. 2017年蘋果公司推出了iPhoneX,捨棄指紋,改用人臉識別Face ID,造成人臉識別相關應用,突然火紅起來。許多做人臉識別的新創公司,市值也倍速增長。
  2. 2016年,Amazone推出無人商店,Amazone GO。大陸有樣學樣,很快,在2017年中,開始冒出了許多無人商店,其盛況,可比當年2016年共享單車的興起。

這兩件事情,結合在一起,就是「人臉識別在無人商店的應用」。

本篇,從Machine Learning的角度,探討Face Recognition,可以用在無人商店的那些場景。對於客戶而言,無人商店有這4個場景:
  1. 商店知道進店的客戶是誰
  2. 商店能為客戶推銷商品
  3. 客戶能在無店員的情況下,為購買的商品付款
  4. 商店可以根據客戶過往的銷售記錄,給客戶相關折扣
那麼,Face Recognition是否能應用在這4個場景?其實學過台大線上課程的Machine Learning Foundations,或對統計學有基本概念的,應該可以回答這個問題。

Face Recognition和Fingerprint Verification一樣,都是二元分類的問題:


上圖是Fingerprint Verification。f表示我們有一個很明確的方法,可以知道目前這個指紋是不是你的。若是,則輸出為+1,否則為-1。結果只有兩個,不是+1,就是-1,稱為二元分類問題。

可是通常,我們找不到這種很明確的方法。我們會用機器學習的方式,找到一個與f很接近的方法,稱為g,做為驗證指紋或人臉的方法。

用g識別這張臉是不是你的,若是,則輸出為+1,否則為-1。因為g是來自於機器學習的結果,不能完全代表未知的f。大部份情況下,g的預測的結果和f的一致,少部份情況下會不一致。我們將x視為某個fingerprint或是某個face,做進一步分析:
  • g(x) = +1
    • g(x) == f(x) True Positive (TP)
    • g(x) != f(x) False Positive (FP) —> Error
  • g(x) = -1
    • g(x) == f(x) True Negative (TN)
    • g(x) != f(x) False Negative (FN) —> Error

會有以上4個情況,會有兩個型態不同的Error。

True和False,這兩值是從何而來?當預測的g和實際的f一致 g(x) == f(x),則為True,不一致 g(x) != f(x),則為False。

Positive和Negative,這兩值是從何而來?取決於g的結果,+1代表Positive中文稱為陽性,-1代表Negative中文稱為陰性。

為何Positive和Negative無法從f的結果得出?那是因為我們永遠無法找到f。若能找到,就不用機器學習了。

以上4個情況,我們可以整理出一個Confusion Matrix:


這兩種型態不同的Error,稱為False Accept和False Reject:
  • False Accept (False Positive):誤識別
    • 別人的指紋,識別成我的指紋。或我的指紋,識別成別人的指紋
    • 別人的臉,識別成我的臉。或我的臉,識別成別人。如,小孩的臉可以解鎖父母的iPhone X,這種情況時有耳聞。
  • False Reject (False Negative):不識別
    • 系統不認我的指紋。如iPhone的指紋,常常不靈光。
    • 系統不認我的臉。如iPhone X在昏暗的環境下,人臉解鎖的失敗率較高。

然後,根據場景的需要,會有兩種Cost Matrix:

Cost Matrix 1

Cost Matrix 2

Cost Matrix 1 在乎的是 False Accept。如發生False Accept時,Cost設為1000。適用的場景如下:
  • 支付:
    • False Accept發生的機率要很低:若無人商店採用刷臉支付,萬一有一個人刷臉,系統誤識別為我的臉,那麼我就莫明奇妙被扣款。發生這種事情,會對無人商店的品牌信任度造成極大的損失。
    • False Reject發生的機率不用太低:頂多刷臉支付失敗,再刷一次就好了。
    • 手機解鎖:
      • Fase Accept發生的機率要很低:駭客想用指紋登入我的手機,萬一真的被試成功了,我會造成很多損失。
      • False Reject發生的機率不用太低:頂多指紋登入失敗,再按指紋一次就好了。
      Cost Matrix 2 在乎的是 False Reject。如發生False Reject時,Cost設為10。適用的場景如下:
      • 商品推薦
        • False Reject發生的機率要很低:若無人商店根據人臉,為客戶推薦商品。若False Reject機率太高,識別不出客戶,就無法為客戶推薦商品。商店可能會有營收上的損失
        • False Accept發生的機率不用太低:無人商店誤識別人臉為另外一個客戶,為客戶推薦錯誤的商品,這件事情的嚴重性,比識別不出客戶而不推薦任何商品,要來的低。
      • 折扣
        • False Reject發生的機率要很低:若無人商店根據人臉,給客戶折扣。若False Reject機率太高,識別不出客戶,客戶拿不到折扣會不高興。
        • False Accept發生的機率不用太低:無人商店將陌生人臉誤認為另外一個客戶,而給陌生人折扣,這件事情的嚴重性,比識別不出客戶而給任何折扣,要來的低。

      是不是有一個方法讓False Accept和False Reject發生的機率都變小?Face Accept Rate (FAR)和False Reject Rate (FRR)之間的關係,是一個 DET 曲線 (Detection Error Tradeoff Graph):


      FAR = (False Accept) / (True Positive + False Accept)
      FRR = (False Reject) / (True Negative + False Reject)

      若透過Machine Learning找到一個g,它的FAR愈小,FRR就愈大,反之亦然。

      回到客戶在無人商店的4個場景,看看Face Recognition可以應用在那些方面。
      1. 商店知道進店的客戶是誰
      2. 商店能為客戶推銷商品
      3. 客戶能在無店員的情況下,為購買的商品,付款
      4. 商店可以根據客戶過往的銷售記錄,給客戶相關折扣

      1 商店知道進店的客戶是誰

        此場景可以用Face Recognition實現,並且重點在FRR要盡可能小。

        2 商店知道進店的客戶是誰

        此場景可以用Face Recognition實現,並且重點在FRR要盡可能小。

        3 客戶能在無店員的情況下,為購買的商品,付款

        用Face Recognition實現刷臉付款,非常危險,即使FAR可以設非常小,也會有問題。根據2015年FDDB為各家的Face Recognition分析,發現在FRR<=70%的情況下,FAR可以達1/2845。意思就是2845次刷臉,會有一次出現FAR。若無人商店的註冊人數突破2845,那麼FAR出現的次數就會更頻繁,會造成災難性的結果。

        所以,完全靠刷臉支付,不可行。那我們會想,結果其它的Biometric Authentication,如指紋、虹膜、或聲紋,是否會好一點?這是所謂的Biometric Multi-Factor Authentication,還是會有FAR的問題。另外一個方法是,Biometric Authentication後,要求客戶輸入簡單的PIN碼,但還是有可能,誤識別的客戶,PIN碼剛好和另一個客戶一樣。

        我個人認為,無人商店,在免密支付的過程中,不應該用任何生物識別技術(包含人臉)驗證客戶的身份,做為支付與否的依據。

        4 商店可以根據客戶過往的銷售記錄,給客戶相關折扣

        此場景可以用Face Recognition實現,並且重點在FRR要盡可能小。

        -Count

        沒有留言:

        張貼留言