人脸识别(一)——从零说起
? ? ?
??????人臉識別的英文名稱是 Face Recognition,前段時間查找資料學的時候發現,不少人將人臉識別和人臉檢測(Face Detection)混為一談,很大程度上增加了查詢學習資料的難度,這里在參照一些前輩的基礎上,自己動手敲寫代碼,整理出了一個完整的版本。
?????
????????此系列文章將從理論到實踐進行整合:分三篇進行敘述,第一篇從零說人臉識別,保證大多數朋友能通過這篇文章了解到人臉識別的概念,并且能夠形成一個基本的框架。第二篇將進行初步的實踐,包括人臉圖像的采集,和如何利用opencv已有的模型根據人臉圖像進行訓練,得到需要的分類器。第三篇則是綜合篇,將程序以模塊化進行展示,以文檔形式實現人臉識別和建立MFC程序實現人臉識別。
?
一、人臉檢測和人臉識別
? ?????首先需要介紹下人臉識別和人臉檢測的不同。人臉檢測指的是對一幅圖片進行檢測,檢測圖片中是否包含有人臉;而人臉識別則是在人臉檢測的基礎上,不僅要檢測出是否該圖片中存在人臉,更要進一步將檢測出的人臉圖像與已有人臉庫中的進行對比,識別出該人臉圖像對應庫中的哪一個。人臉檢測的相關知識可以參照微信公眾號里(Mr_cplus)的相關歷史文章。
?
二、人臉識別的大概流程
? ? ?人臉識別大體上分為四步:人臉圖像采集及檢測、人臉圖像預處理、人臉圖像特征提取、匹配與識別。
(1)人臉圖像采集及檢測
???? ? 人臉圖像的采集指的是按照所研究的目標(比如研究不同姿態下的人臉識別),采集一定數量的圖像數據整理成庫。當前學術界已有許多現成的人臉庫,滿足基本的研究需求,當然也可以在這些數據庫的基礎上進行添加(比如將自己的人臉添加進某數據庫)。當前較為常用的人臉圖像數據庫有:
1. FERET人臉數據庫
????? 由FERET項目創建,包含14,051張多姿態,光照的灰度人臉圖像,是人臉識別領域應用最廣泛的人臉數據庫之一.其中的多數人是西方人,每個人所包含的人臉圖像的變化比較單一.?
2. MIT人臉數據庫?
? ? ? 由麻省理工大學媒體實驗室創建,包含16位志愿者的2,592張不同姿態,光照和大小的面部圖像.?
3. Yale人臉數據庫?
? ? ? 由耶魯大學計算視覺與控制中心創建,包含15位志愿者的165張圖片,包含光照,表情和姿態的變化.?
4. Yale人臉數據庫B
? ? ? 包含了10個人的5,850幅多姿態,多光照的圖像.其中的姿態和光照變化的圖像都是在嚴格控制的條件下采集的,主要用于光照和姿態問題的建模與分析.由于采集人數較少,該數據庫的進一步應用受到了比較大的限制.?
5. PIE人臉數據庫
? ? ? 由美國卡耐基梅隆大學創建,包含68位志愿者的41,368張多姿態,光照和表情的面部圖像.其中的姿態和光照變化圖像也是在嚴格控制的條件下采集的,目前已經逐漸成為人臉識別領域的一個重要的測試集合.?
6. ORL人臉數據庫
? ? ? 由劍橋大學AT&T實驗室創建,包含40人共400張面部圖像,部分志愿者的圖像包括了姿態,?表情和面部飾物的變化.該人臉庫在人臉識別研究的早期經常被人們采用,但由于變化模式較少,多數系統的識別率均可以達到90%以上,因此進一步利用的價值已經不大.?
……
(2)人臉圖像預處理
????????此處主要指兩方面:一個是如何將獲取的人臉圖像進行一些處理,使之和待放入的人臉庫內圖片數據有相同的尺寸,格式等;另一個是指將整體庫內圖片進行處理,使之滿足后面圖像特征提取以及識別中的要求。
(3)人臉圖像特征提取
? ?????人臉圖像特征提取是指按照一定的算法,將人臉圖像進行處理,提取出特征信息,形成特征矩陣等,之后用于分類器的訓練。特征提取的算法往往決定著識別效果的好與壞。
(4)匹配與識別
???????人臉圖像經過特征提取形成了一定的特征矩陣,之后將待識別的人臉圖片(或者視頻中的某些幀)當作輸入,按照同樣的特征提取算法,形成其人臉圖的矩陣,之后與利用分類器進行分類,識別其屬于庫內的哪一個類別。
?
三、人臉識別的常用方法
???????人臉識別方法有很多,當前大體可以分為四類:
基于人臉特征點的識別算法(Feature-based recognition algorithms)。
基于整幅人臉圖像的識別算法(Appearance-based recognition algorithms)。
基于模板的識別算法(Template-based recognition algorithms)。
利用神經網絡進行識別的算法(Recognition algorithms using neural network)。
?
四、部分結果的提前展示
??????此次動手實踐利用的人臉數據庫是ORL人臉數據庫,并且為了識別自己的人臉寫了一個拍照程序自拍,將采集到的自己的圖片信息加入該數據庫,形成一個新的包含有自己人臉信息的數據庫。
1、以文檔程序為例進行展示,當攝像頭檢測到的人臉是自己時,會“夸"自己是“ 大帥比”,檢測結果不是自己時會顯示“大丑逼”。哈哈哈,我長的帥已經不是秘密了!(41是指識別判斷的結果,41對應我自己,ORL中原有40個人)
2、以MFC程序為例進行展示。同樣,當攝像頭檢測到的人臉是自己時,會“夸"自己是“ 大帥比”,檢測結果不是自己時會顯示“大丑逼”。而且可以設定當檢測結果為數據庫中的某一個時,可以在另一個圖片控件(picture control)中顯示對應一張人臉庫中的圖像。(各種BUTTON表示不同功能,在接下來的兩篇中將進行介紹。)
?
以上就是本篇的全部內容,如果覺得有用,請幫忙關注下唄~
?
?
?
?
?
總結
以上是生活随笔為你收集整理的人脸识别(一)——从零说起的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统超时或者服务器会话丢失,第 17 章
- 下一篇: 人脸识别(二)——训练分类器