TensorFlow2.0 + CNN + keras + 人臉識別
目標:雖然已經說過了,還是再說一遍趴。TensorFlow2.0 + CNN + keras + 人臉識別。
即基於TensorFlow2.0使用CNN(卷積神經網路)實現人臉識別。資料集為來自sklearn的datasets的fetch_olivetti_faces。
劃重點:我這個是tf2.0
我這個是tf2.0
我這個是tf2.0!!!重要的事情說三遍
好了不多說了,下面貼上原始碼
# python環境下通過TensorFlow2.0整合的keras進行人臉識別
import numpy as np
from sklearn import datasets
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split
import tensorflow.keras as keras
# 資料準備
# 篩選資料來自sklearn的datasets的fetch_olivetti_faces,只有400張,在cnn訓練時,佔用時間少,方便測試。
faces = datasets.fetch_olivetti_faces()
# print(faces.images.shape)
i = 0
plt.figure(figsize=(20, 20))
for img in faces.images:
# 總共400張圖,把影像分割成20X20
plt.subplot(20, 20, i + 1)
plt.imshow(img, cmap="gray")
# 關閉x,y軸顯示
plt.xticks([])
plt.yticks([])
plt.xlabel(faces.target[i])
i = i + 1
# plt.show()
# 人臉資料
X = faces.images
# 人臉對應的標籤
y = faces.target
# print(X[0])
# print(y[0])
# 資料預處理
# 首先要reshape一下資料格式,由原本的[一次的訓練數量,長,寬],變為[一次的訓練數量,長,寬,通道數], 通道數實際上就是深度,我們本次樣本是黑白圖,所以深度只有1, 如果是RGB彩色照片,通道數就是3,這個通道數也可以自己設計。
X = X.reshape(400, 64, 64, 1)
# 隨機分割30%的資料做測試驗證的資料
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# 構建模型
model = keras.Sequential()
# 第一層卷積,卷積的數量為128,卷積的高和寬是3x3,啟用函式使用relu
model.add(keras.layers.Conv2D(128, kernel_size=3, activation='relu', input_shape=(64, 64, 1)))
# 第二層卷積
model.add(keras.layers.Conv2D(64, kernel_size=3, activation='relu'))
# 把多維陣列壓縮成一維,裡面的操作可以簡單理解為reshape,方便後面Dense使用
model.add(keras.layers.Flatten())
# 對應cnn的全連結層,可以簡單理解為把上面的小圖彙集起來,進行分類
model.add(keras.layers.Dense(40, activation='softmax'))
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 訓練
model.fit(X_train, y_train, epochs=8)
# 驗證
# 先進行預測,發現這裡的方法和sklearn很相似。
y_predict = model.predict(X_test)
# 預測後,然後和測試標籤進行比對:
print(y_test[0], np.argmax(y_predict[0]))
相關文章
- 如何用Excel 9步實現CNN人臉識別ExcelCNN
- opencv 人臉識別OpenCV
- OpenCV — 人臉識別OpenCV
- 人臉檢測識別,人臉檢測,人臉識別,離線檢測,C#原始碼C#原始碼
- 模式識別hw2-------基於matconvnet,用CNN實現人臉圖片性別識別模式CNN
- C#人臉識別入門篇-STEP BY STEP人臉識別--入門篇C#
- 智慧人臉識別門禁系統開發,人臉識別開鎖流程
- 人臉識別之特徵臉方法(Eigenface)特徵
- 前端人臉識別--兩張臉相似度前端
- 人臉活體檢測人臉識別:眨眼+張口
- 乾貨 | AI人臉識別之人臉搜尋AI
- 人臉識別智慧考勤系統開發_人臉識別考勤管理系統開發
- 人臉識別技術應用
- 前端如何玩轉人臉識別前端
- python—呼叫API人臉識別PythonAPI
- 從零玩轉人臉識別
- 人臉識別之人臉檢測的重要性
- python ubuntu dlib人臉識別3-人臉對齊PythonUbuntu
- 保障人臉安全!頂象釋出《人臉識別安全白皮書》
- IOS人臉識別開發入門教程--人臉檢測篇iOS
- 人臉識別之Python DLib庫進行人臉關鍵點識別Python
- 刷臉支付人臉識別特徵點越多是別越精確特徵
- 中國人臉識別產業鏈全景圖產業
- Python人臉識別微笑檢測Python
- 刪除十億人臉資料,Facebook關閉人臉識別系統
- 人臉識別與人體動作識別技術及應用pdf
- 人臉識別 -- 活體檢測(張嘴搖頭識別)
- 人臉識別 — 活體檢測(張嘴搖頭識別)
- Keras 練習2 - CNNKerasCNN
- 人臉識別技術看這一篇就夠了(附國內人臉識別20強公司)
- AI+慈善 ▏人臉識別+人臉模擬助力失散親人找到回家的路AI
- 從零玩轉人臉識別之RGB人臉活體檢測
- 【基於PCA的人臉識別演算法】從QR分解到PCA,再到人臉識別PCA演算法
- OpenCV-Python 人臉眼睛嘴識別OpenCVPython
- iOS計算機視覺—人臉識別iOS計算機視覺
- Mars演算法實踐——人臉識別演算法
- 人臉識別資料集和特點
- 人臉識別檢測專案實戰