当前位置:首页 > 技术 >

人脸识别怎样简单的通过(人脸识别怎么能直接通过)

来源:原点资讯(www.yd166.com)时间:2022-11-25 22:57:43作者:YD166手机阅读>>

哈喽,大家好。

今天给大家总结几个简单、好用的人脸识别算法。 人脸识别是计算机视觉中比较常见的技术,生活中,我们接触最多的人脸识别场景是人脸考勤,我之前还专门写过一篇人脸考勤的项目,感兴趣的朋友可以看看。

人脸识别的算法最核心的工作是从一张图片中识别出人脸的位置。识别的算法可以说是多种多样, 下面我就来为大家一一介绍下。

人脸识别怎样简单的通过,人脸识别怎么能直接通过(1)



1. HoG人脸检测

该算法采用传统的机器学习算法来识别人脸。传统机器学习算法的特点是人工构造特征,然后将构造好的特征送入模型训练。

该算法用HoG提取图片中人脸特征,用SVM算法进行分类。

HoG(Histogram of Oriented Gradient, 方向梯度直方图)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子,通过计算和统计图像局部区域的梯度方向直方图来构成特征。

dlib库中有该算法的实现,下面我们看看核心代码

import dlib # 加载预训练的 HoG 人脸检测器 hog_face_detector = dlib.get_frontal_face_detector() # 对图片进行人脸检测 results = hog_face_detector(imgRGB, 0) for bbox in results: x1 = bbox.left() # 人脸左上角x坐标 y1 = bbox.top() # 人脸左上角y坐标 x2 = bbox.right() # 人脸右下角x坐标 y2 = bbox.bottom() # 人脸右下角y坐标

results 存放一张图中检测出来的多个人脸, 遍历results可以得到每张人脸的矩形框。

检测示例如下:

人脸识别怎样简单的通过,人脸识别怎么能直接通过(2)

绿框框出来的就是算法检测出来的人脸。

HoG 人脸检测由于采用传统机器学习算法,所以性能比较高,在CPU上运行也可以比较快。但它无法检测小于 80*80 的人脸,对旋转人脸、非正面人脸,识别效果也不太好。

2. 深度学习人脸检测

虽然传统机器学习算法检测更快,但准确度却有待提升。基于深度学习的人脸检测算法往往会更加准确。

这里介绍的是使用残差网络ResNet-10通过网络(模型)在图像的单通道( Single Shot Detector,SSD)中检测多个人脸。简称SSD算法。

首先,需要将原始图片进行blob预处理,然后直接送入模型,进行检测

cv2库提供了该算法的实现,核心代码如下:

import cv2 # 加载预训练的 SSD 模型 opencv_dnn_model = cv2.dnn.readNetFromCaffe( prototxt="models/deploy.prototxt" , caffeModel="models/res10_300x300_ssd_iter_140000_fp16.caffemodel") # 原始图片 blob 处理 preprocessed_image = cv2.dnn.blobFromImage(image, scalefactor=1.0, size=(300, 300), mean=(104.0, 117.0, 123.0), swapRB=False, crop=False) # blob 图片送入模型 opencv_dnn_model.setInput(preprocessed_image) # 模型推理,进行人脸检测 results = opencv_dnn_model.forward() # 遍历人脸 for face in results[0][0]: # 置信度 face_confidence = face[2] # 人脸边框的左上角和右下角坐标点 x1 = int(bbox[0] * image_width) y1 = int(bbox[1] * image_height) x2 = int(bbox[2] * image_width) y2 = int(bbox[3] * image_height)

results[0][0]存放了检测出来的多张人脸,每张人脸用数组表达,数组的第3位存放置信度,可以通过阈值过滤不置信的人脸。数组的第4~7位存放检测出来的人脸矩形框左上角和右下角的坐标。

相比于 HoG 人脸检测,SSD 算法对遮挡、非正面人脸也能检测出来。

人脸识别怎样简单的通过,人脸识别怎么能直接通过(3)



3. 卷积神经网络人脸检测

卷积就不多说了,了解计算机视觉的都知道。

dlib库提供了卷积神经网络人脸检测算法的实现,用法跟之前类似

import dlib # 记载预训练模型 cnn_face_detector = dlib.cnn_face_detection_model_v1("models/mmod_human_face_detector.dat") # 人脸检测 results = cnn_face_detector(imgRGB, 0) # 遍历每张人脸 for face in results: # 人脸边框 bbox = face.rect # 人脸边框的左上角和右下角坐标点 x1 = int(bbox.left() * (width/new_width)) y1 = int(bbox.top() * (height/new_height)) x2 = int(bbox.right() * (width/new_width)) y2 = int(bbox.bottom() * (height/new_height))

results的解析跟上面类似,这里就不在赘述了。

采用卷积神经网络的人脸检测算法优势很明显,比前两个更准确和健壮,并且还能够检测遮挡下的人脸。

人脸识别怎样简单的通过,人脸识别怎么能直接通过(4)

即便非正面、且光线暗的图片,也能很好检测出来

人脸识别怎样简单的通过,人脸识别怎么能直接通过(5)

但该算法相应的缺点也很明显,检测过程所花费的时间非常长,无法在 CPU 上实时运行。

4. BlazeFace

上面的算法要么精度高、速度慢,要么速度快,精度低。那有没有一种检测算法,既有高准确率,又有高性能呢?

答案是肯定的,BlazeFace是一种非常轻量级且高度准确的人脸检测器,号称亚毫秒级的人脸检测器。其灵感来自 Single Shot MultiBox Detector (SSD) 和 MobileNetv2。

Mediapipe库提供了该算法的实现,核心代码如下:

import mediapipe as mp # 画图工具 mp_drawing = mp.solutions.drawing_utils # 初始化人脸检测模型 mp_face_detection = mp.solutions.face_detection mp_face_detector = mp_face_detection.FaceDetection(min_detection_confidence=0.4) results = mp_face_detector.process(imgRGB) if results.detections: # 变脸检测出的人脸 for face_no, face in enumerate(results.detections): # 画人脸关键点 mp_drawing.draw_detection(image=output_image, detection=face, keypoint_drawing_spec=mp_drawing.DrawingSpec(color=(0,255,0),thickness=-1, circle_radius=image_width//115), bbox_drawing_spec=mp_drawing.DrawingSpec(color=(0,255,0),thickness=image_width//180)) # 画人脸框 face_bbox = face.location_data.relative_bounding_box x1 = int(face_bbox.xmin*image_width) y1 = int(face_bbox.ymin*image_height) cv2.rectangle(output_image, pt1=(x1, y1-image_width//20), pt2=(x1 image_width//16, y1), color=(0, 255, 0), thickness=-1)

效果如下:

人脸识别怎样简单的通过,人脸识别怎么能直接通过(6)

可以看到,BlazeFace算法不光能检测人脸,还能识别出人脸6个关键点(眼睛、鼻子、耳朵、嘴)。

上面就是今天分享的4个人脸识别的算法。

识别出人脸,我们再做人脸考勤就非常简单了,把人脸Embedding成向量,计算向量的之间的距离即可。

文章来自https://www.cnblogs.com/duma/p/16487643.html

栏目热文

人脸识别三种方法(人脸识别六种方法)

人脸识别三种方法(人脸识别六种方法)

随着通信设备和摄像技术的迅速发展,人脸识别技术已经成为许多产品的主要应用支撑或重要配置。以下内容对目前人脸识别常见的三种...

2022-11-25 23:07:43查看全文 >>

人脸识别正式步骤(人脸识别方法和步骤)

人脸识别正式步骤(人脸识别方法和步骤)

在众多的人工智能技术中,人脸识别商用较为成熟且落地应用更为广泛。它作为基于脸部特征信息进行身份识别的一种生物识别技术,已...

2022-11-25 23:14:07查看全文 >>

人脸识别过程三个步骤(人脸识别六种方法)

人脸识别过程三个步骤(人脸识别六种方法)

如今,人脸识别技术已经不稀奇了。手机解锁、车站进站时经常用到。然而,一项看似热门的技术,其实设计起来并不简单。本文作者分...

2022-11-25 22:54:34查看全文 >>

人脸识别操作入口(人脸识别怎么操作)

人脸识别操作入口(人脸识别怎么操作)

家住杭州的郭兵是杭州野生动物世界(下称“动物世界”)的年卡用户。每次入园,他需要在闸机上刷年卡,同时验证指纹。这种入园方...

2022-11-25 22:43:06查看全文 >>

人脸识别有哪些步骤(人脸识别的过程三个步骤)

人脸识别有哪些步骤(人脸识别的过程三个步骤)

今天我们来盘一盘人脸注册、人脸识别等相关操作,这是一个简单的入门教程。话不多说,我们进入主题:完成人脸识别所需的步骤:注...

2022-11-25 23:13:43查看全文 >>

人脸识别要哪些步骤(人脸识别需要几个步骤)

人脸识别要哪些步骤(人脸识别需要几个步骤)

  健康码核验闸机无障碍通道可以快速测温、完成健康码核验,用于办公楼入口、学校入口、医院门口等场景可以有效提升人工管理效...

2022-11-25 23:09:24查看全文 >>

人脸识别需要几个步骤(人脸识别正确使用步骤)

人脸识别需要几个步骤(人脸识别正确使用步骤)

应用领域金融领域。人脸识别当前在金融领域的应用最为广泛,当前国内金融领域监管要求严格,金融相关产品都需要实名认证,并且具...

2022-11-25 22:40:38查看全文 >>

人脸识别有几种方法(人脸识别有什么巧妙的方法)

人脸识别有几种方法(人脸识别有什么巧妙的方法)

来源:科技日报原标题:一键鉴别“真假脸”黑科技亮相世界互联网大会张嘴、摇头,摄像头在捕捉到观众的动作后,屏幕上原本静态的...

2022-11-25 23:24:13查看全文 >>

人脸识别三步骤(人脸识别的过程三个步骤)

人脸识别三步骤(人脸识别的过程三个步骤)

大家好,我是乌客。 本期来聊聊我在安装群晖7.0时遇到的一些问题,以及解决方法。希望对还没有用上7.0的网友有所帮助。以...

2022-11-25 23:08:10查看全文 >>

人脸识别具体过程(人脸识别流程和步骤)

人脸识别具体过程(人脸识别流程和步骤)

在人脸识别技术应用盛行的当下,我们从技术层面来聊聊4-4-5算法轨迹(即4个特点、4个步骤、5个难点及算法的发展轨迹),...

2022-11-25 22:36:48查看全文 >>

文档排行