当前位置:首页 > 探索

《眼見為憑》:「有視力的電腦」如何完成臉部辨識?

文:理查・馬斯蘭(Richard Masland)

今天讓你發生勝利呼喊的眼見有視發明,很快就會讓你發出恐懼的為憑呼喊。——貝托爾特・布萊希特(BertoltBrecht)

有視力的電腦電腦

你可能聽說過有視力的電腦,出現在自動駕駛車上,何完或是成臉能夠辨識臉部。擔憂科幻情節成真的部辨人會想到將來有天去百貨公司,攝影機拍到你的眼見有視臉,之後把你的為憑身分和購物喜好連接在一起,然後百貨公司會(以某種方式)操縱你買你原本沒有打算買的電腦東西。

我得告訴你,何完無須擔心……至少現在還不需要。成臉目前圖型式驗證碼(CAPTCHA)依然用來維持你的部辨網路安全。事實上圖型式驗證碼是眼見有視一個很好的例子,說明日常用電腦依然有難以解決的為憑任務(美國航太總署的電腦當然能夠破解絕大部分的圖型驗證碼,但在日常生活中出現的電腦業餘機器人是辦不到的)。

電腦能夠看東西,真的很厲害,而且辨別的速度突飛猛進。為了說明這種能力,我會介紹幾種辨識臉部的方法,這是我在本書一開始就提出的問題,對於視覺神經科學家而言,如聖母峰般高聳。

現在最佳的臉部辨識電腦其實表現得非常棒,幾乎和人類一樣好,不過體積比人腦大太多了,而且需要消耗許多能量。我將說明兩類南轅北轍的方式。其中一類以規則為基礎,也就是說這個方法會嚴格遵守一連串特殊的分析步驟。

大部分的人想到的會是這種,舉例來說,我在這一章開頭提到的那位堅持己見的航太工程師便是。為了方便說明,我把以規則為基礎的稱為「蠢方法」(dumb method),不過這一類中有些方法一點都不蠢。

第二類方式利用機器學習,模仿腦的運作,現在看來會是將來的主流,讓隱私權擁護者恐懼的也是這類方式。我們把這類人工智慧方式稱為「巧方法」(smart method)。我的描述將會集中在後者,主要是因為這些方法類似於神經元的行為,而我認為神經元是靈巧的。目前人工智慧法是臉部辨識的主流。

臉部辨識演算法中包括了數個任務:首先要認出有一張臉存在,然後分辨那是誰的臉。第一個任務只是臉部偵測(face detection),不是臉部辨識。在蠢方法和巧方法中,都需要完成這個任務。在有各式各樣物品的一幕中,例如百貨公司的男裝部門,這兩類方式都要能夠看出是否有臉部存在,並且把臉部影像提取出來以便後續分析。

但是在尋找臉部之前,電腦必須讓那個測試影像(對電腦來說)盡可能清晰,這些發生在演算法真正要開始找出臉部之前的過程,稱為前處理(preprocessing)。讓影像變得更清晰的方法非常多,有修圖經驗的人就知道。我會說明兩個例子。

第一個例子是最為自然的場景,光線並不單一:從窗外照進的日光會造成陰影,百貨公司室內的燈光集中在當天促銷的運動外套上。之前已經提到過,基於數種原因,我們不會注意到光亮的差異,但是手機或是電腦配備的數位相機卻會。電腦是根本沒有想像力的,這會是個大問題。同一個東西在不同的光照下,對電腦而言是不同的東西。

因此第一個前處理轉換辨識讓影像中的亮度「平面化」(flatten)。電腦會把整個影像中的亮度平均化(有的時候會採取類似平均化的巧妙方式),並且調整亮度,讓整個影像的亮度保持一致,這樣影像中的物體看起來會像是由單一均勻光源照射下的樣子。

其次,絕大部分的演算法會採用某種邊緣強化方法,這之前也多次提到過,邊緣與行動息息相關,演算法多多少少會讓邊緣更鮮明。

現在電腦清理好了影像,第二項任務是把影像中的臉找出來,這也有好幾種方法。其中一種很有趣,因為它類似於視覺皮質中神經結構進行的方式,產生的圖稱為HOG影像。

HOG的意思是「方向梯度直方圖」(histogram of gradients),其中的「梯度」是從亮到暗的變化區域,邊緣便是一邊亮而另一邊暗。換句話說,梯度不只顯現出邊緣,而且還可以指出邊緣是朝內或是朝外。電腦會盡可能計算影像中的梯度以及方向,並且描繪出來。

《眼見為憑》內文附圖-P_200Photo Credit: 時報文化

這裡是一個簡化過的影像。設計演算法的人把一個影像分解成許多縱橫各有十六個像素的小方塊,在每個小方塊中,演算法會計算有多少梯度指著主要的方向(上、下或是傾斜),然後把影像小方塊的梯度濃縮成簡單的邊緣線條,取代原來的影像,這個線條經過調整,之前是方格中最明顯的邊緣。

實際上,書中這個影像是許多HOG影像的平均值,來自於許多張臉,是共通的臉孔。你可以把這張臉當成模板來找出人群中的臉,方法是為影像中每個大小適當的區域都做一個HOG影像,每格大小和臉部相當。你把這個檢驗用的方格在你認為含有臉部的影像上移動,之後比較影像上某個HOG和理想中完美的臉部HOG。

大部分的區域中是沒有意義的混亂邊緣,但是有些和組合出的HOG相符,演算法會認為這些區域是臉。當然到目前還沒有指出是誰的臉,只能指出是臉而已。不過這個過程可把臉納入標準座標(into standard coordinates)中,這些圖案之後會再加以分類,同時比起原始影像,挑選過的影像在之後處理的難易程度會大幅降低。

演算法最先得到的是雜亂無章的像素,裡面人頭鑽動,像是有許多團像素雲。演算法會把可能是臉的像素團先挑出來。

現在影像經過清理,並且確定了臉孔的位置。經由一些調整,這些臉會成為標準格式(舉例來說,會把臉部仔細地切除下來,好去除周圍的影像,在有些科幻電影中你可以看到區隔臉部和周遭的小方框),接下來便能著手確認那些臉的身分。


分享到:

京ICP备19007577号-5