insightface 使用记录 arcface 人脸识别

目标

1 能进行人脸检测,检测一张图里的各张人脸图。
2 能进行人脸特征提取,每一张人脸对应一个512维特征。进行人脸识别可以借助arcface损失距离看两张人脸相似度。
3 能进行性别估计,年龄估计。
4 能判断有没有戴口罩,人脸的左右眼、鼻子、左右嘴角检测点。

源码

https://github.com/deepinsight/insightface

环境

用python 3.8,过程大概是:

# CUDA 10.1
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch
pip install mxnet-cu101=1.7
pip install easydict
pip install opencv-python
pip install onnx
pip install scikit-learn
pip install protobuf
pip install insightface

最终:

_libgcc_mutex             0.1                        main    defaults
_openmp_mutex             4.5                       1_gnu    defaults
addict                    2.4.0                    pypi_0    pypi
blas                      1.0                         mkl    defaults
brotlipy                  0.7.0           py38h27cfd23_1003    defaults
ca-certificates           2021.5.25            h06a4308_1    defaults
cartopy                   0.18.0           py38h0d9ca2b_1    defaults
certifi                   2021.5.30        py38h06a4308_0    defaults
cffi                      1.14.5           py38h261ae71_0    defaults
chardet                   4.0.0           py38h06a4308_1003    defaults
click                     7.1.2                    pypi_0    pypi
colorama                  0.4.4                    pypi_0    pypi
cryptography              3.4.7            py38hd23ed53_0    defaults
cudatoolkit               10.1.243             h6bb024c_0    defaults
cycler                    0.10.0                   py38_0    defaults
cython                    0.29.23          py38h2531618_0    defaults
decorator                 4.4.2                    pypi_0    pypi
dlib                      19.22.0                  pypi_0    pypi
easydict                  1.9                      pypi_0    pypi
face-recognition          1.3.0                    pypi_0    pypi
face-recognition-models   0.3.0                    pypi_0    pypi
flask                     1.1.2              pyhd3eb1b0_0    defaults
flatbuffers               2.0                      pypi_0    pypi
freetype                  2.10.4               h5ab3b9f_0    defaults
geos                      3.8.0                he6710b0_0    defaults
gmp                       6.2.1                h2531618_2    defaults
gmpy2                     2.0.8            py38hd5f6e3b_3    defaults
idna                      2.10               pyhd3eb1b0_0    defaults
imageio                   2.9.0                    pypi_0    pypi
importlib-metadata        3.10.0           py38h06a4308_0    defaults
insightface               0.2.1                    pypi_0    pypi
intel-openmp              2021.2.0           h06a4308_610    defaults
itsdangerous              2.0.1              pyhd3eb1b0_0    defaults
jinja2                    3.0.0              pyhd3eb1b0_0    defaults
joblib                    1.0.1              pyhd8ed1ab_0    conda-forge
jpeg                      9b                   h024ee3a_2    defaults
kiwisolver                1.3.1            py38h2531618_0    defaults
lcms2                     2.12                 h3be6417_0    defaults
ld_impl_linux-64          2.35.1               h7274673_9    defaults
libblas                   3.9.0                     9_mkl    conda-forge
libcblas                  3.9.0                     9_mkl    conda-forge
libffi                    3.3                  he6710b0_2    defaults
libgcc-ng                 9.3.0               h5101ec6_17    defaults
libgfortran-ng            7.5.0               ha8ba4b0_17    defaults
libgfortran4              7.5.0               ha8ba4b0_17    defaults
libgomp                   9.3.0               h5101ec6_17    defaults
libpng                    1.6.37               hbc83047_0    defaults
libprotobuf               3.12.4               hd408876_0    defaults
libstdcxx-ng              9.3.0               hd4cf53a_17    defaults
libtiff                   4.2.0                h85742a9_0    defaults
libuv                     1.40.0               h7b6447c_0    defaults
libwebp-base              1.2.0                h27cfd23_0    defaults
lz4-c                     1.9.3                h2531618_0    defaults
markdown                  3.3.4                    pypi_0    pypi
markupsafe                2.0.1            py38h27cfd23_0    defaults
matplotlib-base           3.3.4            py38h62a2d02_0    defaults
mkl                       2021.2.0           h06a4308_296    defaults
mkl-service               2.3.0            py38h27cfd23_1    defaults
mkl_fft                   1.3.0            py38h42c9631_2    defaults
mkl_random                1.2.1            py38ha9443f7_2    defaults
mmcv-full                 1.3.6                    pypi_0    pypi
mmdet                     2.13.0                   pypi_0    pypi
model-index               0.1.11                   pypi_0    pypi
mpc                       1.1.0                h10f8cd9_1    defaults
mpfr                      4.0.2                hb69a4c5_1    defaults
mpmath                    1.2.1            py38h06a4308_0    defaults
mxnet-cu101               1.7.0                    pypi_0    pypi
ncurses                   6.2                  he6710b0_1    defaults
networkx                  2.5.1                    pypi_0    pypi
ninja                     1.10.2               hff7bd54_1    defaults
numpy                     1.20.3                   pypi_0    pypi
numpy-base                1.20.2           py38hfae3a4d_0    defaults
olefile                   0.46                       py_0    defaults
onnx                      1.9.0                    pypi_0    pypi
onnxruntime               1.8.0                    pypi_0    pypi
opencv-python             4.5.2.54                 pypi_0    pypi
openmim                   0.1.1                    pypi_0    pypi
openssl                   1.1.1k               h27cfd23_0    defaults
ordered-set               4.0.2                    pypi_0    pypi
pandas                    1.2.4            py38h2531618_0    defaults
pillow                    8.2.0            py38he98fc37_0    defaults
pip                       21.1.2           py38h06a4308_0    defaults
plotly                    4.14.3             pyhd3eb1b0_0    defaults
proj                      6.2.1                haa6030c_0    defaults
protobuf                  3.12.0                   pypi_0    pypi
pycocotools               2.0.2                    pypi_0    pypi
pycparser                 2.20                       py_2    defaults
pyopenssl                 20.0.1             pyhd3eb1b0_1    defaults
pyparsing                 2.4.7              pyhd3eb1b0_0    defaults
pyshp                     2.1.3              pyhd3eb1b0_0    defaults
pysocks                   1.7.1            py38h06a4308_0    defaults
python                    3.8.10               h12debd9_8    defaults
python-dateutil           2.8.1              pyhd3eb1b0_0    defaults
python-graphviz           0.8.4                    pypi_0    pypi
python_abi                3.8                      1_cp38    conda-forge
pytorch                   1.7.1           py3.8_cuda10.1.243_cudnn7.6.3_0    pytorch
pytz                      2021.1             pyhd3eb1b0_0    defaults
pywavelets                1.1.1                    pypi_0    pypi
pyyaml                    5.4.1                    pypi_0    pypi
readline                  8.1                  h27cfd23_0    defaults
requests                  2.25.1             pyhd3eb1b0_0    defaults
retrying                  1.3.3                      py_2    defaults
scikit-image              0.18.1                   pypi_0    pypi
scikit-learn              0.24.2           py38hdc147b9_0    conda-forge
scipy                     1.6.2            py38had2a1c9_1    defaults
setuptools                52.0.0           py38h06a4308_0    defaults
shapely                   1.7.1            py38h98ec03d_0    defaults
six                       1.15.0           py38h06a4308_0    defaults
sqlite                    3.35.4               hdfb4753_0    defaults
sympy                     1.8              py38h06a4308_0    defaults
tabulate                  0.8.9                    pypi_0    pypi
terminaltables            3.1.0                    pypi_0    pypi
threadpoolctl             2.1.0              pyh5ca1d4c_0    conda-forge
tifffile                  2021.6.6                 pypi_0    pypi
tk                        8.6.10               hbc83047_0    defaults
torchaudio                0.7.2                      py38    pytorch
torchvision               0.8.2                py38_cu101    pytorch
tornado                   6.1              py38h27cfd23_0    defaults
tqdm                      4.61.1                   pypi_0    pypi
typing                    3.7.4.3                  pypi_0    pypi
typing_extensions         3.7.4.3            pyha847dfd_0    defaults
urllib3                   1.26.5                   pypi_0    pypi
werkzeug                  1.0.1              pyhd3eb1b0_0    defaults
wheel                     0.36.2             pyhd3eb1b0_0    defaults
xarray                    0.18.0             pyhd3eb1b0_1    defaults
xz                        5.2.5                h7b6447c_0    defaults
yapf                      0.31.0                   pypi_0    pypi
zipp                      3.4.1              pyhd3eb1b0_0    defaults
zlib                      1.2.11               h7b6447c_3    defaults
zstd                      1.4.9                haebb681_0    defaults

目录介绍

每个子目录下都有README,一般哪里报错装哪里。
在这里插入图片描述

1 alignment 文件夹里面的我用不到,有下面的功能:

在这里插入图片描述
以及论文https://arxiv.org/pdf/1812.01936.pdf

2 challenges

关于比赛的。

3 deploy

需要先pip install insightface,还需要模型文件。

test.py

其中test.py 用的是最新的人脸检测算法scrfd(比RetinaFace检测器更厉害)。但遇到的问题是无法加载到GPU执行,CPU一张图用时1秒钟检测出来。

原图:
在这里插入图片描述
output:
在这里插入图片描述

convert_onnx.py

这是很有用的文件,但是我无法正常运行。insightface用onnx当通用后端,加载模型都是靠加载onnx文件来加载模型。但github上都是提供的mxnet格式的预训练模型权重。

4 detection

三个检测器。
RetinaFace需要make后使用。
RetinaFaceAntiCov需要把RetinaFace的编译文件加载进来后make后使用。
scrfd需要python setup.py install。

5 gender-age

跑test.py后,模型认为:

time cost 0.00120697
gender is 1
age is 30

在这里插入图片描述

6 python-package

就是insightface的pypi包。

7 recognition

只看了arcface_torch文件夹,可以提取图片的特征,512维。

发现宝藏级好用的:
https://github.com/serengil/deepface
1 人脸检测 2 人脸识别 3 人脸搜索1:N 4 人脸性别年龄情感种族 5 视频流实时分析 6 WEB API
在这里插入图片描述

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
利用pytorch实现retinaface arcface人脸识别项目可以分为以下几个步骤。 首先,我们需要安装pytorch和相关的依赖库,例如numpy、opencv等。 其次,我们需要获取训练所需的数据集。可以使用已有的人脸数据库,如LFW或MS-Celeb-1M。如果需要自己采集数据集,可以使用摄像头获取人脸图像。同时,还需要标注数据集,即为每张人脸图像添加标签,用于后续的训练。 接着,我们需要训练retinaface模型。retinaface是一种使用单阶段多任务级联网络实现的人脸检测模型,它可以同时检测人脸的位置和关键点。我们可以使用已有的retinaface模型进行微调,或者从头开始训练一个retinaface模型。 然后,我们需要训练arcface模型。arcface是一种使用全连接网络实现的人脸识别模型,它可以将人脸图像映射到一个高维特征空间,并计算人脸之间的相似度。我们可以使用已有的arcface模型进行微调,或者从头开始训练一个arcface模型。 最后,我们可以使用训练好的retinafacearcface模型进行人脸识别。首先,使用retinaface模型检测人脸并提取关键点。然后,使用arcface模型将提取的人脸特征与已有的标签进行比对,得到相似度结果。最后,根据相似度结果进行人脸识别。 需要注意的是,在实现retinaface arcface人脸识别项目时,我们还需要进行数据预处理、数据增强、模型评估等工作,并进行超参数的选择和调优,以提高识别的准确性和性能。 总结来说,利用pytorch实现retinaface arcface人脸识别项目需要进行数据集获取和标注、训练retinaface模型、训练arcface模型以及人脸识别的实现等多个步骤,通过这个过程可以实现准确性较高的人脸识别系统。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值