【人脸识别】insightface 使用记录和搭建服务注意点 从0到1

news2024/9/17 7:27:39

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 1.开始
    • 1.1 前置
    • 1.2 再次运行,人脸检测跑通


前言

人脸识别项目,再走一遍。之前是公司老人留下的,没部署过,没交付过。这次重新搞一个,并且把搞过的记录下来。


参考旷视的insightface:
https://github.com/deepinsight/insightface/tree/master/python-package
另外一个blog:https://blog.csdn.net/u013171226/article/details/123249453

创建环境,安装库

conda activate -n insightface python=3.8
pip install insightface

把它的git 代码都拉下来:
https://github.com/deepinsight/insightface
解压到 /home/jianming_ge/workplace/zhongwaiyun/insightface/

1.开始

1.1 前置

cd /home/jianming_ge/workplace/zhongwaiyun/insightface/python-package
pip install numpy opencv-python 
pip install onnxruntime-gpu

创建一个文件:
aaa.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(allowed_modules=['detection'],providers=['CUDAExecutionProvider', 'CPUExecutionProvider'],download=False)
app.prepare(ctx_id=0, det_size=(640, 640))
img = ins_get_image('ldh')  #不用带后缀,图片放到./insightface/python-package/insightface/data/images
faces = app.get(img)
print("faces::::", faces)
rimg = app.draw_on(img, faces)
cv2.imwrite("./ldh_output.jpg", rimg)

运行:python aaa.py
报错:

(insightface) [jianming_ge@localhost python-package]$ python aaa.py 
Traceback (most recent call last):
  File "aaa.py", line 3, in <module>
    import insightface
  File "/home/jianming_ge/workplace/zhongwaiyun/insightface/python-package/insightface/__init__.py", line 18, in <module>
    from . import app
  File "/home/jianming_ge/workplace/zhongwaiyun/insightface/python-package/insightface/app/__init__.py", line 2, in <module>
    from .mask_renderer import *
  File "/home/jianming_ge/workplace/zhongwaiyun/insightface/python-package/insightface/app/mask_renderer.py", line 8, in <module>
    from ..thirdparty import face3d
  File "/home/jianming_ge/workplace/zhongwaiyun/insightface/python-package/insightface/thirdparty/face3d/__init__.py", line 3, in <module>
    from . import mesh
  File "/home/jianming_ge/workplace/zhongwaiyun/insightface/python-package/insightface/thirdparty/face3d/mesh/__init__.py", line 9, in <module>
    from .cython import mesh_core_cython

解决:

 find  ./ -iname "cython"
 (insightface) [jianming_ge@localhost python-package]$ find  ./ -iname "cython"
./insightface/thirdparty/face3d/mesh/cython
(insightface) [jianming_ge@localhost python-package]$ cd ./insightface/thirdparty/face3d/mesh/cython/
(insightface) [jianming_ge@localhost cython]$ ls
mesh_core.cpp  mesh_core_cython.c  mesh_core_cython.cpp  mesh_core_cython.pyx  mesh_core.h  setup.py
(insightface) [jianming_ge@localhost python-package]$ cd ./insightface/thirdparty/face3d/mesh/cython/
(insightface) [jianming_ge@localhost cython]$ ls
mesh_core.cpp  mesh_core_cython.c  mesh_core_cython.cpp  mesh_core_cython.pyx  mesh_core.h  setup.py
(insightface) [jianming_ge@localhost cython]$ python setup.py build_ext -i
In file included from /home/jianming_ge/miniconda3/envs/insightface/lib/python3.8/site-packages/numpy/core/include/numpy/ndarraytypes.h:1940,
                 from /home/jianming_ge/miniconda3/envs/insightface/lib/python3.8/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
                 from /home/jianming_ge/miniconda3/envs/insightface/lib/python3.8/site-packages/numpy/core/include/numpy/arrayobject.h:5,
                 from mesh_core_cython.cpp:780:
/home/jianming_ge/miniconda3/envs/insightface/lib/python3.8/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
 #warning "Using deprecated NumPy API, disable it with " \

到包文件下,执行一下安装就可以了
cd ./insightface/thirdparty/face3d/mesh/cython/
python setup.py build_ext -i

1.2 再次运行,人脸检测跑通

python aaa.py

(insightface) [jianming_ge@localhost python-package]$ python aaa.py 
download_path: /home/jianming_ge/.insightface/models/buffalo_l
Downloading /home/jianming_ge/.insightface/models/buffalo_l.zip from https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip...
  0%|| 208/281857 [00:01<43:44, 107.30KB/s]^Z
[2]+  已停止               python aaa.py

他去下载去了,不知为什么在从git上下载特别慢,所以放弃了,想法是手动下载好,传到它所需要的目录。
Downloading /home/jianming_ge/.insightface/models/buffalo_l.zip from https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip…
代码追踪后在这里,dir_path
在这里插入图片描述
位置:python-package/insightface/utils/storage.py
追踪到dir_path = ~/.insightface/models/buffalo_l
建好目录,并且把权重文件放进去

(insightface) [jianming_ge@localhost python-package]$ mkdir ~/.insightface/models/buffalo_l
(insightface) [jianming_ge@localhost python-package]$ cp ~/.insightface/models/*.onnx  ~/.insightface/models/buffalo_l/
(insightface) [jianming_ge@localhost python-package]$ ls ~/.insightface/models/buffalo_l
1k3d68.onnx  2d106det.onnx  det_10g.onnx  genderage.onnx  w600k_r50.onnx

import os
import os.path as osp
import zipfile
from .download import download_file

BASE_REPO_URL = 'https://github.com/deepinsight/insightface/releases/download/v0.7'

def download(sub_dir, name, force=False, root='~/.insightface'):
    _root = os.path.expanduser(root)
    dir_path = os.path.join(_root, sub_dir, name)
    if osp.exists(dir_path) and not force:
        return dir_path
    print('download_path:', dir_path)
    zip_file_path = os.path.join(_root, sub_dir, name + '.zip')
    model_url = "%s/%s.zip"%(BASE_REPO_URL, name)
    download_file(model_url,
             path=zip_file_path,
             overwrite=True)
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)
    with zipfile.ZipFile(zip_file_path) as zf:
        zf.extractall(dir_path)
    #os.remove(zip_file_path)
    return dir_path

def ensure_available(sub_dir, name, root='~/.insightface'):
    return download(sub_dir, name, force=False, root=root)

def download_onnx(sub_dir, model_file, force=False, root='~/.insightface', download_zip=False):
    _root = os.path.expanduser(root)
    model_root = osp.join(_root, sub_dir)
    new_model_file = osp.join(model_root, model_file)
    if osp.exists(new_model_file) and not force:
        return new_model_file
    if not osp.exists(model_root):
        os.makedirs(model_root)
    print('download_path:', new_model_file)
    if not download_zip:
        model_url = "%s/%s"%(BASE_REPO_URL, model_file)
        download_file(model_url,
                 path=new_model_file,
                 overwrite=True)
    else:
        model_url = "%s/%s.zip"%(BASE_REPO_URL, model_file)
        zip_file_path = new_model_file+".zip"
        download_file(model_url,
                 path=zip_file_path,
                 overwrite=True)
        with zipfile.ZipFile(zip_file_path) as zf:
            zf.extractall(model_root)
        return new_model_file

再次执行:
python aaa.py
输出:

(insightface) [jianming_ge@localhost python-package]$ python aaa.py 
Applied providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}, 'CUDAExecutionProvider': {'tunable_op_enabled': '0', 'cudnn_conv_use_max_workspace': '1', 'enable_cuda_graph': '0', 'do_copy_in_default_stream': '1', 'arena_extend_strategy': 'kNextPowerOfTwo', 'cudnn_conv1d_pad_to_nc1d': '0', 'gpu_external_empty_cache': '0', 'gpu_external_free': '0', 'gpu_external_alloc': '0', 'gpu_mem_limit': '18446744073709551615', 'cudnn_conv_algo_search': 'EXHAUSTIVE', 'device_id': '0'}}
model ignore: /home/jianming_ge/.insightface/models/buffalo_l/1k3d68.onnx landmark_3d_68
Applied providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}, 'CUDAExecutionProvider': {'tunable_op_enabled': '0', 'cudnn_conv_use_max_workspace': '1', 'enable_cuda_graph': '0', 'do_copy_in_default_stream': '1', 'arena_extend_strategy': 'kNextPowerOfTwo', 'cudnn_conv1d_pad_to_nc1d': '0', 'gpu_external_empty_cache': '0', 'gpu_external_free': '0', 'gpu_external_alloc': '0', 'gpu_mem_limit': '18446744073709551615', 'cudnn_conv_algo_search': 'EXHAUSTIVE', 'device_id': '0'}}
model ignore: /home/jianming_ge/.insightface/models/buffalo_l/2d106det.onnx landmark_2d_106
Applied providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}, 'CUDAExecutionProvider': {'tunable_op_enabled': '0', 'cudnn_conv_use_max_workspace': '1', 'enable_cuda_graph': '0', 'do_copy_in_default_stream': '1', 'arena_extend_strategy': 'kNextPowerOfTwo', 'cudnn_conv1d_pad_to_nc1d': '0', 'gpu_external_empty_cache': '0', 'gpu_external_free': '0', 'gpu_external_alloc': '0', 'gpu_mem_limit': '18446744073709551615', 'cudnn_conv_algo_search': 'EXHAUSTIVE', 'device_id': '0'}}
find model: /home/jianming_ge/.insightface/models/buffalo_l/det_10g.onnx detection [1, 3, '?', '?'] 127.5 128.0
Applied providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}, 'CUDAExecutionProvider': {'tunable_op_enabled': '0', 'cudnn_conv_use_max_workspace': '1', 'enable_cuda_graph': '0', 'do_copy_in_default_stream': '1', 'arena_extend_strategy': 'kNextPowerOfTwo', 'cudnn_conv1d_pad_to_nc1d': '0', 'gpu_external_empty_cache': '0', 'gpu_external_free': '0', 'gpu_external_alloc': '0', 'gpu_mem_limit': '18446744073709551615', 'cudnn_conv_algo_search': 'EXHAUSTIVE', 'device_id': '0'}}
model ignore: /home/jianming_ge/.insightface/models/buffalo_l/genderage.onnx genderage
Applied providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}, 'CUDAExecutionProvider': {'tunable_op_enabled': '0', 'cudnn_conv_use_max_workspace': '1', 'enable_cuda_graph': '0', 'do_copy_in_default_stream': '1', 'arena_extend_strategy': 'kNextPowerOfTwo', 'cudnn_conv1d_pad_to_nc1d': '0', 'gpu_external_empty_cache': '0', 'gpu_external_free': '0', 'gpu_external_alloc': '0', 'gpu_mem_limit': '18446744073709551615', 'cudnn_conv_algo_search': 'EXHAUSTIVE', 'device_id': '0'}}
model ignore: /home/jianming_ge/.insightface/models/buffalo_l/w600k_r50.onnx recognition
set det-size: (640, 640)
faces:::: [{'bbox': array([105.29808,  83.55866, 218.93301, 230.41777], dtype=float32), 'kps': array([[137.7511 , 151.92409],
       [190.89203, 143.08504],
       [171.97752, 181.22136],
       [155.1662 , 205.49452],
       [192.61273, 197.9723 ]], dtype=float32), 'det_score': 0.8469027}]

人脸检测的效果:
在这里插入图片描述
文件目录树也贴上来供参考:
![在这里插入图片描述](https://img-blog.csdnimg.cn/591c2829601e4a4183c437125c8f569c.png在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/584355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HMS Core】Health Kit关于获取历史数据问题

【问题描述1】 应用已经开通了历史数据访问权限&#xff0c;同时用户在授权页面已经勾选了”历史数据“项&#xff0c;然后我们是调用healthkit的rest接口查询健康数据&#xff0c;那么是否用户授权之前一年的健康数据都能被查询到呢&#xff1f; 【解决方案】 当用户授予应用…

5月底了,让我看看有多少准备跳槽的····

前两天跟朋友感慨&#xff0c;今年的铜三铁四、裁员导致好多人都没拿到offer!现在已经5月底了&#xff0c;具体金九银十只剩下3个月。 对于想跳槽的职场人来说&#xff0c;绝对要从现在开始做准备了。这时候&#xff0c;很多高薪技术岗、管理岗的缺口和市场需求也出来了。 所…

字节跳动测试岗,3面都过了,HR告诉我这个原因被刷了...

说在前面 面试时最好不要虚报工资。本来字节跳动是很想去的&#xff0c;几轮面试也通过了&#xff0c;最后没offer&#xff0c;自己只想到下面几个原因&#xff1a; 虚报工资&#xff0c;比实际高30%&#xff1b; 有更好的人选&#xff0c;这个可能性不大&#xff0c;我看还在…

6个月的测试,来面试居然要18K,我一问连8K都不值

2023年4月份我入职了深圳某家创业公司&#xff0c;刚入职还是很兴奋的&#xff0c;到公司一看我傻了&#xff0c;公司除了我一个自动化测试&#xff0c;公司的测试人员就只有2个开发3个前端1个测试还有2个UI&#xff0c;在粗略了解公司的业务后才发现是一个从零开始的项目&…

笔记本电脑正常开机但是桌面变成错误代码怎么办?

笔记本电脑正常开机但是桌面变成错误代码怎么办&#xff1f;有用户将自己的笔记本电脑开机之后&#xff0c;电脑可以正常开启&#xff0c;但是系统在加载的过程中&#xff0c;突然变成了一些错误代码&#xff0c;无法正常的到达桌面上。那么这个问题怎么去进行解决呢&#xff1…

操作系统学习系列(1.启航)-操作系统基本概念

文章目录 前言操作系统基本概述中断与硬件的基本交互基本地址地址概念启动流程应用程序与操作系统的关系 Hello World启动总结 前言 本系列博文主要用于第二阶段深入了解的408专业内容考研使用。也就是说在开启本系列之前&#xff0c;最好已经对408有基本的了解。重复的基础概…

推动网络安全的三大问题

网络攻击已成为技术主管和企业最关心的问题之一。预计到2025 年&#xff0c;网络犯罪将使公司每年损失 105 亿美元。2021 年网络犯罪的预估成本为 6.1 万亿美元&#xff0c;预计每年增长 15%。 企业正在增加网络安全预算以保护其资产。2022年&#xff0c;网络安全职位的发布数…

私域运营需要怎么样才能做好?

进入2023年&#xff0c;越来越多品牌商家意识到&#xff0c;“私域运营”已经成为品牌营销的必选项。作为私域运营的核心阵地&#xff0c;微信凭借社群、企业微信、小程序、视频号等多个生态插件&#xff0c;为品牌私域经营提供了很多创新思路&#xff0c;其中“社群微信管理”…

01.GATK肿瘤基因变异最佳实践SnakeMake流程:WorkFlow简介

<~生~信~交~流~与~合~作~请~关~注~公~众~号生信探索> 代码地址 https://jihulab.com/BioQuest/smkhsshttps://github.com/BioQuestX/smkhss GATK best practices workflow Pipeline summary SnakeMake workflow for Human Somatic short variants (SNPINDEL) Expected fa…

JAVA开发(小程序商城价值画像)

小程序商城是一种流行的电子商务形式&#xff0c;允许用户通过微信或其他应用程序直接购买商品。随着消费者对在线购物的需求和期望不断增加&#xff0c;小程序商城已经成为一个不可或缺的销售渠道。本文将探讨小程序商城的价值画像&#xff0c;包括其优点、挑战和未来发展趋势…

接口测试|Fiddler弱网测试

Fiddler进行弱网测试 弱网测试 概念&#xff1a;弱网看字面意思就是网络比较弱&#xff0c;我们通称为信号差&#xff0c;网速慢。 意义&#xff1a;模拟在地铁、隧道、电梯和车库等场景下使用APP &#xff0c;网络会出现延时、中断和超时等情况。 在这里插入图片描述 Fidd…

子域名接管劫持

什么是域名劫持&#xff1f; 域名劫持也被称为DNS劫持&#xff0c;它通过攻击域名解析服务器、伪造域名解析服务器的方法&#xff0c;拦截目标的域名解析请求&#xff0c;将目标网站域名解析到错误的地址上&#xff0c;让攻击目前无法回应访问。 子域名接管漏洞通常被滥用于以…

大数据简介

大数据简介 什么是大数据 ​ 最近几年&#xff0c;IT行业最火的名词中&#xff0c;少不了"大数据"、"人工智能"、"云计算"、"物联网"、"区块链"等等这些名词。针对于"大数据"这个名词&#xff0c;现在更是全国老…

嵌入式软件测试笔记2 |TEmb方法概述

2 |TEmb方法概述 1 TEmb简介2 TEmb工作原理3 系统特性4 TEmb通用元素4.1 生命周期4.2 技术4.3 基础设施4.3.1 测试环境4.3.2 工具和测试自动化4.3.3 办公环境 4.4 组织 5 组合专用测试方法的机制5.1 常用系统特性5.2 特定方法5.3 LITO矩阵 1 TEmb简介 TEmb是一种方法&#xff…

如何加快和自动化企业的招标过程?

材料和劳动力成本已经上升到了过去40年的比较高水平&#xff0c;而建筑业是竞争较激烈、较复杂的行业之一&#xff0c;分析供应链报价的需求也在增加。数字平台如何支持这个行业&#xff1f; 市场上有各种各样的管理系统&#xff0c;如何才能选择尤为适合企业的需求呢&#xf…

安卓应用实现自动升级

应用发布后&#xff0c;要实现灰度升级控制&#xff0c;如果只依赖各家应用市场是不够的&#xff0c;需要自己在应用中控制升级逻辑。并且每家应用市场上架审核也是一件很麻烦的事情&#xff0c;尤其像至简网格这样的应用&#xff0c;没在应用市场上架&#xff0c;更不可能依赖…

Unity WebGl和前端(Angular)相互调用(含跨域问题)

在Unity官方文档中就已经介绍了Unity和JS相互调用的问题&#xff0c;但是我们实际的应用中往往是使用iframe来展示WebGL。这样不但是webgl和js相互调用的问题&#xff0c;还包含了iframe跨域的问题。 我们的项目中前端使用的是angular框架&#xff0c;就以angular为基础来说一…

关于谷歌云计算进行Python yolov5的使用操作(简略版)

关于谷歌云计算的使用操作&#xff08;简略版&#xff09; 谷歌云盘&#xff1a;https://drive.google.com/ 翻墙订阅&#xff1a;链接 谷歌云盘创建操作&#xff1a; 1 2 3.添加Colaboratory关联 设置免费的GPU 它是很容易更换默认的硬件&#xff08;None,GPU,TPU&#xff…

群智能算法-粒子群1

一.基本理念 粒子群算法(PSO),最早由两位外国科学家在1995年提出&#xff0c;该算法源自对鸟类捕食问题的研究。 我们将鸟类补食性原则分为一下三个基数&#xff0c;每组基数对应一个粒子&#xff0c;而每组粒子我们将其称之为种群。所以我们将其在细分具体&#xff0c;基数一&…

C++核心编程—类和对象,类的三大特性——封装、继承、多态

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 &#x1f4ac;文章目录 一.类和对象的概念①什么是对象&#xff1f;②抽象和类1.类的基本概念2.类的声明与定义&#xff1a;3.对象的创建与使用 二.类的封装①为什么有封…