栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
  • 前言
  • 一、基于facenet_pytorch进行人脸识别
    • 1. 安装
    • 2. 使用InceptionResnetV1预训练模型
    • 3. 准备图片
    • 4. 运行代码
    • 5. 结果
  • 二、初步学习flask
    • 1. 安装flask
    • 2. 第一个简单的实验
    • 3. 第二个小实验


前言

第三节课,

一、基于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用户名.cachetorchcheckpoint“地址中,在之后运行的过程将会自动生成pt文件。

3. 准备图片

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

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/')
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运行时则不再需要。

结果:

3. 第二个小实验

代码如下:

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

@app.route('/user/')
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运行时则不再需要。

结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987320.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号