## 基于MTCNN和FaceNet的人脸识别
**如果本项目对你部署一个可用的人脸识别的模型有帮助,欢迎Start...**
**借助摄像头和极低的阈值,该模型可实现50万级别的人脸考勤系统...**
#### 环境安装
```bash
pip install -r requirements.txt
```
#### 本地Docker镜像打包
```bash
# 进入本项目根目录执行
docker build -t FaceRecognition:mtcnn+facenet .
```
#### 本地测试
```bash
# 命令行输入
uvicorn main:app --host 0.0.0.0
# 浏览器访问
http://127.0.0.1:8000/docs
```
#### 线上测试
```bash
docker pull mrzhang3389/face_recognition:mtcnn_facenet
# 运行
docker run -it -p 8000:8000 mrzhang3389/face_recognition:mtcnn_facenet
# 浏览器登陆
http://127.0.0.1:8000/docs
```
#### 浏览器测试如下:
传入一张含有人脸的图像, 输出一个列表包含图书每个人脸的512维数组特征.
![example](assets/example.png)
#### 如何进行人脸识别
```python
import math
import json
import requests
def get_face_encoding(img_path):
img_file = {'file': open(img_path, 'rb')}
upload_data = {"accept": "application/json",
"Content-Type": "multipart/form-data"}
upload_res = requests.post("http://192.168.31.220:8000/uploadfile", upload_data, files=img_file)
encoding = json.loads(upload_res.content)
return encoding
def euclidean_distance(A, B):
'''用于计算两个列表中, 人脸特征之间的欧式距离.'''
return math.sqrt(sum([(a - b) ** 2 for (a, b) in zip(A, B)]))
obama_1_encoding = get_face_encoding("assets/obama.jpg")
obama_2_encoding = get_face_encoding("assets/obama2.jpg")
biden_encoding = get_face_encoding("assets/biden.jpg")
print("obama_1 and obama_2:", euclidean_distance(obama_1_encoding[0], obama_2_encoding[0]))
print("obama_1 and biden :", euclidean_distance(obama_1_encoding[0], biden_encoding[0]))
print("obama_2 and biden :", euclidean_distance(obama_2_encoding[0], biden_encoding[0]))
```
#### 人脸识别比对结果
![result](assets/result.png)
同一个人的两张不同人脸距离小,不同人脸的距离大,设定一个阈值用以比对数据库中人脸的特征来识别是否为同一个人。
程序员柳
- 粉丝: 8359
- 资源: 1469
最新资源
- Windows版本 pandoc资源包
- C# WPF-诊所门诊系统,病人登记、诊断、打单、付款、开药、治疗 药品出入库,门诊报表.zip
- 毕设报告答辩PPT模板
- 从U盘导入数据到秤_baofeng_23695.avi
- 语音文件jacob-1.18
- 模糊PID控制的模糊隶属度
- MIPS多周期流水化处理器-基于FPGA的MIPS架构的CPU设计(5级流水线CPU)+项目源码+文档说明+报告
- 2023智能制造工艺课程设计(发系部)(1).zip
- Java 课程设计举例详解
- SpringBoot集成Log4j2源码
- spdk-fio 实验报告.zip
- HTML+CSS+JS随机数代码
- matlab 设计课程介绍详解和资源.zip
- 编译原理中LL(1)文法的First集、Follow集与预测分析表构造及其应用
- 编译原理词法分析中NFA与DFA转换及其最小化的词法分析技术详解
- 前端开发中遇到的npm依赖冲突解决:React版本不兼容问题及其解决方案
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈