●前言
第1章人臉識別入門1
1.1人臉識別概況1
1.1.1何為人臉識別1
1.1.2人臉識別的應用2
1.1.3人臉識別的目標4
1.1.4人臉識別的一般方法5
1.2人臉識別發展狀況8
1.2.1人臉識別歷史沿革8
1.2.2DT時代的呼喚10
1.2.3計算機視覺的新起點10
1.3本章小結12
第2章數學與機器學習基礎13
2.1矩陣13
2.1.1矩陣的形式13
2.1.2行列式14
2.1.3轉置15
2.1.4矩陣的一般運算15
2.2向量17
2.2.1向量的形式18
2.2.2向量的點乘18
2.2.3向量的範數19
2.3距離度量19
2.3.1歐式距離19
2.3.2曼哈頓距離20
2.3.3餘弦距離20
2.3.4漢明距離21
2.4卷積22
2.4.1一維卷積22
2.4.2二維卷積23
2.5機器學習基礎25
2.5.1機器學習類別25
2.5.2分類算法26
2.6本章小結38
第3章計算機視覺原理與應用39
3.1計算機視覺介紹39
3.2顏色模型40
3.2.1彩色圖像40
3.2.2灰度圖像與二值圖像42
3.3信號與噪聲44
3.3.1信號44
3.3.2噪聲45
3.4圖像濾波45
3.4.1均值濾波45
3.4.2中值濾波47
3.5圖像的幾何變換47
3.5.1平移48
3.5.2旋轉49
3.5.3縮放50
3.6圖像特征50
3.6.1灰度直方圖50
3.6.2LBP特征51
3.6.3Haar特征52
3.6.4HOG特征54
3.7本章小結56
第4章OpenCV基礎與應用58
4.1OpenCV介紹58
4.2科學計算庫Numpy59
4.2.1array類型60
4.2.2線性代數相關62
4.2.3矩陣的高級函數64
4.3OpenCV基本操作70
4.4圖像的基本變換72
4.4.1顏色變換72
4.4.2幾何變換80
4.4.3圖像噪聲處理83
4.5本章小結86
第5章深度學習與Keras工程實踐87
5.1深度學習介紹87
5.2Keras框架簡介89
5.3Keras的使用方法91
5.3.1深度學習的原理91
5.3.2Keras神經網絡堆疊的兩種方法92
5.4常用的神經網絡層96
5.4.1全連接層96
5.4.2二維卷積層98
5.4.3池化層100
5.4.4BN層103
5.4.5dropout層105
5.4.6flatten層106
5.5激活函數108
5.5.1Sigmoid激活函數108
5.5.2Softmax激活函數109
5.5.3ReLU激活函數110
5.5.4Keras中激活函數的使用111
5.6優化器112
5.6.1SGD優化器113
5.6.2Adadelta優化器116
5.7損失函數117
5.7.1均方誤差117
5.7.2交叉熵損失函數118
5.7.3Keras提供的損失函數120
5.8模型評估方法122
5.8.1交叉驗證122
5.8.2分類器性能評估124
5.9數據增強127
5.9.1數據增強概述128
5.9.2Keras實現數據增強129
5.9.3自己實現數據增強133
5.10Keras的工程實踐134
5.10.1訓練時的回調函數135
5.10.2打印網絡信息137
5.10.3輸出網絡結構圖139
5.10.4獲取某層的輸出140
5.11本章小結142
第6章常用人臉識別算法143
6.1特征臉法143
6.2OpenCV的方法146
6.2.1人臉檢測方法147
6.2.2人臉識別方法149
6.3Dlib的人臉檢測方法151
6.4基於深度學習的圖片特征提取152
6.4.1AlexNet152
6.4.2VGGNet155
6.4.3GoogLeNet157
6.4.4ResNet160
6.5基於深度學習的人臉檢測161
6.5.1基於深度學習的目標檢測162
6.5.2MTCNN164
6.6基於深度學習的人臉識別167
6.6.1基於度量學習的方法168
6.6.2基於邊界分類的方法171
6.7本章小結177
第7章人臉識別項目實戰178
7.1人臉圖片數據集178
7.1.1OlivettiFaces人臉數據集178
7.1.2LFW人臉數據集180
7.1.3YouTubeFaces人臉數據集181
7.1.4IMDBWIKI人臉數據集181
7.1.5FDDB人臉數據集182
7.2使用OpenCV的人臉檢測182
7.2.1Haar級聯分類器182
7.2.2OpenCV的SSD人臉檢測器184
7.3使用Dlib的人臉檢測186
7.3.1基於Hog-SVM的人臉檢測186
7.3.2基於優選邊界的對像檢測器187
7.4深度學習實踐188
7.4.1卷積神經網絡實現189
7.4.2數據增強207
7.4.3自定義損失函數211
7.4.4數據預處理213
7.4.5模型訓練214
7.4.6實現Web接口216
7.4.7模型調優與總結218
7.5人臉識別的拓展應用219
7.6本章小結220
第8章人臉識別工程化221
8.1雲平臺實踐221
8.1.1雲計算介紹221
8.1.2雲服務的形式223
8.1.3雲平臺架構設計224
8.2服務API設計229
8.2.1人臉檢測229
8.2.2人臉對比239
8.3人臉圖片存儲241
8.4人臉圖片檢索243
8.5本章小結244
附錄參考文獻245
這是一本面向初學者的人臉識別工具書,不僅適合零基礎的讀者快速入門,而且適合有一定基礎的讀者迅速達到可以進行工程實踐的水平。作者就職於某世界100強企業,在人臉識別方面積累了豐富的工程實踐經驗,本書不僅詳細介紹了機器學習、深度學習、計算機視覺、人臉識別等方面的原理、技術和算法,而且還通過相關的實戰案例講解了如何進行人臉識別方面的實踐,以及如何將做好的模型用於工程實踐中。同時,本書還提供了大量簡潔、精煉的代碼,能幫助讀者從零開始實現一個工程級別的人臉識別引擎。全書一共8章:第1章介紹了人臉識別的基礎和推薦常識;第2-4章詳細講解了與人臉識別相關的數學、機器學習、計算機視覺、OpenCV相關的基礎和算法;第5章講解了深度學習的原理以及使用Keras實現深度學習模型的方法;第6章介紹了常用的人臉識別算法;第7~8章詳細講解了人臉識別引擎的實現方法以及如何將做好的模型進行工程化。
王天慶 著
王天慶:長期從事分布式繫統、數據科學與工程、人工智能等方面的研究與開發,在人臉識別方面有豐富的實踐經驗。現就職某世界100強企業的數據實驗室,從事數據科學相關技術領域的預研工作。曾就職於某海外業務社交類移動互聯網公司,熟悉大數據平臺研發、架構,以及數據的處理和分析,熟悉Web架構和高性能、高並發、高可用繫統。中國電子學會(計算機應用分會)會員,CSDN博客專家,熱愛技術分享與交流。