使用Python进行人脸检测+初学Flask


前言

第三节课,

一、基于facenet_pytorch进行人脸识别

1. 安装

  • 安装 pytorch库
  • 安装 facenet_pytorch库
pip install facenet-pytorch

2. 使用InceptionResnetV1预训练模型

下载InceptionResnetV1 预训练模型预训练模型文件,将”20180402-114759.pb“、”model-20180402-114759.ckpt-275.data-00000-of-00001“、”model-20180402-114759.ckpt-275.index“和”model-20180402-114759.meta“文件,放置到”C:\Users\用户名.cache\torch\checkpoint“地址中,在之后运行的过程将会自动生成pt文件。

3. 准备图片

将lyf的两张图片放在代码目录下,图片如下。
lyf2.jpg
lyf.jpg

4. 运行代码

以下代码会提取人脸的特征向量,计算特征向量的欧⽒距离,根据预先设定的阈值,如果⼩于阈值,那么这两张人脸是一个人,即”匹配“,否则输出”不匹配“。

import cv2
import torch
from facenet_pytorch import MTCNN, InceptionResnetV1

def load_known_faces(dstImgPath, mtcnn, resnet):
    aligned = []
    knownImg = cv2.imread(dstImgPath) 
    face = mtcnn(knownImg)
    if face is not None:
        aligned.append(face[0])
    aligned = torch.stack(aligned).to(device)
    with torch.no_grad():
        known_faces_emb = resnet(aligned).detach().cpu()
    return known_faces_emb, knownImg

def match_faces(faces_emb, known_faces_emb, threshold):
    isExistDst = False
    distance = (known_faces_emb[0] - faces_emb[0]).norm().item()
    if(distance < threshold):
        isExistDst = True
    return isExistDst

if __name__ == '__main__':
    # 获取设备
    device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
    # mtcnn模型加载
    mtcnn = MTCNN(min_face_size=12, thresholds=[0.2, 0.2, 0.3],keep_all=True, device=device)
    # InceptionResnetV1模型加载
    resnet = InceptionResnetV1(pretrained='vggface2').eval().to(device)
    MatchThreshold = 0.8    # ⼈脸特征向量匹配阈值设置
    known_faces_emb, _ = load_known_faces('lyf.jpg',mtcnn, resnet)  # 已知⼈物图
    faces_emb, img = load_known_faces('lyf2.jpg', mtcnn,resnet) # 待检测⼈物图
    isExistDst = match_faces(faces_emb, known_faces_emb, MatchThreshold)
# ⼈脸匹配
    if isExistDst:
        boxes, prob, landmarks = mtcnn.detect(img, landmarks=True) 
        print('匹配')
    else:
        print('不匹配')

5. 结果

在这里插入图片描述

二、初步学习flask

1. 安装flask

下载flask

pip install flask

2. 第一个简单的实验

代码如下:

from flask import Flask
app = Flask(__name__)
@app.route('/user')
def hello_world():
    return 'hello user'

@app.route('/user/<userid>')
def hello_userid(userid):
    return 'hello user'+userid

if __name__=='__main__':
    app.run(debug=True,port=9989,use_reloader=False) 

在jupyter运行的时候需要设置use_reloader=False,在idle和pycharm运行时则不再需要。

结果:
result1

3. 第二个小实验

代码如下:

from flask import Flask
app = Flask(__name__)
@app.route('/user')
def hello_world():
    return 'hello user'

@app.route('/user/<userid>')
def hello_userid(userid):
    return 'hello user'+userid

if __name__=='__main__':
    app.run(debug=True,port=9989,use_reloader=False) 

在jupyter运行的时候需要设置use_reloader=False,在idle和pycharm运行时则不再需要。

结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python+MySQL+Flask 是一种常见的 Web 开发技术栈,它们分别是 Python 编程语言、MySQL 数据库和 Flask Web 框架。 Python 是一种高级编程语言,具有简单易学、强大灵活、可扩展性好等优点,因此在 Web 开发领域得到了广泛应用。MySQL 是一种常见的关系型数据库,具有高可靠性、高性能、易于管理等特点,因此也广泛应用于 Web 开发中。Flask 是一个基于 Python 的轻量级 Web 框架,它具有易于学习、灵活、可扩展性好等优点,因此被广泛应用于 Web 开发中。 Python+MySQL+Flask 的工作流程一般如下: 1. 使用 Python 连接 MySQL 数据库,执行 SQL 语句进行数据库操作; 2. 使用 Flask 构建 Web 应用程序,将 Python 代码和 HTML、CSS、JavaScript 等前端代码结合起来,实现 Web 功能; 3. 将 Flask 应用程序部署到服务器上,使其可以被外部用户访问。 具体的操作流程如下: 1. 安装 Python 和 MySQL,使用 Python 的 MySQL 连接库连接到 MySQL 数据库; 2. 创建 Flask 应用程序,设置路由、视图函数、模板等; 3. 在视图函数中进行数据库操作,将结果渲染到模板中返回给用户; 4. 部署 Flask 应用程序到服务器上,使用 Web 服务器(如 Nginx)进行反向代理和负载均衡,使其可以被外部用户访问。 总的来说,Python+MySQL+Flask 是一种简单易用、高效可靠的 Web 开发技术栈。它们的优点在于 Python 语言的简单易学、MySQL 数据库的高可靠性和高性能、Flask 框架的灵活和可扩展性。如果你想学习 Web 开发,这个技术栈是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值