Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >人脸图像识别(python人脸识别技术)

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

作者头像
兰舟千帆
发布于 2022-07-16 04:24:00
发布于 2022-07-16 04:24:00
17.7K00
代码可运行
举报
运行总次数:0
代码可运行

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会在图片上方显示。 下面展示一些 内联代码片

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql 读写分离altas
1、altas2.2.1,只能安装在64位系统上 2、1台管理机,2台DB,1主1从。配置主从同步 3、主从配置管理机登录账号 GRANT ALL ON . TO 'altas'@'x.x.x.x' IDENTIFIED BY 'x';   flush privileges; 4、管理机安装altas rpm -ivh Atlas-2.2.1.el6.x86_64.rpm 5、给连接的主从数据库密码加密并记录 cd /usr/local/mysql-proxy/bin ./encrypt altas 6、配置altas cd /usr/local/mysql-proxy/conf vi test.conf
用户5760343
2019/11/12
1.2K0
mysql读写分离(使用Atlas实现)
  mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品:Atlas,tddl,Mycat。   mysql中间件研究原文:Mysql中间件研究(Atlas,cobar,TDDL)
全栈程序员站长
2022/08/31
3120
MySQL 高可用架构Atlas
Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。
星哥玩云
2022/08/17
1.7K0
MySQL 高可用架构Atlas
MHA高可用架构与Atlas读写分离
  MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在10~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
惨绿少年
2019/05/24
1.3K0
Mysql 用中间件atlas进行读写分离(学习笔记十四)
Atlas是Qihoo360开发的一个中间件,位于Client和MySQL Server中间层,可以作为读写分离,分库分表中间件。
用户5760343
2022/05/23
8650
Mysql 用中间件atlas进行读写分离(学习笔记十四)
Mysql代理中间件Atlas安装和配置
前提得配置好主从参考:http://www.cnblogs.com/super-d2/p/4802990.html
BUG弄潮儿
2022/06/30
4000
MySQL工具Atlas的安装使用
Atlas是由Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目 它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性 360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条 下载地址 :https://github.com/Qihoo360/Atlas/releases
仙人技术
2021/08/31
8110
Atlas中间件实现Mysql读写分离[通俗易懂]
Atlas 是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。
全栈程序员站长
2022/08/31
8350
MySQL主从+Atlas 实现读写分离
Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发者交流群,并且这些数字还在不断增加。
全栈程序员站长
2021/06/10
9300
MySQL主从+Atlas 实现读写分离
Mysql 中间件 Atlas MySQL
Atlas MySQL 详细介绍 Atlas是由 Qihoo 360,  Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。 主要功能: * 读写分离 * 从库负载均衡 * IP过滤 * SQL语句黑白名单 * 自动分表 Q & A ------------
老七Linux
2018/05/31
1.7K0
Altas mysql-proxy读写分离中间件
Atlas下载地址: https://github.com/Qihoo360/Atlas/releases
用户5760343
2022/05/14
3600
Altas  mysql-proxy读写分离中间件
Mysql之读写分离架构-Atlas
​ Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。 它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性; ​ 360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条;
iginkgo18
2021/04/25
1.2K0
Mysql之读写分离架构-Atlas
Atlas实现MySQL主从分离
Atlas源代码用C语言编写,它对于Web Server相当于是DB,相对于DB相当于是Client,如果把Atlas的逻辑放到Web Server程序里去处理,这样会大大增加Web Server程序的复杂度,同时Web Server和DB之间的耦合度也相当高,因为只要DB增加/减少服务,Web Server就有可能要发生代码改变,若代码不改变,就得通过中间关系表与心跳机制来维护Server之间的关系,这样会带来性能的损耗,而Atlas是架设在Web Server与DB之间的一个中间件,Web Server与DB之间的耦合关系放到了Atlas来处理,既做到了灵活也保留了性能,这也是Atlas存在的价值。
星哥玩云
2022/08/17
7210
Atlas实现MySQL主从分离
基于lnmp环境的小说平台的搭建与维护
这两台机器实际上目前请求的只有一台机器,由于阿里云有限制,不能使用keepalived来做nginx的高可用,所以所有的请求均由其中一台机器承担,这台机器目前是由192.168.111.26来工作,上面有nginx,php,redis等服务
dogfei
2020/07/31
7950
基于lnmp环境的小说平台的搭建与维护
数据库中间件Atlas调研笔记
前篇: 《假如让你来设计数据库中间件》 《数据库中间件TDDL调研笔记》 《数据库中间件cobar调研笔记》 《数据库中间件mysql-proxy调研笔记》 13年底负责数据库中间件设计时的调研笔记,拿出来和大家分享,轻拍。 一、Atlas是什么 奇虎360的一个mysql数据库中间层项目 在mysql官方推出的mysql-proxy0.8.2的基础上改的 基于服务端的中间件 画外音:数据库中间件有基于服务端的,也有基于客户端的,TDDL属于后者;而cobar和Atlas是一个中间层服务,属于前者。 二
架构师之路
2018/03/02
1.7K0
360 Atlas生产环境使用心得
以下是其github代码库:https://github.com/Qihoo360/Atlas
心平气和
2020/09/11
2.2K0
360 Atlas生产环境使用心得
数据库中间件mysql-proxy细节【mysql官方的中间件】
一、mysql-proxy简介 mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server,它使用mysql协
架构师之路
2018/02/28
9.5K0
数据库中间件mysql-proxy细节【mysql官方的中间件】
Mysql读写分离方案-MySQL Proxy环境部署记录
Mysql的读写分离可以使用MySQL Proxy和Amoeba实现,其实也可以使用MySQL-MMM实现读写分离的自动切换。MySQL Proxy有一项强大功能是实现"读写分离",基本原理是让主数据库处理写方面事务,让从库处理SELECT查询;Amoeba for MySQL是一款优秀的中间件软件,同样可以实现读写分离,负载均衡等功能。下面重点说下Mysql Proxy: MySQL Proxy处于客户端应用程序和MySQL服务器之间,通过截断、改变并转发客户端和后端数据库之间的通信来实现其功能。代理服务
洗尽了浮华
2018/01/23
2K0
Mysql读写分离方案-MySQL Proxy环境部署记录
『互联网架构』软件架构-mysql主从(二)
PS:其实很多公司都是通过代理的方式来管理主从数据库的。它可以有选择控制从哪个数据库走。感觉挺爽的,102走的是insert,103走的是select。
IT架构圈
2019/03/04
7870
『互联网架构』软件架构-mysql主从(二)
第十一章· MHA高可用及读写分离
松信嘉範: MySQL/Linux专家 2001年索尼公司入职 2001年开始使用oracle 2004年开始使用MySQL 2006年9月-2010年8月MySQL从事顾问 2010年-2012年 DeNA 2012年~至今 Facebook
DriverZeng
2022/09/26
6050
第十一章· MHA高可用及读写分离
相关推荐
mysql 读写分离altas
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验