究竟機器是如何識別面部呢?
那麼,在回答這個問題之前,我們必須定義一些重要的詞。
機器學習(Machine learning):一種透過從資料或經驗中學習,對未知輸入資料進行預測,從而使計算機無需顯式程式設計就能學習的技術。
機器學習模型為一組輸入產生輸出,然後將其與所需輸出進行比較。機器學習用於輸入和輸出之間沒有經驗關係的應用中。
深度學習:基於人工神經網路,它是一種從人類大腦的結構和功能中獲得靈感的機器學習技術。
它使用大量處理層和大型資料集作為輸入,以提高預測精度。
在本文中,我想以零售店中應用的面部識別為例。實際上,這項技術可以在很多方面使用:
- 改善店內個性化
- 提供一對一的個性化購物體驗
- 瞭解遊客購買模式
過去,當你走進當地的商店時,店主會認出你,向你打招呼,或許還會給你一些東西。今天,透過市場營銷,零售商的目標是在面部識別中重現這種購物體驗。
人臉識別系統用一個影像或影片時,從資料庫標識和識別人。面部識別所涉及的眾多的挑戰包括:
- 資訊冗餘: 當你把一個100×100的面部影像,得到25610000 = 280000種可能的組合強度值。
- 人際差異: 兩個不同的人的影像可能看起來相似。
- 內部變化: 如果你拍攝同一個人的兩張照片,它會變得有點複雜,因為它們可能是姿勢的變化,面部表情的變化甚至是衰老等時間變化。
面部識別
讓我們分析幾種與面部識別相關的現有方法。
1)經典方法
經典方法是使用資料的領域知識來選擇特徵以建立特徵,然後透過機器學習演算法對特徵進行分類。經典方法僅適用於小型資料集。而且,它對姿勢,光照或遮擋的有一定要求。
2)現代方法
神經網路將自己找到特徵。這適用於大型資料集,並且對姿勢,照明等不變.Facebook的DeepFace和Google的FaceNet使用這種方法。
人臉識別系統的高階圖:
在面部識別階段,預處理影像用於正確識別人的面部。在面部檢測階段,系統檢測影像中是否存在面部,並且如果存在面部,則繪製影像的面部標誌並執行面部對齊。然後使用深度學習技術來識別該人是誰。
3)方向梯度直方圖(HOG)
HOG:用於計算機視覺和影像處理的特徵描述符,用於物件檢測。該技術計算影像的區域性部分中的梯度方向的出現。
該技術可以在影像的區域性部分中發現影像梯度或強度變化,以提取與邊緣和形狀相關的特徵。HOG特徵使用支援向量機分類器進行分類,以進行面部檢測。
基本上,系統將從更大的影像中提取您的臉部。然後將該影像與參考影像上的平均界標進行比較,並使用仿射變換進行對準。即使拍攝物件的影像傾斜,在執行仿射變換之後影像也會變得良好對齊。仿射變換是一種線性對映方法,可以保留點直線和平面,而不會造成任何失真。之後,使用深度學習方法將建立的影像用於面部識別。
深度學習和HOG
1.面部學習
具有深度學習架構的神經網路使用影像來提取影像特定的特徵和標籤。然後將這些特徵儲存為嵌入向量(每個使用者的面部)。
2.面部匹配
當新的輸入影像新增到系統時,它從該影像中提取特徵並將其與學習的特徵向量進行比較以執行相似性測量。輸出決定是否存在匹配或不匹配。
相似性可以透過餘弦或歐幾里德方法來測量。
卷積神經網路
CNN:使用感知器的特定型別的人工神經網路,機器學習單元演算法,用於監督學習,以分析資料。
卷積神經網路(CNN)是計算機視覺中使用最廣泛的深度學習架構。
為什麼要用神經網路呢?
- 需要更小的儲存器,在空間中的不同位置使用相同的filter 係數
- 在視覺和自然語言處理方面非常有效
- 不同姿勢,部分障礙物等不變
它是如何工作的?
它具有卷積層,非線性啟用函式層,池化層和全連線層。池化層的功能是減小影像的空間維度,並且來自該層的輸出是連線的神經網路。
學習是如何在神經網路中發揮作用的呢?
神經網路的目標是什麼?
調整引數以使訓練樣本更接近期望的結果。我們根據成本函式定義引數。顯然,成本函式是誤差,需要最小化。
Total cost= Σn i=1 cost(i)
卷積層中的filter 引數和全連線的神經網路層中的突觸權重是通常調整的引數,以最小化成本函式。基於隨機梯度下降(SGD)的學習用於訓練CNN。
SGD:用於最佳化可微分目標函式的迭代方法
卷積層的示例
輸入5×5影像,用3×3 filter矩陣進行卷積。
我們從輸入影像塊和filter影像的點積得到一個特徵圖。當您沿不同方向移動該視窗時,我們會獲得該物件的不同視角。此外,如果在輸入影像上滑動filter影像,結果將是特徵圖或特定於滑動區域的特徵組合。
ReLU啟用函式
ReLU: 是一種 啟用函式。在數學上,它被定義為y = max(0,x)。
ReLU是現在世界上最常用的啟用函式。它幾乎用於所有卷積神經網路或深度學習。
ReLu在CNN中引入了非線性。它透過在輸入影像中為負畫素值返回零來選擇性地啟用神經元,並且不啟用特定神經元。如果輸入大於零,則返回強度等於輸入值的輸出值。實際上,經過校正的濾波器影像只有非負值。
最大池化
最大池化:基於樣本的離散化過程。目標是對輸入表示(影像,隱藏層輸出矩陣等)進行下采樣,降低其維數並允許對包含在子區域中的特徵進行合併。
在該層中,表示的空間大小越來越小。
最大池化:
抽象形式的表示是透過將輸入劃分為較小的池區域並在每個區域中取最大值來實現的。在下面的示例中,如果我們取5,11,0和4,則輸出元素包含2×2矩陣的最大值,即11。
透過將多個CNN構建塊堆疊在一起來形成深度架構。深度學習過程涉及隨機初始化卷積中的filters並自動學習網路中最重要的引數。
使用SVD和反向傳播,網路經過訓練以正確識別人的面部。如果我們更深入地瞭解其他卷積層,則filter使用先前卷積層的輸入執行點積,以將畫素分類到邊緣。深度學習模型執行分層學習以組合多級輸出以更好地完成邊緣檢測。
深度學習架構將面部表示為N×N矩陣中的特徵向量。
對營銷影響
能夠識別和研究您的客戶/訪客是品牌的真正資產。我們可以想象一對一的個性化購物體驗,店內流量分析,更好地瞭解店內顧客路徑等。
品牌將能夠收集更多相關資料並改進其產品/服務。