赞
踩
git clone https://github.com/deepinsight/insightface.git
insightface/python-package at master · deepinsight/insightface · GitHub
- pip install -U Cython cmake numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
- pip install -U insightface -i https://pypi.tuna.tsinghua.edu.cn/simple
- pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
按照GITHUB上提供的测试推理代码:
- 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)
执行python py.py
得到输出推理结果t1_output.jpg,图中位于框左上角的字符分别表示性别和年龄,F(emal).age, M(ale).age.这说明,性别和年龄也作为独立的维度参与到模型训练的过程。
原图:
GitHub - baidu/lac: 百度NLP:分词,词性标注,命名实体识别,词重要性
http://vis-www.cs.umass.edu/fddb/index.html#download
上面介绍的是基于深度学习训练路线的人脸检测器,实际上OPENCV已经包含了很多先进算法,这其中就包括基于HOG特征的人脸检测器 ,我们可以试着运行以下。
- # -*- coding: utf-8 -*-
- import cv2
- #读取待检测的图像
- image = cv2.imread('/home/czl/Workspace/hog/beauty.jpeg')
- # 获取xml文件,加载人脸检测器
- faceCascade = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml')
- # 色彩转换,转换为灰度图像
- gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
- # 调用函数detectMultiScale
- faces = faceCascade.detectMultiScale(
- gray,
- scaleFactor = 1.15,
- minNeighbors = 5,
- minSize = (5,5)
- )
- print(faces)
- #打印输出测试结果
- print("发现{0}个人脸!".format(len(faces)))
- #逐个标记人脸
- for(x,y,w,h) in faces:
- #矩形标注
- # cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2)
- cv2.circle(image,(int((x+x+w)/2),int((y+y+h)/2)),int(w/2),(0,255,0),2)
- #显示结果
- cv2.imshow("dect",image)
- #保存检测结果
- cv2.imwrite("re.jpg",image)
- cv2.waitKey(0)
- cv2.destroyAllWindows()
run result:
- import cv2
- import matplotlib.pyplot as plt
- from skimage.feature import hog
- from skimage import data, exposure
- image = cv2.imread('/home/caozilong/Workspace/hog/beauty.jpeg')
-
- fd, hog_image = hog(image, orientations=8, pixels_per_cell=(16, 16),
- cells_per_block=(1, 1), visualize=True, multichannel=True)
- fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 4), sharex=True, sharey=True)
- ax1.axis('off')
- ax1.imshow(image, cmap=plt.cm.gray)
- ax1.set_title('Input image')
- # Rescale histogram for better display
- hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10))
- ax2.axis('off')
- ax2.imshow(hog_image_rescaled, cmap=plt.cm.gray)
- ax2.set_title('Histogram of Oriented Gradients')
- plt.show()
运行结果:
简单探讨一下原理,从上面的图形可以看出,几位美女的脸部轮廓已经抓取到了,接下来就可以用这些轮廓数据构成一个tensor,和标准的人脸TENSOR 做一些相似度比较,从而得到是否是脸的概率。
人脸识别获取相似度的算法是简单的对两个向量取余弦相似度,下图是NCNN中的做法:
https://github.com/deepcam-cn/yolov5-face
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。