#!usr/bin/env python
#encoding:utf-8
from __future__ import division
'''
功能: 构建人脸识别模型
'''
import os
import cv2
import random
import numpy as np
from keras.utils import np_utils
from keras.models import Sequential,load_model
from sklearn.model_selection import train_test_split
from keras.layers import Dense,Activation,Convolution2D,MaxPooling2D,Flatten,Dropout
class DataSet(object):
'''
用于存储和格式化读取训练数据的类
'''
def __init__(self,path):
'''
初始化
'''
self.num_classes=None
self.X_train=None
self.X_test=None
self.Y_train=None
self.Y_test=None
self.img_size=128
self.extract_data(path)
def extract_data(self,path):
'''
抽取数据
'''
imgs,labels,counter=read_file(path)
X_train,X_test,y_train,y_test=train_test_split(imgs,labels,test_size=0.2,random_state=random.randint(0, 100))
X_train=X_train.reshape(X_train.shape[0], 1, self.img_size, self.img_size)/255.0
X_test=X_test.reshape(X_test.shape[0], 1, self.img_size, self.img_size)/255.0
X_train=X_train.astype('float32')
X_test=X_test.astype('float32')
Y_train=np_utils.to_categorical(y_train, num_classes=counter)
Y_test=np_utils.to_categorical(y_test, num_classes=counter)
self.X_train=X_train
self.X_test=X_test
self.Y_train=Y_train
self.Y_test=Y_test
self.num_classes=counter
def check(self):
'''
校验
'''
print('num of dim:', self.X_test.ndim)
print('shape:', self.X_test.shape)
print('size:', self.X_test.size)
print('num of dim:', self.X_train.ndim)
print('shape:', self.X_train.shape)
print('size:', self.X_train.size)
def endwith(s,*endstring):
'''
对字符串的后续和标签进行匹配
'''
resultArray = map(s.endswith,endstring)
if True in resultArray:
return True
else:
return False
def read_file(path):
'''
图片读取
'''
img_list=[]
label_list=[]
dir_counter=0
IMG_SIZE=128
for child_dir in os.listdir(path):
child_path=os.path.join(path, child_dir)
for dir_image in os.listdir(child_path):
if endwith(dir_image,'jpg'):
img=cv2.imread(os.path.join(child_path, dir_image))
resized_img=cv2.resize(img, (IMG_SIZE, IMG_SIZE))
recolored_img=cv2.cvtColor(resized_img,cv2.COLOR_BGR2GRAY)
img_list.append(recolored_img)
label_list.append(dir_counter)
dir_counter+=1
img_list=np.array(img_list)
return img_list,label_list,dir_counter
def read_name_list(path):
'''
读取训练数据集
'''
name_list=[]
for child_dir in os.listdir(path):
name_list.append(child_dir)
return name_list
class Model(object):
'''
人脸识别模型
'''
FILE_PATH="face.h5"
IMAGE_SIZE=128
def __init__(self):
self.model=None
def read_trainData(self,dataset):
self.dataset=dataset
def build_model(self):
self.model = Sequential()
self.model.add(
Convolution2D(
filters=32,
kernel_size=(5, 5),
padding='same',
dim_ordering='th',
input_shape=self.dataset.X_train.shape[1:]
)
)
self.model.add(Activation('relu'))
self.model.add(
MaxPooling2D(
pool_size=(2, 2),
strides=(2, 2),
padding='same'
)
)
self.model.add(Convolution2D(filters=64, kernel_size=(5,5), padding='same'))
self.model.add(Activation('relu'))
self.model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='same'))
self.model.add(Flatten())
self.model.add(Dense(1024))
self.model.add(Activation('relu'))
self.model.add(Dense(self.dataset.num_classes))
self.model.add(Activation('softmax'))
self.model.summary()
def train_model(self):
self.model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
self.model.fit(self.dataset.X_train,self.dataset.Y_train,epochs=10,batch_size=10)
def evaluate_model(self):
print('\nTesting---------------')
loss, accuracy = self.model.evaluate(self.dataset.X_test, self.dataset.Y_test)
print('test loss;', loss)
print('test accuracy:', accuracy)
def save(self, file_path=FILE_PATH):
print('Model Saved Finished!!!')
self.model.save(file_path)
def load(self, file_path=FILE_PATH):
print('Model Loaded Successful!!!')
self.model = load_model(file_path)
def predict(self,img):
img=img.reshape((1, 1, self.IMAGE_SIZE, self.IMAGE_SIZE))
img=img.astype('float32')
img=img/255.0
result=self.model.predict_proba(img)
max_index=np.argmax(result)
return max_index,result[0][max_index]
if __name__ == '__main__':
dataset=DataSet('dataset/')
model=Model()
model.read_trainData(dataset)
model.build_model()
model.train_model()
model.evaluate_model()
model.save()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
用python3实现基于深度学习的AI人脸识别系统,脚本可以直接运行(包括源码文件、数据文件) 用到技术:Flask + OpenCV-Python + Keras + Sklearn 压缩包中包括:照片样本采集源码、深度学习和训练源码、人脸识别相关源码、Flask实现人脸识别接口等。 通过浏览器上传图片,或者打开摄像头即可识别。
资源推荐
资源详情
资源评论
收起资源包目录
用python3实现基于深度学习的AI人脸识别系统,脚本可以直接运行(包括源码文件、数据文件) (269个子文件)
face.h5 194.43MB
index.html 182B
upload.html 160B
show.html 85B
face-recognition-master.iml 568B
35.jpg 19KB
36.jpg 19KB
34.jpg 19KB
32.jpg 19KB
31.jpg 19KB
29.jpg 19KB
18.jpg 19KB
28.jpg 19KB
25.jpg 19KB
30.jpg 19KB
23.jpg 19KB
26.jpg 19KB
24.jpg 19KB
27.jpg 19KB
17.jpg 18KB
12.jpg 18KB
19.jpg 18KB
20.jpg 18KB
16.jpg 18KB
10.jpg 18KB
22.jpg 18KB
13.jpg 18KB
15.jpg 18KB
3.jpg 18KB
9.jpg 18KB
14.jpg 18KB
2.jpg 18KB
21.jpg 18KB
11.jpg 18KB
33.jpg 18KB
83.jpg 18KB
7.jpg 18KB
54.jpg 18KB
64.jpg 18KB
55.jpg 18KB
84.jpg 18KB
85.jpg 18KB
65.jpg 18KB
1.jpg 18KB
86.jpg 18KB
53.jpg 18KB
66.jpg 17KB
52.jpg 17KB
82.jpg 17KB
8.jpg 17KB
51.jpg 17KB
49.jpg 17KB
50.jpg 17KB
81.jpg 17KB
67.jpg 17KB
80.jpg 17KB
46.jpg 17KB
56.jpg 17KB
44.jpg 17KB
79.jpg 17KB
43.jpg 17KB
87.jpg 17KB
77.jpg 17KB
68.jpg 17KB
69.jpg 17KB
47.jpg 17KB
42.jpg 17KB
76.jpg 17KB
57.jpg 17KB
78.jpg 17KB
48.jpg 17KB
41.jpg 17KB
45.jpg 17KB
70.jpg 17KB
71.jpg 16KB
40.jpg 16KB
58.jpg 16KB
59.jpg 16KB
75.jpg 16KB
5.jpg 16KB
72.jpg 16KB
60.jpg 16KB
74.jpg 16KB
73.jpg 15KB
62.jpg 15KB
37.jpg 15KB
88.jpg 15KB
4.jpg 15KB
61.jpg 15KB
63.jpg 15KB
39.jpg 14KB
38.jpg 13KB
6.jpg 13KB
155963850810.jpg 10KB
155963849410.jpg 10KB
155963841310.jpg 10KB
15596384139.jpg 10KB
15596385089.jpg 10KB
15596384949.jpg 10KB
155963783322.jpg 10KB
共 269 条
- 1
- 2
- 3
资源评论
- 本本纲目2023-07-25使用python3编写的人脸识别系统代码,易于理解和修改。
- 嗨了伐得了2023-07-25文件中包含了所需的源码和数据文件,可以直接运行,省去了很多麻烦。
- 金山文档2023-07-25这个文件提供了一个方便使用的人脸识别系统,脚本简单易懂。
- 我就是月下2023-07-25文件中的深度学习算法为人脸识别系统增加了准确性,操作简单明了。
- 陈莽昆2023-07-25这个基于深度学习的人脸识别系统是一个实用而高效的解决方案,值得一试。
数据知道
- 粉丝: 5w+
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2001~2022年上市公司数字赋能指数.dta
- 2001~2022年上市公司数字赋能指数.xlsx
- 信息办公石大在线财务管理系统(含源码)-shidacaiwu.rar
- 信息办公电信计费系统完整代码-netctossconformity.rar
- matlab实现TD-SCDMA中初始同步捕捉DwPTS下行同步导频时隙的仿真.zip
- 信息办公玉玺学生信息管理系统-webapps.rar
- 信息办公基于struts的图书管理系统-struts-ts.rar
- 管家婆分销ERP V1 V3 A8II TOP V10.0.2最新全版本通用
- 信息办公基于Ajax+J2EE的MicroERP源码下载-microerp-0.1.rar
- 信息办公双鱼林jsp人事工资系统-wagesmanagesystem.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功