首页IT科技人脸识别开源算法(人脸识别开源项目–insightface)

人脸识别开源算法(人脸识别开源项目–insightface)

时间2025-09-02 05:04:57分类IT科技浏览5257
导读:目录...

目录

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)

运行后会得到结果:

是不是很酷~~

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 = rstatic/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>人脸识别</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>识别人脸</p> <input type="file" id="img" name="img"> <button type="submit">检测</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

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

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

声明:本站所有文章                ,如无特殊说明或标注                       ,均为本站原创发布               。任何个人或组织        ,在未征得本站同意时                ,禁止复制                、盗用                       、采集        、发布本站内容到任何网站        、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益                       ,可联系我们进行处理                        。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
stm32f407控制电机(ST电机库v5.4.4源代码分析(1): FOC原理(结合ST电机库)) uniapp scroll-view 上下滑动(【uniapp】上拉触底加载更多的两种方式,组件里面和页面里面 scroll-view组件和onReachBottom触底方法,以及部分安卓机型scroll-view很难触发问题,且可以固定表头)