程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python人臉識別——從入門到工程實踐

編輯:Python

參考書籍:《Python人臉識別從入門到工程實踐》

全書共8章:
第 1 章:介紹了人臉識別的基礎知識和必備常識;
第 2~4 章:詳細講解了與人臉識別相關的數學、機器學習、計算機視覺、OpenCV相關的基礎和算法;
第 5 章:講解了深度學習的原理以及使用Keras 實現深度學習模型的方法;
第 6 章:介紹了常用的人臉識別算法;
第 7~8 章:詳細講解了人臉識別引擎的實現方法,以及如何將做好的模型進行工程化。

如何閱讀本書
本書分為 3 部分:

第一部分:基礎篇(1~4章),(介紹了基本知識與概念,包括人臉識別緊密相關的機器學習與數學知識、計算機視覺以及OpenCV庫等。)
第二部分:應用篇(5~6章),(具體講解了深度學習的框架Keras,以及如何通過該框架設計和實現一個人臉識別引擎。)
第三部分:拓展篇(7~8章),(人臉識別引擎做好後,無論在本地驗證多麼優秀,能否將其用起來才是最關鍵的。在這一部分中,講解了人臉識別系統的部署與圖像檢索知識。)

第一部分:基礎篇【理論篇】

何為人臉識別?

狹義的表述:以分析與比較人臉視覺特征信息為手段,進行身份驗證或查找的一項計算機視覺技術。
(即 一種身份驗證技術。(與指紋識別、聲紋識別、指靜脈識別、虹膜識別等均屬於同一領域,即生物信息識別領域。)(因此,狹義上的人臉識別一般指的是通過人臉圖像進行身份確認或查找的場景。))
廣義的表述:在圖片或視頻流中識別出人臉,並對該人臉圖像進行一系列相關操作的技術。
(例如,在進行人臉身份認證時,不可避免地會經歷諸如圖像采集、人臉檢測、人臉定位、人臉提取、人臉預處理、人臉特征提取、人臉特征比對等步驟,這些都可以認為是人臉識別的范疇。)

人臉識別的應用:

1.身份認證場景:(門禁系統、手機解鎖等)
2.證件驗證場景:(人臉驗證等)
3.人臉檢索場景:(對人臉圖片“一對多”地對比)
4.人臉分類場景:(判斷人臉圖片中的人臉:性別、年齡區間、人種、表情等)
5.交互式應用場景:(美顏類App)
…………

人臉識別的目標:

不同的應用場景下,人臉識別的目標可能是不相同的。但是,對於絕大多數的人臉識別應用場景,人臉識別的目標是類似的。
人臉識別的大致流程可以描述為:
1.通過人臉識別模型判斷圖片中是否存在人臉
2.如果存在人臉,則定位到該人臉的區位/或則提取該人臉圖像的高級特征(作為該人臉圖像的特征向量,並用在後續對圖片的處理中。)
由於人臉識別的應用場景不同,上述步驟的選擇和側重點也不盡相同。例如:
定位人臉在圖片中的位置,可以用於諸如AR等貼圖操作
(通過定位人臉的關鍵點,可以對人臉圖片進行幾何變換)
(通過幾何變換可以實現對圖像中人臉的校正)(同時,得到的人臉關鍵點還可以用來實現諸如“瘦臉”等操作。
如果想要實現的功能並不是對人臉圖片的幾何變換,
而是對圖片中的人臉進行特定判斷,如判斷圖片中人臉的性別、年齡等,
(那麼此時的目標是:提取出圖片中人臉的高級特征,然後根據提取出來的高級特征,使用分類器進行分類,即可實現諸如性別識別、年齡判斷等功能;)
(對於人臉比對,一個可行的思路仍然是提取圖片中人臉的高級特征,然後對這兩個特征進行對比,從而得出一個相似度數值,通過比較該數值與預設阈值的大小,從而判別兩張圖片中的人臉是否屬於同一個人。)
從上面的介紹中我們可以看出,不同人臉識別應用的很多步驟都是重合的,其差異僅在於操作層次的深淺。
通過合理選擇、組合對人臉圖片的操作層次,就可以實現我們預期的目標。
這個實現過程可以說是“萬變不離其宗”,最核心的技術便是提取人臉圖像的高級特征。

人臉識別的一般方法:

(以人臉對比場景為例,介紹一種人臉對比的可行思路)
1.圖像預處理:
(在很多計算機視覺項目中,往往需要進行圖片的預處理操作。)
(主要是因為輸入的圖片常存在不合規范的地方,甚至會干擾系統的後續工作。)
(如,圖片帶有噪聲,或者圖片尺寸不符合系統要求等,這些都是預處理這一步需要做的事。)
(而對應的處理方法可以是對圖片進行濾波等操作,從而使圖片更加符合系統要求。)
2.人臉檢測:判斷一張圖片中是否存在人臉的操作。
(對於人臉識別應用,人臉檢測可以說是必不可少的一個重要環節。)
(人臉檢測的好壞,將直接影響整個系統的性能優劣。)
3.人臉校正:
(又稱人臉矯正、人臉扶正、人臉對齊等)
(因為圖片中的人臉圖像往往都不是“正臉”,有的是側臉,有的是帶有傾斜角度的人臉。這種在幾何形態上似乎不是很規整的面部圖像,可能會對後續的人臉相關操作造成不利影響。於是,有人提出了人臉校正。)
(我們可以大致認為,人臉校正是對圖片中人臉圖像的一種幾何變換,目的是減少傾斜角度等幾何因素給系統帶來的影響。)
(因此,人臉校正一般也被認為是對人臉圖像的幾何歸一化操作。人臉校正一般被用在人臉對比等存在後續人臉特征提取的應用場景中。)
(但是,隨著深度學習技術的廣泛應用,人臉校正並不是被絕對要求存在於系統中。)
(深度學習模型的預測能力相對於傳統的人臉識別方法要強得多,因為它以大數據樣本訓練取勝。所以有的人臉識別系統有人臉校正這一步,而有的模型中則沒有。)
4.人臉特征點定位:指在檢測到圖片中人臉的位置之後,在圖片中定位能夠代表圖片中人臉的關鍵位置的點。
(常用的人臉特征點是由左右眼、左右嘴角、鼻子這5個點組成的5點人臉特征點,以及包括人臉及嘴唇等輪廓構成的68點人臉特征點等。)
(通過對圖片中人臉特征點的定位,可以進行人臉校正,也可以應用到某些貼圖類應用中。)
5.人臉特征提取:
(對於很多人臉識別應用來說,人臉特征提取是十分關鍵的步驟。(例如在性別判斷、年齡識別、人臉比對等場景中,將已提取到的人臉特征為主要的判斷依據。)提取到的人臉特征質量的優劣將直接影響輸出結果正確與否。)
(我們可以認為RGB形式的彩色圖片是一個具有紅、綠、藍三通道的矩陣,而二值圖像和灰度圖像本身在存儲上就是一個矩陣,這些圖片中的像素點是很多的。)
(而提取到的特征往往是以特征向量的形式表示的,向量的元素一般都不會太多(一般在‘千’這個數量級))
(因此,從宏觀角度來看,特征提取過程可以看作一個數據抽取與壓縮的過程。)
(從數學角度看,其實是一個降維的過程。)
6.分類器:指代一種分類算法。
(例如,我們需要判斷圖片中人臉所屬者的性別,在提取到人臉圖像的高級特征之後,我們要根據這個提取到的特征來判斷其性別。)
(這個過程其實是一個二分類的過程,也就是大家都知道的:在不考慮特殊情況的前提下,人類可以分為兩類,男人or女人)
(判斷的依據是前面提到的人臉圖像的高級特征,用於判斷的算法就是所謂的分類器。)
(當然,這個分類器的設計與實現其實並不是那麼容易的,我們會在後面的內容中詳細展開敘述。)
通過上述介紹,我們可以了解人臉對比的一個可行思路是:
首先進行圖片的預處理,然後進行人臉檢測判斷,最後提取特征並進行對比。
人臉對比是人臉識別中比較典型的應用場景,我們可以從這個例子中總結人臉識別應用的共性:
1.圖像預處理:(目的是減少圖片自身因素對系統判斷造成的干擾,或者使圖片格式更適合系統。常見的處理方式有圖片去噪、尺寸轉換、灰度化處理等。)
2.人臉檢測:(對於人臉識別應用場景,如果圖片中根本不存在人臉,那麼後續的一切操作都將變得沒有意義,甚至會造成錯誤的結果。而如果識別不到圖片中存在的人臉,也會導致整個系統執行的提前終止。因此,人臉檢測在人臉識別應用中具有十分重要的作用,甚至可以認為是不可或缺的重要一環。)
3.特征點定位與特征提取:(人臉識別系統如果想要實現一些高級功能,獲取特征將是必不可少的部分。對於不同的人臉識別應用場景,其對特征的定義也不盡相同。例如想要在圖片中的人臉上自動添加一個眼睛作為裝飾物,那麼我們需要獲取的特征就是雙眼在圖片中的位置,這樣以人眼為特征點的定位將是十分必要的;而對於人臉對比、性別識別等場景,獲取能夠代表圖片中人臉的一個特征向量將是十分必要的。)
4.對特征的利用:(我們已經明確了,獲取我們所需的特征使後續操作的重要基礎。特征的利用方式前面已經提到幾種,諸如使用分類器進行分類、使用比較器進行比較,或者利用定位到的人臉特征點進行圖片的貼圖。毫無疑問對特征利用的目的是很明確的,因為這往往就是我們最終想要獲取的系統直接輸出結果。)
上述過程在實現上可能會很復雜,但是對於大多數的人臉識別應用而言,大致的思路是相同的。
將上述內容歸結為人臉識別系統構建的一般方法,我們將在後續的內容中以這樣的思路進行人臉識別系統的設計與實現。

計算機視覺的新起點

(人臉識別是計算機視覺的一個重要應用,因此,說到人臉識別就不得不提及計算機視覺)
我們將以計算機為工具進行視覺感知與圖像處理等相關的研究領域劃分為一個獨立的研究空間,這個研究空間便是我們所謂的計算機視覺,也稱為機器視覺。
自從人工智能的概念提出來以後,就一直與計算機視覺產生著聯系。
20世紀50年代:被提出的感知機算法的一個典型應用場景,就是用來對圖像傳感器獲取到的20X20像素的字母進行識別。
20世紀90年代:機器學習算法迎來了一個“井噴”式發展時期。
(伴隨著更多機器學習算法的提出,機器學習開始成為計算機視覺領域的一個重要工具,其主要應用在圖片的檢測、識別與分類上。)
(值得一提的是,人臉識別也在這時迎來了一個研究上的高潮。但是,真正能夠算得上是計算機視覺新起點的時間點是在2012年。)
到了21世紀,計算機視覺俨然成為計算機學科的一項大的研究門類了。
(國際計算機視覺與模式識別會議(CVPR)、國際計算機視覺大會(ICCV)等計算機視覺領域的頂級會議也成為人工智能領域的年度盛會,在計算機學界具有舉足輕重的地位。
………………
深度學習的誕生為機器學習開啟了一個全新的研究領域。
在此之後,深度學習也成為研究計算機視覺的一項強有力的手段,在諸如人臉識別、物體檢測等領域大放光彩。
因此,深度學習的誕生,特別是AlexNet的實現,也被認為是計算機視覺發展的一個嶄新的起點。

計算機視覺的應用:

1.圖像分類:(Image Classification,指對圖片的整體內容進行識別,輸出類別標簽(包含 粗粒度分類 與 細粒度分類)
·數字分類
·場景分類
·人臉識別分類
·動植物分類
·車型分類
·食物分類
·藝術品分類
·邊緣檢測
……
可用於開發拍照識別應用(如:植物識別APP 等),以圖搜圖檢索引擎(如:‘百度識圖’等)
2.圖像分割:(Object Segmentation,指對圖片的語義目標進行像素級分類,並輸出輪廓等(包括語義分割、實例分割、全景分割)
·場景分割
·人像摳圖
·組織分割
·遙感圖像
……
可用於摳圖產品(如:證件照生成),醫學圖像(器官分割軟件)等領域
3.目標檢測:(Object Detection,指對圖片的目標進行定位,並輸出具體類別)
·人臉檢測
·行人檢測
·車輛檢測
·文本檢測
·標志檢測
·缺陷檢測
·目標計數
……
可用於安防監控(格靈深瞳安防監控系統),工業制造(產品外觀缺陷檢測系統)等領域
4.目標識別(文本特征):(指對各類場景中的文字與標志進行識別)
·文檔識別
·身份證識別
·車票識別
·銀行卡識別
·車牌識別
·發票識別
·快遞單識別
·儀表盤讀書識別
可用於文字識別(如:OCR系統),票據錄入(如:發票掃描機)等領域
5.目標識別(生物特征):(指對人臉、人體相關的生物特征進行識別)
·人臉識別
·人體識別
·手勢識別
·指紋識別
·虹膜識別
·步態識別
……
可用於考勤支付(如:人臉考勤機),社交游戲(如:AR游戲)等領域
6.目標跟蹤:(Object Tracking,指對視頻中的語義目標進行跟蹤)
·車輛跟蹤
·行人跟蹤
·動物跟蹤
·手勢跟蹤
·人臉跟蹤
……
可用於安防監控(如:重點人群監控),自動駕駛(如:前車跟蹤)等領域
7.圖像質量分析與美學評估:(Image quality assessment and Photo aesthetics assessment,指對圖片的質量與照片的美學進行評分)
(圖像質量分析:曝光、清晰度、顏色、質感、噪音、防手抖、閃光燈、對焦、偽像)
·質量評分
·美學評分
·構圖優化
……
可用於圖片展示(如:搜索引擎圖片排序),自動構圖推薦(如:相機構圖優化推薦)等領域
8.圖像降噪與修復:(Image Denoising,指去除圖片中的噪點、瑕疵等內容,提升照片的質量)
·醫學圖像降噪
·攝影圖像降噪
·圖像去雨
·水印去除
·圖像去陰影
·瑕疵修復
·人臉美顏
……
可用於攝影圖像處理(如:夜景圖像降噪),醫學圖像降噪(如:MRI圖像降噪)等領域
9.圖像增強:(Image Enhancement,指對圖片的對比度、色調等風格進行增強,使其擁有更高的美學價值或有利於其他視覺任務)
·夜景圖象增強
·去霧算法
·水下圖像增強
·美學增強
……
可用於攝影後期工具(如:snapseed)等領域
10.圖像去模糊與超分辨:(Image deblur and image super-resolution,分別指去除圖像的模糊與提升圖像的分辨率)
·圖像去模糊
·圖像超分辨
……
可用於老照片分辨率提升(如:‘你我當年’),視頻抖動修復(如:‘After effects’)等領域
11.圖像翻譯與風格化:(Neural style transfer and image to image translation,分別指基於神經網絡的圖像風格化以及圖像翻譯任務)
·油畫風格
·動畫風格
·圖像上色
·線稿上色
·字體遷移
……
可用於制作藝術風格圖(如:Prisma),動漫動畫創作(如:‘PaintsChainer’)等領域
12.圖像生成:(Image synthesis,指生成新的不存在的圖像)
·圖片生成
·數據增強
·數據仿真
……
可用於制作數據集(如:NVIDIA高清人臉數據集)等領域
13.三維重建(人臉人體):(3D Face/Body reconstruction,指基於二維圖像重建三維成三維人臉/人體)
·表情驅動
·人體驅動
·姿態編輯
·虛擬主播
·關鍵點定位
·虛擬試妝
……
可用於醫療美容(如:3D整容),游戲角色定制(如:網易游戲)等領域
14.三維重建(通用場景):(Scene reconstruction,指基於二維圖像重建三維場景)
·深度估計
·立體視覺
·SFS
·SFM
·點雲後處理
·視覺SLAM
……
可用於自動駕駛(如:掃地機器人),虛擬現實(如:AR游戲)等領域
15.圖像編輯(人臉人體):(Face/Person Attribute Edit,指對人臉/人體的相關屬性進行編輯修改
·人臉 年齡編輯
·人臉 表情編輯
·人臉 姿態編輯
·人臉 妝造編輯
·人臉 性別編輯
·人臉 身份編輯
·人體 姿態編輯
……
可用於人臉編輯(如:視頻換臉),虛擬試衣(如:移動試衣間)等領域
16.圖像編輯(通用):(Image Edit,指對圖像的內容進行編輯修改)
·深度編輯
·背景融合
·紋理修復
·交互式編輯
……
可用於圖片重對焦(如:Focus)等領域
17.視頻處理:(視頻是很多幀的圖片,視頻處理可以看作是很多幀的單個圖片進行的處理)
·視頻分類
·行為分析
·視頻分割
·視頻生成
·視頻預測
·視頻檢索
·光流估計
·關鍵幀提取
·視頻描述
·視頻換臉
……
可用安防監控(如:視頻摘要檢索系統),內容後創作(如:智能視頻剪輯)等領域
(18.圖片拼接)

(持續更新、完善中。。。)


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved