人脸图像识别(python人脸识别技术)

举报
兰舟千帆 发表于 2022/07/21 18:35:16 2022/07/21
【摘要】 @[TOC](python人脸识别) 人脸识别的崛起 什么是人脸识别人脸识别是将采集到的数据信息,根据人脸特征信息进行比对,从而辨识身份的技术。每逢谈到人脸识别技术,就会想到人工智能,近年来,人工智能的发展成为当代技术革命的一部分。可以说计算机领域技术的发展,极大的带动了这场革命。常常在想人脸识别是如何做到,的这里面与复杂高级的数据建模,建立人脸各部分的数据模型密切相关。说白了,其实也就是算...

@[TOC](python人脸识别)

人脸识别的崛起

什么是人脸识别

人脸识别是将采集到的数据信息,根据人脸特征信息进行比对,从而辨识身份的技术。每逢谈到人脸识别技术,就会想到人工智能,近年来,人工智能的发展成为当代技术革命的一部分。可以说计算机领域技术的发展,极大的带动了这场革命。

在这里插入图片描述
常常在想人脸识别是如何做到,的这里面与复杂高级的数据建模,建立人脸各部分的数据模型密切相关。说白了,其实也就是算法,算法的研究,成为推动智能发展的顶梁柱。
在这里插入图片描述
这里面涉及的比较多,无论是从深度学习,还是机器学习,人工智能,这里面的实现过程,想必都是十分复杂的。
在下知识面比较薄弱,不敢多言。不过肯定的一点是,你的人脸识别首先要将人脸转化为计算机可以识别的数据,人脸识别其实就是计算机方面的数据识别。

人脸识别技术的应用和发展

谈到应用,我的第一映像就是手机上的人脸识别解锁,目前在学校公寓里面也有人脸识别的机器,我记得首先是收集了我们学生们的照片,应该是存入数据库的,我们学生的信息,包括学号,以及所在系等等,学校都是存入数据库的。学生在进入公寓时需要进行人脸识别,机器会进行识别。系统有两种识别方式,一是识别人像,二是进行刷卡,刷卡会将自己的信息读取,会与数据库的信息对比,也是一种识别的方式。

在这里插入图片描述
目前,从我国人脸识别技术应用来看,主要集中在三大领域:考勤门禁、安防以及金融等等。人脸识别目前面临着一个难题是,对于明亮可能有点要求,像黑暗的环境就比较困难,还有面部本身黑色的人也可能会有误差。但是技术革命的发展,也必将解决这一难题。只有你想不到的,没有做不到的。


应用前景:随着人工智能的兴起,更加高端的识别技术才是主流发展方向,无需接触、更加方便、直观的方式是未来方向,人脸识别具备无需被测者配合的特点,采集器扫过人脸就能进行对比,这在公安刑侦领域有着巨大的前景,在门禁安防领域,操作更加便捷的人脸识别也会更受欢迎。

python人脸识别

导入库

python是一门强大的计算机编程语言,我们常常要用到python中的库,今天我们用到的库是需要安装的,因为不是python的内置库。
1:opencv-python
2:face_recognition

我们这里主要介绍通过控制台命令导入库,不过这里可能与一般情况下的固定格式的导入有所区别。当然你可以借用Pycharm,以及直接去网站上安装相应的包。我比较喜欢控制台命令,因为感觉Pycharm导入某些库是比较慢的。

导入opencv,这和python的版本是有区别的,我的是python3.7版本的。在控制台导入时,我们可以这样导入,opencv是依赖numpy的,我们一般这样导入,首先我们导入cmake,,pip install cmake -i 镜像源。

目前国内的镜像源有如下:
阿里云 http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

豆瓣(douban) http://pypi.douban.com/simple/

清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/

中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学 http://pypi.hustunique.com/simple/

山东理工大学 http://pypi.sdutlinux.org/simple/

我们再导入opencv-python,这样导入 pip install opencv-python -i 镜像源 -trusted-host

trusted-host是代表信任该镜像源,这里主要针对可能出现不信任的提示的情况。

同理,我们导入face_recognition时,我们这样在控制台这样写:pip install face_recognition -i 镜像源 -trusted-host

这里可能会出现内存占用很大的问题,不过等一会就好了
在这里插入图片描述

实现代码

此代码的目的是实现对图片中人脸的识别,并判断是否是同一张脸,是则返回yes,否则返回no,图片会显示出来,并显示划定人脸的位置框型。yes和no会在图片上方显示。
下面展示一些 内联代码片

#import sys #python内置库
import cv2 #计算机视觉领域
import face_recognition #人脸识别库,如果读取图片的话,会是图像矩阵
#就是每个图片的rgb
# 1.人脸数据
# 2.算法
# 3.建立模型
# 4.训练模型
# 5.测试模型
# 6.上线使用

# 1读取
face_image = face_recognition.load_image_file("E://1.jpg")#读取图片
# 2进行人脸特征提取 向量化
#128维的五官数据
face_encoding = face_recognition.face_encodings(face_image)
# 3人脸位置
face_locations = face_recognition.face_locations(face_image)
# 判断
n = len(face_encoding)
#如果超过连个人就退出来
if n>2:
    print('超过两个人')
    sys.exit()
face1 = face_encoding[0]
face2 = face_encoding[1]
# 4比较   阈值 tolerance指定容错率,越小越严格
result = face_recognition.compare_faces([face1],face2,tolerance=0.5)
if result == [True] :
    print(1)
    name = 'Yes'
else :
    print(0)
    name = 'No'
#绘图

for i in range(len(face_encoding)):
    face_encoding = face_encoding[i]
    face_location = face_locations[i]
    top,right,bottom,left = face_location
    #画框             图像                  位置          颜色     粗细
    cv2.rectangle(face_image,(left,top),(right,bottom),(0,255,0),2)
    #写字
    cv2.putText(face_image,name,(left,top),cv2.FONT_HERSHEY_SIMPLEX,0.8,(255,0,0,2))
face_image_rgb = cv2.cvtColor(face_image,cv2.COLOR_BGR2RGB)
# 展示图像
cv2.imshow("output",face_image_rgb)
#防止闪退
cv2.waitKey(0)





我随便找了一张图,给大家简单演示下这个过程
我们来看实现结果
在这里插入图片描述
我们看到结果是这两个人不是同一张脸,当然,这张图可能比较容易辨别。各位可以尝试难度比较大的。据说face_recognition库地识别率达到99.5%以上,这是保底了。
注意代码的指定容错率,这也是和结果很有关系的。

当然对于视频动态图像也是可以的,我们python中也有调用摄像头的模块,以及也有可以将手机的摄像头将摄像头转换地址的,我们可以在代码中加入进来,调用摄像头并控制拍照片,这样就可以和这个结合起来,实现动态人脸识别。我们可以有这个思路,这里只是给大家简单介绍一下python的这个人脸识别库。当然也会有其他的编程语言的实现人脸识别。

后期会写出动态拍照人脸识别。说到底,还是调用库啊,会写库和算法的才是大佬,只会用方法的我还是有很多需要去学习。

毕竟才疏学浅,在下还望各位大佬指正。期待与大家共同进步。
-----jgdabc
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200