現在可以看到很多產品在運用人臉識別,如手機解鎖、車站身份識別認證、刷臉支付等
在人臉識別的相關文獻中,人們經常提到
有時候也被稱作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...