深度學習筆記(42) 人臉識別

2021-09-26 23:26:25 字數 2767 閱讀 6700

現在可以看到很多產品在運用人臉識別,如手機解鎖、車站身份識別認證、刷臉支付等

在人臉識別的相關文獻中,人們經常提到

有時候也被稱作1對1問題

只需要弄明白這個人是否和他聲稱的身份相符

人臉識別問題比人臉驗證問題難很多

因為這是1對多問題(1:k)

假設有乙個驗證系統,準確率是99%,自我感覺還可以

但是現在,假設在識別系統中,k=100

如果把這個驗證系統應用在100個人身上,人臉識別上,犯錯的機會就是100倍了

如果每個人犯錯的概率是1%,如果有乙個上百人的資料庫

如果想得到乙個可接受的識別誤差,要構造乙個驗證系統,其準確率為99.9%或者更高

然後才可以在100人的資料庫上執行,而保證有很大機率不出錯

事實上,如果有乙個100人的資料庫,正確率可能需要遠大於99%,才能得到很好的效果

臉識別所面臨的乙個挑戰就是需要解決一次學習問題而歷史上,當深度學習只有乙個訓練樣例時,它的表現並不好

看乙個直觀的例子,並討論如何去解決這個問題:

假設資料庫裡有4張成員**,分別是哆啦a夢、大雄、胖虎、小夫

現在假設有個人(編號1所示)來到乙個地方,並且想通過帶有人臉識別系統的任意門

現在系統需要做的就是,僅僅通過一張已有的胖虎**,來識別前面這個人確實是他

相反,如果機器看到乙個不在資料庫裡的人(編號2所示),應該能分辨出她不是資料庫中四個人之一

所以在一次學習問題中,只能通過乙個樣本進行學習,以能夠認出同乙個人

大多數人臉識別系統都需要解決這個問題

因為在資料庫中每個成員可能都只有一張**

有一種辦法是,將人的**放進卷積神經網路中

使用softmax單元來輸出4種,或者說5種標籤,分別對應這4個人,或者4個都不是

所以softmax裡會有5種輸出

但實際上這樣效果並不好

因為如此小的訓練集不足以去訓練乙個穩健的神經網路

而且,假如有新人加入伐木累,現在將會有5個成員需要識別,所以輸出就變成了6種

這時要重新訓練神經網路嗎?這聽起來實在不像乙個好辦法

所以要讓人臉識別能夠做到一次學習,為了能有更好的效果

現在要做的應該是學習similarity函式

詳細地說,想要神經網路學習這樣乙個用d

dd表示的函式:

d (i

mg1,

img2

)d(img1,img2)

d(img1

,img

2)= degree of difference between images

它以兩張作為輸入,然後輸出這兩張的差異值

如果放進同乙個人的兩張**,希望它能輸出乙個很小的值

如果放進兩個長相差別很大的人的**,它就輸出乙個很大的值

所以在識別過程中:

如果這兩張的差異值小於某個閾值 τ

ττ,它是乙個超引數,那麼就**這兩張是同乙個人

如果差異值大於 τ

ττ,就能**這是不同的兩個人,這就是解決人臉驗證問題的乙個可行辦法

將它應用於識別任務:

要做的是拿這張新(編號6)

然後用d

dd函式去比較這兩張(編號1和編號6)

這樣可能會輸出乙個非常大的數字,在該例中,比如說這個數字是10

之後再讓它和資料庫中第二張圖(編號2)片比較

這樣可能會輸出乙個非常大的數字,在該例中,比如說這個數字是10

之後再讓它和資料庫中第三張圖(編號3)片比較

這樣可能會輸出乙個非常大的數字,在該例中,比如說這個數字是11

之後再讓它和資料庫中第四張圖(編號4)片比較

因為這兩張**是同乙個人,所以希望會輸出乙個很小的數

然後再用它與資料庫中的其他所有(編號1、2、3)進行比較

通過這樣的計算,最終能夠知道這個人確實是胖虎

對應的,如果某個人(編號7)不在資料庫中,通過函式d

dd將他們的**兩兩進行比較

最後希望d

dd會對所有的比較都輸出乙個很大的值

這就證明這個人並不是資料庫中4個人的其中乙個

要注意在這過程中是如何解決一次學習問題的

只要能學習這個函式d

dd,通過輸入一對,它將會告訴這兩張是否是同乙個人

如果之後有新人加入了伐木累(編號5),只需將他的**加入資料庫,系統依然能照常工作

參考:

人臉識別9 人臉搜尋 概述

給定一張 與指定人臉庫中的n個人臉進行比對,找出最相似的一張臉或多張人臉。根據待識別人臉與現有人臉庫中的人臉匹配程度,返回使用者資訊和匹配度,即1 n人臉檢索。可用於使用者身份識別 身份驗證相關場景。一般人臉搜尋的步驟 給定一批人臉及標籤。對給定的人臉預先進行批量建模。對於後續新增或刪除的人臉可以進...

海思3559 人臉識別

nniefacelib是乙個在海思35xx系列晶元上執行的人臉演算法庫,目前整合了mobilefacenet和retinaface。後期也會融合一些其他經典的模型,目的也是總結經驗,讓更多人早日脫離苦海。目前只在3516dv300上進行了測試。鑑於很多同學在其他型號上進行測試失敗的情況,做一下統一說...

專案一 人臉識別

linux ubuntu16.04 ncnn框架 假設有乙個總目錄ncnn,存放在ncnn目錄下的examples資料夾,編寫乙個cpp檔案後 內容就是簡單的hello world 然後編寫cmakelists.txt cmake minimum required version 2.8 規定cma...