基于深度学习的人脸识别系统
本文介绍了一个基于YOLOv8和VGG16的人脸识别系统。系统采用YOLOv8训练人脸检测模型实现人脸定位;利用VGG16提取人脸深度特征进行识别。系统支持图片/摄像头录入和识别,提供用户管理功能,可保存识别记录。未来计划增加口罩、帽子识别功能。
·
一、整体介绍
整个系统使用YOLOv8训练检测人脸的模型+深度学习特征提取来实现。可以对人员进行录入和删除等操作,录入可以使用图片和摄像头实时录入,识别也可以使用图片和摄像头实时识别。可以对识别记录进行保存。
二、人脸检测
人脸检测部分使用YOLOv8训练的检测模型来实现。
首先是源码和数据,然后对数据进行预处理(标注、数据增强等操作),最后就是训练就可以得到模型。
下图是数据标注的截图。

下面是一个简单的训练代码。
from ultralytics import YOLO
model = YOLO("yolov8n.pt") # 预训练模型路径
model.train(
data="data.yaml", # 数据集根目录(需包含train子目录)
imgsz=640, # 图像尺寸
device="cpu", # 训练设备
batch=8, # 批量大小
epochs=100, # 训练轮次
pretrained=True # 启用预训练权重
)
下图是模型检测的效果。

有了人脸检测的模型,我们就可以在这个模型的基础上加入口罩检测,体温检测(红外),人脸识别等。
三、人脸识别
人脸识别部分使用深度学习特征提取(VGG16)。
下面是VGG16在改系统中的应用代码片段。
# 使用的深度学习特征提取
def extract_face_features(face_img):
# 使用VGG16提取深度特征
face_img = cv2.resize(face_img, (128, 128))
if len(face_img.shape) == 2:
face_img = cv2.cvtColor(face_img, cv2.COLOR_GRAY2RGB)
else:
face_img = cv2.cvtColor(face_img, cv2.COLOR_BGR2RGB)
face_img = face_img.astype('float32') / 255.0
face_img = np.expand_dims(face_img, axis=0)
features = feature_extractor.predict(face_img, verbose=0)
return features.flatten()
四、系统界面
下图是对系统界面的介绍。

用户管理如下,点击用户信息后,点击下方按钮即可删除。

五、改进
1、加入口罩、帽子识别(后续更新)
当戴上口罩和帽子时,可能会导致识别失败,因此加入之后,当识别到用户戴有口罩或者帽子并且识别失败时,使用语言提醒用户摘掉口罩或者帽子。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)