人脸识别开源项目–insightface

目录

1 insightface简介

2 安装insightface

3 使用insightface

4 结合Flask框架

1 insightface简介

最近人脸识别等机器学习的项目很火,偶然间发现了一个开源的人脸识别的开源项目insightface。

人脸识别技术可以准确识别出图像中的人脸和身份,具有丰富的应用场景,譬如金融场景下的刷脸支付、安防场景下的罪犯识别和医学场景下的新冠流行病学调查等等。人脸识别的算法演变经历了以 PCA 为代表的早期阶段,再到以”人工特征+分类器”为主的统计学习方法阶段,近几年,随着大数据及 GPU 算力的爆发,人脸识别进入到深度学习算法为绝对主角的阶段。

InsightFace是基于 MXNet 框架实现的业界主流人脸识别解决方案。 相较MXNet的实现方案,基于OneFlow的实现方案在性能方面更是十分优秀,OneFlow在数据并行时速度是其2.82倍;模型并行时速度是其2.45倍;混合并行+Partial fc时速度是其1.38倍。基于OneFlow实现的代码已合并至 insightface的官方仓库,其中包含了数据集制作教程、训练和验证脚本、预训练模型以及和MXNet模型的转换工具。

2 安装insightface

安装insightface很简单,只要运行下面的代码即可:

pip3 install -U insightface

安装过程中可能需要安装其他的依赖项,只要根据提示进行相应的安装就可以了。

3 使用insightface

安装好insightface后,可以新建一个test.py,加入下面的代码:

import cv2
import numpy as np
import insightface
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image

app = FaceAnalysis(providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))
img = ins_get_image('t1')
faces = app.get(img)
rimg = app.draw_on(img, faces)
cv2.imwrite("./t1_output.jpg", rimg)

运行后会得到结果:

人脸识别开源项目--insightface

是不是很酷~~

4 结合Flask框架

新建server.py

import flask, os, sys, time
from flask import Flask, render_template, request, make_response
import func

app = Flask(__name__)

interface_path = os.path.dirname(__file__)
sys.path.insert(0, interface_path)

@app.route('/', methods=['get'])
def index():
    return render_template('index.html')

@app.route('/upload', methods=['post'])
def upload():
    fname = request.files['img']
    print("@@@@@@@@@@@@@@@@@@@@@@")
    print(fname.filename)
    newName = r'static/upload/' + fname.filename
    fname.save(newName)
    func.getRet(newName)
    #image_data = open("ldh_output.jpg", "rb").read()
    #response = make_response(image_data)
    #response.headers['Content-Type'] = 'image/jpg'
    #return response

    return render_template('result.html')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug='True')

新建func.py

import cv2
import numpy as np
import insightface
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image

app = FaceAnalysis(providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))
#img = ins_get_image('t1')

def getRet(filename):
    img = cv2.imdecode(np.fromfile(filename, dtype=np.uint8), -1)
    faces = app.get(img)
    rimg = app.draw_on(img, faces)
    cv2.imwrite("./static/ldh_output.jpg", rimg)

新建index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>&#x4EBA;&#x8138;&#x8BC6;&#x522B;</title>
</head>

<img src="{{ url_for('static', filename='title.webp') }}" width="500" height="auto">

<form action="upload" method="post" enctype="multipart/form-data">
    <body class="light-theme">
        <p>&#x8BC6;&#x522B;&#x4EBA;&#x8138;</p>
        <input type="file" id="img" name="img">
        <button type="submit">&#x68C0;&#x6D4B;</button>

    </body>
</form>

</html>

新建result.html

<html>
    <body>
        <img src="{{ url_for('static', filename='ldh_output.jpg') }}" width="500" height="auto">
    </body>
</html>

新建main.css

:root {
    --green: #00FF00;
    --white: #FFFFFF;
    --black: #000000;
  }

body {
    background: var(--bg);
    color: var(--fontColor);
    font-family: helvetica;
}

.light-theme {
    --bg: var(--green);
    --fontColor: var(--black);
}

运行server.py,访问127.0.0.0:5000

人脸识别开源项目--insightface

网页界面虽然丑陋,但是可以正常的进行文件上传识别了。

最后我们检测下天王的人脸:

人脸识别开源项目--insightface

×

Original: https://blog.csdn.net/daida2008/article/details/124916062
Author: coding-demo
Title: 人脸识别开源项目–insightface

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/744423/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python基础:Python MySQL

    Python MySQL mysql入门 * MySQL 数据库 安装 MySQL 驱动程序 测试 MySQL Connector 创建连接 创建数据库 * 创建数据库 检查数据库…

    Python 2023年8月1日
    045
  • kali安装python的pygame_使用pygame库实现小球的运动

    今天偶然发现Python还能开放小游戏,自己试着了解了下pygame库,做了一个简单的小球运动的游戏。 其中用到了image.load方法加载图片生成Surface对象time.C…

    Python 2023年9月24日
    042
  • 这是你没见过的MindSpore 2.0.0 for Windows GPU版

    摘要:一文带你看看MindSpore 2.0.0 for Windows GPU版。 在看了MindSpore架构师王磊老师的帖子( )之后,本来张小白要源码编译MindSpore…

    Python 2023年10月25日
    031
  • Springcloud 笔记

    微服务架构 微服务架构是一种架构模式,它体长将单一应用程序划分成一组小的服务,服务之间相互协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务之间采用轻量级…

    Python 2023年11月6日
    053
  • Python 协程并发下载斗鱼美女图片

    仅用学习参考,转载请注明出处 爬虫技术第一步 作为爬虫技术的第一步,你可以使用爬虫下载图片作为例子。 [En] As the first step in crawler techn…

    Python 2023年5月25日
    079
  • 如何避免由 Web 字体引起的布局偏移

    前言 一些布局上的完全加载前后的变化很容易解决:为动态元素预先分配正确的空间,在图像上使用宽度和高度属性,并优先考虑 HTML 文档中的可见元素。但是,导致布局偏移的还有一个难以解…

    Python 2023年10月15日
    040
  • python将数据存为二进制,并用C读取

    python将数据存为二进制,并用c读取 文章目录 python保存二进制文件 python读取二进制文件到numpy数组 c语言读取二进制文件到数组 后续疑问 值得学习的文章 p…

    Python 2023年8月29日
    084
  • Go微服务实战 – 用户服务开发(gRPC+Protocol Buffer)

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯…

    Python 2023年8月12日
    071
  • Spark SQL(二):DataFrame APIs

    文章目录 一.主要DataFrame APIs 二.部分DataFrame APIs * 1.DataFrame.agg 2.DataFrame.alias 3.DataFrame…

    Python 2023年8月20日
    076
  • stm32f407VET6 系统学习 day03 通用同步异步收发器

    1.同步串行通信 同步通信发送端和接收端必须用 共同的时钟源 才能保持它们之间的准确同步。同步传输时,每个字 符没有起始位和停止位,它不是用起始位来标志字符的开始,而是用一串特定的…

    Python 2023年9月30日
    059
  • Python3.7.3环境搭建

    Python3.7.3介绍 Python3.7.3安装(Win10) 到2019年初,Python3已经更新到了Python3.7.3,Python有两个大版本Python2和Py…

    Python 2023年10月30日
    045
  • 宝塔面板python项目管理器安装python的进一步使用

    很多同学会使用宝塔面板的python项目管理器部署django/flask等python项目。但是对于使用python项目管理器安装的python在哪,以及如何让安装的python…

    Python 2023年8月9日
    049
  • 记录一次关于python内存泄露的排查!

    一般情况下只有需要长期运行的项目才会去关注内存的增长情况,即使是很小部分的内存泄露经过长期的运行仍然会产生很大的隐患。 python本身也是支持垃圾的自动回收的,但是在特定的情况下…

    Python 2023年11月5日
    043
  • 机械设备—卷扬机

    一、卷扬机简介 卷扬机,用卷筒缠绕钢丝绳或链条提升或牵引重物的轻小型起重设备,又称绞车。卷扬机可以垂直提升、水平或倾斜拽引重物。卷扬机分为手动卷扬机、电动卷扬机及液压卷扬机三种。现…

    Python 2023年11月6日
    043
  • SqlAlchemy使用的详细总结

    前言:SqlAlchemy 和 flask-SqlAlchemy是 不一样的,flask-SqlAlchemy是flask封装了SqlAlchemy的结果,相对来说,flask-S…

    Python 2023年8月10日
    065
  • 还不会Python数据可视化? 手把手教你用 Matplotlib 实现数据可视化(珍藏版)

    介绍 在使用机器学习方法解决问题的过程中,一定会遇到需要针对数据进行绘图的场景。 Matplotlib 是支持 Python 语言的开源绘图库,因为其支持丰富的绘图类型、简单的绘图…

    Python 2023年8月30日
    050
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球