# 基于人脸识别+笑脸识别的简易自动开锁系统 **Repository Path**: xyh3984/SmileUnlock ## Basic Information - **Project Name**: 基于人脸识别+笑脸识别的简易自动开锁系统 - **Description**: 基于人脸识别+笑脸识别的简易自动开锁系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-05-12 - **Last Updated**: 2022-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于人脸识别+笑脸识别的简易自动开锁系统 ## 项目介绍 1. 此系统为一个识别人脸,且如果该人脸持续微笑3秒钟,门锁将会被延时模块和直流电机驱动从而自动打开的小系统。 2. 要求人脸持续微笑3秒的目的是防止潜在的假脸的威胁。 3. 该系统分为两个主机,一个主机用于人脸识别和笑脸识别的深度学习模型训练和实时预测(需要安装摄像头);另一个主机为控制两套延时模块+直流电机从而使得门锁打开。 ## 项目文件介绍 1. 文件夹``FaceDetection``为一个基于MobileNet的人脸识别卷积神经网络,这里我们直接用别的项目预训练好的模型,参考[这里](https://github.com/yeephycho/tensorflow-face-detection)。网络结构如下图所示: ![MobileNet网络结构](https://images.gitee.com/uploads/images/2021/0512/020301_bf0810b8_5048377.png "2.png") 2. 文件夹``model``为存放笑脸检测的训练模型的地方,用户需要运行``train_smile.py``自行进行训练。 3. 文件夹``training_data``为存放笑脸训练数据的地方,用户需要运行``TrainImgCapture.py``自行进行训练数据的收集。 4. 文件``control_server.py``为控制延时模块的主机运行,在此案例里面我们用树莓派4B来作为示范案例。 5. 文件``train_smile.py``为训练训练笑脸识别模型脚本,我们应用Yann LeCun提出的一个轻量级卷积神经网络LeNet-5进行训练,具体模型参考[论文](http://vision.stanford.edu/cs598_spring07/papers/Lecun98.pdf)。网络结构如下图所示: ![LeNet-5网络结构](https://images.gitee.com/uploads/images/2021/0512/020131_d04d3e05_5048377.png "1.png") 6. 文件``LeNet.py``为基于Keras的LeNet-5的实现。 7. 文件``TrainImgCapture.py``为一个半自动收集笑脸和非笑脸照片的脚本,课快速收集大量笑脸和非笑脸训练数据。 ## 项目Dependencies - python 3 (训练和预测计算主机) - python 2 (树莓派控制主机) - numpy - openCV - sklearn - imutils - TensorFlow2 - Keras - h5py ## 软件运行方法 1. 首先运行``TrainImgCapture.py``用于半自动收集笑脸识别训练照片,需要分别收集笑脸和非笑脸的照片。 2. 之后运行``train_smile.py``用于训练收集的笑脸数据,默认训练100次,每次训练5个epochs,每个batch为128张照片,每张照片统一为224 x 224 x 3大小。 3. 之后将``control_server.py``同步到树莓派并运行,此程序在树莓派开启一个简易的HTTP服务器等待控制指令。 4. 之后运行``detect_smile.py``,此程序在实时探测笑脸存在,如果笑脸存在超过3秒钟,即通过HTTP通知树莓派控制延时模块带动直流电机进行开锁操作。 ## 硬件配置和接线方法 1. 延时模块采用佛山市微风科技有限公司研发的C4G0101型号模块,通过USB连接上位机配置程序将模块配置为上升沿触发延时A断开(代号1000)。 2. 本系统采用两套延时模块和直流电机,分别控制门锁的上拉和左拉动作,每一套接线如下图所示: ![接线原理图](https://images.gitee.com/uploads/images/2021/0512/023842_81492aea_5048377.png "3.png") 3. 实物接线图如下图所示: ![实物接线图](https://images.gitee.com/uploads/images/2021/0512/024244_71fb6b48_5048377.jpeg "5.jpg") ## 系统演示 [点击观看视频](https://www.bilibili.com/video/BV1Go4y1m7bJ)