人臉識別究竟是如何實現的?

你還記得電影里的這些情節嗎?《變形金剛2》中 , 年輕的男主角和他的小伙伴們過關卡時 , 雖然騙過了值班軍人 , 卻被軍方的人臉識別技術發現 。 2014年翻拍版的《機械戰警》中 , 機械戰警第一次面對大眾公開亮相 , 就在人群中不停地掃描所有人臉 , 同時將獲取的人臉在通緝犯資料庫中作比對 , 瞬間就發現看熱鬧的人群中有一個逃逸多年的通緝犯 , 并將其制服 。 其他還有許多電影中 , 但凡是美國的機要部門 , 進門就要掃描各種生物特征 , 從早年電影中的指紋、虹膜 , 到現在的人臉 。
人臉識別到底是什么?
人臉識別 , 是視覺模式識別的一個細分問題 , 也大概是最難解決的一個問題 。
其實我們人每時每刻都在進行視覺模式識別 , 我們通過眼睛獲得視覺信息 , 這些信息經過大腦的處理被識別為有意義的概念 。 于是我們知道了放在我們面前的是水杯、書本 , 還是什么別的東西 。
我們也無時無刻不在進行人臉識別 , 我們每天生活中遇到無數的人 , 從中認出那些熟人 , 和他們打招呼 , 打交道 , 忽略其他的陌生人 。 甚至躲開那些我們欠了錢還暫時還不上的人 。
然而這項看似簡單的任務 , 對機器來說卻并不那么容易實現 。
對計算機來講 , 一幅圖像信息 , 無論是靜態的圖片 , 還是動態視頻中的一幀 , 都是一個由眾多像素點組成的矩陣 。 比如一個1080p的數字圖像 , 是一個由1980*1080個像素點組成矩陣 , 每個像素點 , 如果是8bit的rgb格式 , 則是3個取值在0-255的數 。
機器需要在這些數據中 , 找出某一部分數據代表了何種概念:哪一部分數據是水杯 , 哪一部分是書本 , 哪一部分是人臉 , 這是視覺模式識別中的粗分類問題 。
而人臉識別 , 需要在所有機器認為是人臉的那部分數據中 , 區分這個人臉屬于誰 , 這是個細分類問題 。
人臉可以分為多少類呢?
取決于所處理問題的人臉庫大小 , 人臉庫中有多少目標人臉 , 就需要機器進行相應數量的細分類 。 如果想要機器認出每個他看到的人 , 則這世界上有多少人 , 人臉就可以分為多少類 , 而這些類別之間的區別是非常細微的 。 由此可見人臉識別問題的難度 。
更不要提 , 這件事還要受到光照 , 角度 , 人臉部的裝飾物等各種因素的影響 。 這也不難解釋為什么人臉識別技術目前還沒有大量應用在日常生活中 , 大部分人只能在科幻電影中接觸人臉識別了 。
傻傻分不清楚——一些容易被混淆的概念
一些不太被人熟悉的事物 , 經常會伴隨著大量的概念混淆 。
比如對西方宗教不太了解的國人 , 可能搞不清楚為什么有些人信上帝但不信耶穌;都是在教堂工作的大叔 , 為什么有些要禁欲 , 有些卻能結婚 。
而人臉識別作為一個新事物 , 也伴隨著大量的概念混淆 , 而分清這些概念 , 對于理解人臉識別還是比較重要的 。
人臉檢測與人臉識別
完成人臉識別的工作 , 要經過幾個步驟 。 首先計算機需要在圖像或視頻中找到人臉的位置 , 這部分工作一般叫做人臉檢測 。 如前所述 , 這是一種粗分類 , 具體到人臉檢測中 , 實際上是二分類 , 計算機只需要判斷目標圖像是或者不是人臉 。 但由于并不能事先確定人臉的大小和位置 , 計算機需要以每個可能的人臉大小對全圖進行掃描 , 逐個判斷子窗口所截取的圖像是否為人臉 。 而每次掃描過程 , 子窗口移動的步長可能是幾個像素 。
所以你可以大致想象下 , 作一張圖的人臉檢測 , 計算機需要作多少次二分類判斷 。

猜你喜歡