當前位置:製作窩 >

創意生活 >攝影技巧 >

技術流:數碼相機中的人臉檢測技術與發展

技術流:數碼相機中的人臉檢測技術與發展

市場上許多數碼相機帶有“人臉識別”功能,拍照的時候通過定位人臉進行準確聚焦。它的工作原理就是實時人臉檢測(Face detection)技術,把它稱為人臉識別其實是不準確的。檢測或者定位是指在一個影象中找到人臉的位置,而識別(Recognition)是要指出這人是張三還是李四。識別是檢測的後續步驟,只有當人臉正確定位後,識別才能進行。

在1990年代之前,很多人臉檢測的方法是通過提取影象中臉的明顯輪廓,比如鼻子眼睛和下巴的輪廓來進行的。比如先對影象進行邊緣提取,根據人臉形狀為橢圓這一先驗知識找到臉部輪廓;或者通過對影象水平和垂直方向的灰度值進行累加(稱為積分投影),在一維投影曲線上判斷眼睛或者嘴的位置。在人們用計算機進行人臉檢測的早期階段,這樣的思路是比較普遍,它看起來和一個普通人對“在影象中怎樣找到人臉?”的回答一致:“先找眼睛鼻子或者嘴巴的輪廓......”。也許也有人會回答:“先根據面板顏色......”。實際上,形狀輪廓,或者膚色都不是很好的檢測線索。對於複雜的影象通過設定簡單的閾值提取輪廓,很難奏效;而膚色也容易和影象背景顏色相混淆,更何況顏色資訊在黑白影象中根本不存在。


進入90年代,隨著計算機處理能力不斷增強,進行影象處理運算的門檻大大降低了。人們在一臺普通的PC上也可以進行人臉檢測和識別演算法的研究,大量人臉識別和檢測的相關演算法湧現出來。人臉檢測方法也從之前的基於形狀輪廓的思路,轉向基於影象的方法。

數字影象處理通常把一個影象表達成矩陣的形式,一幅黑白影象矩陣中每個元素(稱為畫素)用8Bit(可表達0~255)的整數表示影象亮度。這樣的矩陣也可以看做一個3維曲面,如下圖。一個8Bit黑白影象一般稱為灰度影象,彩色影象則是由3層分別表示紅黃藍的8Bit影象(一個畫素24Bit)疊加而成的。一個64×64的人臉影象矩陣,它所能提供的全部資訊都包含在這個矩陣裡,不會更多(實際上它也可能是有冗餘的),所以利用影象的資訊進行人臉檢測是當前最常規的方法。

技術流:數碼相機中的人臉檢測技術與發展

人臉檢測的基本方法是用一個一系列小視窗掃描照片,視窗的尺寸可視實際人臉的大小選擇,比如{16,20,24,32,..., 120} 。掃描視窗,這可以說是人臉影象或者其他目標檢測的基本的工作方式,只有這樣才能覆蓋可能出現在不同位置、不同大小的人臉。對視窗中的影象塊提取一系列特徵,當這些特徵表現出的統計資訊滿足條件,才判斷這個影象為人臉影象。這是模式識別(Pattern recognition)領域的一個典型的兩類(“人臉”和“非人臉”)分類問題。

MIT媒體試驗室的Turk和Pentland在基於影象的人臉檢測和識別方面做出了開創性的工作。1991年他們發表基於主成份分析(PCA)的方法。他們把人臉影象二維矩陣每行首尾相接組成一個向量,這個向量可以看做是高維空間中的一個點。比如16×16的一個灰度影象,可以看成是256維空間中的一個點。大量的人臉影象在這樣的空間中應該是聚在一起的,叫做聚類(俗稱扎堆)。一個“非人臉”影象離開這個“堆”則比較遠。這樣扎堆的人臉與非人臉影象的邊界並不光滑,所以一般通過降低維數(高維空間投影到低維子空間,PCA就是幹這個的)的方法去除噪聲,另一方面在低維空間的計算量也會大大減小。作為人臉判斷的依據,“遠”和“近”是相對的概念,可以轉化為某種概率表達,比如高斯分佈的形式,但作為最終判斷Yes或No是需要一個閾值,它要在正確率和錯檢率之間取得平衡。這樣的閾值的選取非常微妙,在影象處理和模式識別領域裡是避免不了的。所以有人說,無論多麼好的演算法,歸根結底都是trade-off(權衡)。

基於PCA的方法,需要先對掃描視窗進行歸一化,變成長度一致的向量,再通過一個變換矩陣進行投影,變到低維子空間。這樣的矩陣乘法,其實是由一系列向量內積運算組成的,簡單說,就象一個2維向量(4,9)投影到x座標軸(1,0),只要做內積即可:4*1+9*0=4。這樣的簡單的步驟,對於大量掃描視窗來說,計算量還是很大的。這對數碼相機的系統(比如Arm系統或者加上影象處理DSP晶片)來說,負擔太重,幾乎無法做到實時處理。

另外,檢測演算法的缺陷也導致無法有很好的魯棒性(robustness)。把影象視窗矩陣簡單地首尾相接,實際上忽視了人臉在空間上的連續性,而僅僅是把影象看成一個向量,沒有更充分地利用人臉的先驗知識,比如眼睛區域的總是比臉部顏色深一些。

真正突破性的進展出現在2001年,P. Viola和M.J. Jones發表的會議論文,提出了基於“積分影象”和AdaBoost訓練的著名方法,才使得實時人臉檢測變成可能。這篇文章幾乎可以說是具有劃時代的意義,可以毫不誇張地說,現在市場上幾乎所有的人臉演算法都是以它為基礎的。我在一段很長的時間裡所做的工作都和它有關。以後有空我們再來談它吧,今天就到這裡。

相關文獻:

[1] 基於PCA方法在這裡可以查到,第一篇就是M. Turk, A. Pentland, Eigenfaces for Recognition。

[2]Viola-Jones論文Robust Real-time Object Detection
  • 文章版權屬於文章作者所有,轉載請註明 https://zhizuowo.com/shenghuo/sheyingjiqiao/mnp06.html