人臉識別之人臉關鍵特徵識別
編輯導語:當下人臉識別在生活中被應用得愈加廣泛。那麼,人臉識別是如何對人臉關鍵特徵進行識別的?在前面文章裡,作者對人臉識別的影象預處理進行了介紹。本篇文章中,作者則介紹了人臉識別的關鍵特徵識別,讓我們一起來看一下。
在上次人臉識別之影象預處理中,我們增加了預處理環節、排除環境和其他因素的干擾,將注意力集中在人臉上,提升識別效果。
人臉比對是透過計算兩張照片灰度值矩陣的距離來實現的,影象預處理透過各種手段拉近了兩個矩陣間的距離,從而讓計算出來的結果更精準。
但這樣就夠了嗎?我們的計算是基於畫素點的灰度值開展的,在計算中,各個畫素點都參與運算,具有同等的重要性,對結果的貢獻度也是一樣的。這種設計是否合理,計算的粒度是否太細而影響結果的可靠性?
從直覺上判斷,影象中畫素的重要性程度肯定不一樣,比如眼睛、鼻子、嘴巴等部位的畫素重要性應該更高,對結果有更大的影響。而臉部中間部位的畫素重要性比較低,甚至都沒有參與運算的必要性。
研究表明,確實有很多畫素沒有參與運算的必要,這些畫素被去除後不影響識別結果,還可以加快識別速度,並提升模型魯棒性。比如,在基於畫素級別的人臉對比中,透過在影象中加入一些噪聲,衍生出對抗攻擊,從而讓識別出現錯誤。
一、人臉特徵不管是傳統的機器識別,還是近幾年大火的深度學習,都是將人類的學習能力透過計算機的計算能力得到表達和遷移。仔細想想,當我們將注意力集中在臉部,會怎麼樣描述一個人。可能的描述會是:
人天生就有很強的抽象和學習能力。當我們面對一張人臉照片時,會自動進行特徵處理和變換。當再次面對這張照片時,即使臉部特徵有所變形或者缺失,也不影響我們的識別。
人的這種抽象、變換及補全能力卻是計算機所缺少的,我們可以模仿人眼的這種識別手段,讓計算機將注意力轉移到鼻子、嘴巴等重要特徵上,從而擁有部分程度的智慧。
在計算機儲存的時候,不再是整個臉部的資訊,而是眼睛、鼻子、嘴巴等臉部部件,透過這些部件間的比對來判斷是否為同一物件。這種方法叫做基於人臉關鍵特徵的識別技術,通常是透過邊緣、輪廓檢測來實現的。
二、邊緣檢測什麼是邊緣?通俗來說就是眼睛、鼻子等外部輪廓,在灰度影象中就是一些灰度值變化明顯的點,這些變化反映了影象的重要程度或所蘊含的資訊。
直觀上看,影象的邊緣附近的值出現明顯的分割,灰度值變化較大,而影象中比較平滑的部分,其灰度值變化較小。對於計算機來說,可以透過灰度階的變化來對影象資訊進行邊緣檢測。
這背後有數學理論的支撐,我們一般用梯度來描述變化快慢。在影象中的灰度變化既有方向也有大小,就可以使用影象梯度來描述這種變化,進而可以檢測出影象的邊緣。
在數學上,梯度既有大小,又有方向,並且需要要有一定的條件,比如可導等。在影象中一般會簡化處理,使用運算元進行代替。
運算元其實也是一種濾波,但使用運算元更強調其數學含義和特定用途。目前常用的邊緣檢測運算元,包括Sobel,Laplacian運算元和Canny等。我們簡單描述下Canny邊緣檢測。
Canny邊緣檢測Canny邊緣檢測是澳洲計算機科學家 約翰坎尼(John F. Canny)於1986年開發出來的一個多級邊緣檢測演算法,其目標是找到一個最優的邊緣,其最優邊緣的定義是:
- 最優檢測——演算法能夠儘可能多地標示出影象中的實際邊緣,漏檢和誤檢的機率非常小;
- 最優定位——檢測出的邊緣要與實際影象中的實際邊緣儘可能接近;
- 檢測點與邊緣點一一對應——運算元檢測的邊緣點與實際邊緣點應該是一一對應的。
Canny邊緣檢測分為如下幾個步驟。
1)影象去噪
噪聲會影響邊緣檢測的準確性,因此首先要將噪聲過濾掉,通常使用高斯濾波。
2)計算梯度的幅度與方向
使用高斯濾波器來進行計算,讓距離中心點越近的畫素點權重越大。
3)梯度非極大值抑制
對畫素點進行遍歷,判斷當前影象是否為區域性最大值,即是否是周圍畫素點中具有相同梯度方向的最大值。如果不是,則不是影象的邊緣點,將灰度值置零,讓邊緣“變瘦”。
4)使用雙閾值演算法確定最終的邊緣
經過前面的步驟已經基本可以得到影象的邊緣,接下來對得到的邊緣進行修正。
設定兩個閾值:高閾值和低閾值。保留比高閾值高的邊緣,去除低於低閾值的邊緣,處於中間部分的則其連線情況進行再次處理:僅保留與其他邊緣連線的部分。
三、輪廓檢測透過運算元計算出來的邊緣一般是不連續的,很難形成相對完整和封閉的目標輪廓,這樣提取出來的特徵效果可能不好。透過使用輪廓檢測演算法,可以忽略背景和目標內部的紋理以及噪聲干擾的影響,對邊緣進行細化並進行連線,解決那些不能依靠亮度建模而檢測出來的紋理邊界。
輪廓檢測也有一些方法,比如使用專門設計的檢測運算元等。透過使用這些運算元,可以生成更好的臉部特徵,有利於後續的計算和比對。
四、實現過程以上簡單描述了人臉關鍵特徵的計算方法。在實際應用中,需要藉助於統計分析的技術,從大量的人臉中找到對應的特徵,並透過訓練出不同的分類器,如嘴巴分類器、眼睛分類器等,從而實現人臉及關鍵部位的檢測。
在進行比對時,需要對包含臉部的所有可能檢測視窗進行窮舉搜尋,得到關鍵部位資訊,並進行儲存或比對,這個過程相對比較耗時。在比對過程中,可以使用各個部位進行相似性比對,並進行結果合併;或者直接對包含各個部件的全域性特徵進行比對,直接輸出比對結果。
這兩種方法同樣對應著人類的識別過程,有研究表明,兒童識別目標(如人臉)往往依據目標的某些區域性特徵,而成年人則側重於記住目標的全域性。
人臉特徵的探測也可作為一種影象預處理手段,如果確定了兩眼的位置,得到兩眼間的距離,依此就可得到人臉的尺度大小,進行尺度標準化處理,解決人員距離採集器遠近的問題。
五、演算法評價從理論上來說,人臉的關鍵部位特徵相對比較穩定,對人臉、方向等沒有過多要求,透過演算法提取的特徵能準確反映物件的特徵,具有一定的不變性,保證了結果輸出的一致性,能夠滿足人臉識別在早期各應用場景的使用。
當然,這裡面的運算元設計和模型構建都需要有領域知識的支撐。運算元的構建、特徵的提取以及模型的建立都影響著最終的匹配結果,需要具有深厚的專家知識和經驗。這個過程往往是手工建模完成的,各個模型及引數的設定都比較耗時,具有一定的主觀性。
同時,特徵工程的適配性較差。比如,各地區人員臉部特徵不同,會導致已經調整好的演算法在落地時,需要手動多次調整引數,過程耗時、耗力,嚴重阻礙了演算法的大規模部署。
雖然,從表面上看,基於人臉關鍵特徵的識別方法有諸多缺點,且效率較低。但演算法能夠從人類的先驗知識出發,直觀而樸素,一定程度上推動了人臉識別技術的發展和普及,為後續更智慧的演算法奠定了基礎。
作者:AIoT產品,10年B端產品設計經驗;微信公眾號:AIoT產品
本文由@AIoT產品 原創釋出於人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基於CC0協議