当前位置:   article > 正文

Insightface人脸特征识别模型环境搭建和试玩儿_insightface安装

insightface安装

主机环境

代码下载

git clone https://github.com/deepinsight/insightface.git

 insightface/python-package at master · deepinsight/insightface · GitHub

环境准备

  1. pip install -U Cython cmake numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
  2. pip install -U insightface -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

测试推理代码

按照GITHUB上提供的测试推理代码:

  1. import cv2
  2. import numpy as np
  3. import insightface
  4. from insightface.app import FaceAnalysis
  5. from insightface.data import get_image as ins_get_image
  6. app = FaceAnalysis(providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
  7. app.prepare(ctx_id=0, det_size=(640, 640))
  8. img = ins_get_image('t1')
  9. faces = app.get(img)
  10. rimg = app.draw_on(img, faces)
  11. cv2.imwrite("./t1_output.jpg", rimg)

执行python py.py

得到输出推理结果t1_output.jpg,图中位于框左上角的字符分别表示性别和年龄,F(emal).age, M(ale).age.这说明,性别和年龄也作为独立的维度参与到模型训练的过程。

原图:

GitHub - baidu/lac: 百度NLP:分词,词性标注,命名实体识别,词重要性

人脸检测数据集FDDB

http://vis-www.cs.umass.edu/fddb/index.html#download

基于计算机视觉算法的人脸检测

上面介绍的是基于深度学习训练路线的人脸检测器,实际上OPENCV已经包含了很多先进算法,这其中就包括基于HOG特征的人脸检测器 ,我们可以试着运行以下。

  1. # -*- coding: utf-8 -*-
  2. import cv2
  3. #读取待检测的图像
  4. image = cv2.imread('/home/czl/Workspace/hog/beauty.jpeg')
  5. # 获取xml文件,加载人脸检测器
  6. faceCascade = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml')
  7. # 色彩转换,转换为灰度图像
  8. gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
  9. # 调用函数detectMultiScale
  10. faces = faceCascade.detectMultiScale(
  11. gray,
  12. scaleFactor = 1.15,
  13. minNeighbors = 5,
  14. minSize = (5,5)
  15. )
  16. print(faces)
  17. #打印输出测试结果
  18. print("发现{0}个人脸!".format(len(faces)))
  19. #逐个标记人脸
  20. for(x,y,w,h) in faces:
  21. #矩形标注
  22. # cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2)
  23. cv2.circle(image,(int((x+x+w)/2),int((y+y+h)/2)),int(w/2),(0,255,0),2)
  24. #显示结果
  25. cv2.imshow("dect",image)
  26. #保存检测结果
  27. cv2.imwrite("re.jpg",image)
  28. cv2.waitKey(0)
  29. cv2.destroyAllWindows()

run result:

计算图像HOG特征

  1. import cv2
  2. import matplotlib.pyplot as plt
  3. from skimage.feature import hog
  4. from skimage import data, exposure
  5. image = cv2.imread('/home/caozilong/Workspace/hog/beauty.jpeg')
  6. fd, hog_image = hog(image, orientations=8, pixels_per_cell=(16, 16),
  7. cells_per_block=(1, 1), visualize=True, multichannel=True)
  8. fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 4), sharex=True, sharey=True)
  9. ax1.axis('off')
  10. ax1.imshow(image, cmap=plt.cm.gray)
  11. ax1.set_title('Input image')
  12. # Rescale histogram for better display
  13. hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10))
  14. ax2.axis('off')
  15. ax2.imshow(hog_image_rescaled, cmap=plt.cm.gray)
  16. ax2.set_title('Histogram of Oriented Gradients')
  17. plt.show()

运行结果:

简单探讨一下原理,从上面的图形可以看出,几位美女的脸部轮廓已经抓取到了,接下来就可以用这些轮廓数据构成一个tensor,和标准的人脸TENSOR 做一些相似度比较,从而得到是否是脸的概率。

人脸识别获取相似度的算法是简单的对两个向量取余弦相似度,下图是NCNN中的做法:

参考资料

https://github.com/deepcam-cn/yolov5-face

HOG特征详解 | 数据与算法​​​​​​


结束

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/289192
推荐阅读
相关标签
  

闽ICP备14008679号