近几年来,兴起了一股人工智能热潮,让人们见到了AI的能力和强大,比如图像识别,语音识别,机器翻译,无人驾驶等等。总体来说,AI的门槛还是比较高,不仅要学会使用框架实现,更重要的是,需要有一定的数学基础,如线性代数,矩阵,微积分等。

幸庆的是,国内外许多大神都已经给我们造好“轮子”,我们可以直接来使用某些模型。今天就和大家交流下如何实现一个简易版的人脸对比,非常有趣!
我们都知道Python容易学,但是就是不知道如何去学,去哪里找资料,机器学习,人工智能,深度学习,都在这学习,小编推荐一个学习平台,欢迎加入python学习交流q群先250+933+691,分享我精心准备的Python学习资料,0基础到进阶!希望你们在学习Python道路上少走弯路!加油!
整体思路:

预先导入所需要的人脸识别模型

遍历循环识别文件夹里面的图片,让模型“记住”人物的样子

输入一张新的图像,与前一步文件夹里面的图片比对,返回最接近的结果

使用到的第三方模块和模型:

模块:os,dlib,glob,numpy

模型:人脸关键点检测器,人脸识别模型

1.导入需要的模块和模型


这里解释一下两个dat文件:

它们的本质是参数值(即神经网络的权重)。人脸识别算是深度学习的一个应用,事先需要经过大量的人脸图像来训练。所以一开始我们需要去设计一个神经网络结构,来“记住”人类的脸。

对于神经网络来说,即便是同样的结构,不同的参数也会导致识别的东西不一样。在这里,这两个参数文件就对应了不同的功能(它们对应的神经网络结构也不同):

shape_predictor.dat这个是为了检测人脸的关键点,比如眼睛,嘴巴等等;dlib_face_recognition.dat是在前面检测关键点的基础上,生成人脸的特征值。

所以后面使用dlib模块的时候,其实就是相当于,调用了某个神经网络结构,再把预先训练好的参数传给我们调用的神经网络。顺便提一下,在深度学习领域中,往往动不动会训练出一个上百M的参数模型出来,是很正常的事。

2.对训练集进行识别

在这一步中,我们要完成的是,对图片文件夹里面的人物图像,计算他们的人脸特征,并放到一个列表里面,为了后面可以和新的图像进行一个距离计算。关键地方会加上注释,应该不难理解,具体实现为:

当你做完这一步之后,输出列表descriptors看一下,可以看到类似这样的数组,每一个数组代表的就是每一张图片的特征量(128维)。然后我们可以使用L2范式(欧式距离),来计算两者间的距离。

举个例子,比如经过计算后,A的特征值是[x1,x2,x3],B的特征值是[y1,y2,y3], C的特征值是[z1,z2,z3],

那么由于A和B更接近,所以会认为A和B更像。想象一下极端情况,如果是同一个人的两张不同照片,那么它们的特征值是不是应该会几乎接近呢?知道了这一点,就可以继续往下走了。

3.处理待对比的图片

其实是同样的道理,如法炮制,目的就是算出一个特征值出来,所以和第二步差不多。然后再顺便计算出新图片和第二步中每一张图片的距离,再合成一个字典类型,排个序,选出最小值,搞定收工!

4.运行看一下

这里我用了一张“断水流大师兄”林国斌的照片,识别的结果是,果然,是最接近黎明了(嘻嘻,我爱黎明)。但如果你事先在训练图像集里面有放入林国斌的照片,那么出来的结果就是林国斌了。

为什么是黎明呢?我们看一下输入图片里的人物最后与每个明星的距离,输出打印一下:

没错,他和黎明的距离是最小的,所以和他也最像了!

Python就是这么有趣好玩,可以玩爬虫,探秘数据分析,量化金融来赚钱,也可以来撩妹子做自动化工作,机器学习领域就更好了,人脸识别,自然语言处理,数据预测和挖掘!
我们都知道Python容易学,但是就是不知道如何去学,去哪里找资料,机器学习,人工智能,深度学习,都在这学习,小编推荐一个学习平台,欢迎加入python学习交流q群先250+933+691,分享我精心准备的Python学习资料,0基础到进阶!希望你们在学习Python道路上少走弯路!加油!

【很有趣】用Python实现一个简单的人脸识别,原来我和这个明星如此相似相关推荐

  1. 用python做人脸识别_用Python实现一个简单的人脸识别,原来我和这个明星如此相似...

    近几年来,兴起了一股人工智能热潮,让人们见到了AI的能力和强大,比如图像识别,语音识别,机器翻译,无人驾驶等等.总体来说,AI的门槛还是比较高,不仅要学会使用框架实现,更重要的是,需要有一定的数学基础 ...

  2. 用Python实现一个简单的——人脸相似度对比

    近几年来,兴起了一股人工智能热潮,让人们见到了AI的能力和强大,比如图像识别,语音识别,机器翻译,无人驾驶等等.总体来说,AI的门槛还是比较高,不仅要学会使用框架实现,更重要的是,需要有一定的数学基础 ...

  3. python+opencv最简单的人脸识别入门

    0前置操作 安装python(最新3.10即可) 安装pycharm(社区版即可) 安装opencv-python(cmd输入pip install opencv-python即可,嫌慢用国内镜像也可 ...

  4. 人脸识别手机端APK分享 | 极速体验人脸识别功能 创建一个简单的人脸识别手机APP程序

    1.前言 虹软公司提供免费离线人脸识别,对于开发者提供了比较友好.完整的可配置demo.但是如需直接体验功能,还是要花一点时间去完成项目编译.配置等一系列工作,对于初学者.不怎么熟悉整个项目的人来说可 ...

  5. Python+Opencv实现简单PCA人脸识别

    基本原理:人脸识别-PCA特征脸_Python_萬仟网 上面那个链接被识别成不安全网址,谨慎访问吧 PCA,principal Component Analysis(主成成分分析方法) 1.基本原理 ...

  6. 用Python实现简单的人脸识别,10分钟(附源码)

    前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确 ...

  7. 用Python几行代码实现简单的人脸识别,10分钟完成(附源码)

    前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确 ...

  8. 10分钟手把手教你运用Python实现简单的人脸识别

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 前言:让我的电脑认识我 我的电脑只有认识我,才配称之为我的电脑! 今天,我们用Python实现高大上的人脸识别技术! Python里,简单的 ...

  9. 吗咿呀嘿-用js来搞个简单的人脸识别

    缘起 "蚂蚁呀嘿,蚂蚁呀呼,蚂蚁呀哈" 相信最近好多人的朋友圈或者抖音都被类似视频刷过屏! 类似的效果最早是在2020年初,那个时候大家应该还都记得,几乎所有的人都因为疫情原因被迫 ...

  10. vue 使用人脸识别_使用Vue.js和Kairos构建简单的人脸识别应用

    vue 使用人脸识别 Face Detection and Recognition have become an increasingly popular topic these days. It's ...

最新文章

  1. 交换代数笔记1|Atiyah,Chpt.1
  2. Javascript将构造函数扩展为简单工厂
  3. 是什么管脚分配_FPGA是什么?里面有什么?能做什么?
  4. android 图片圆角 遮罩_Android 自定义View练手Demo(一)实现圆角遮罩效果
  5. 最新版chrome 70浏览器同步、清除Cookie设置将更改
  6. typora高亮_用Typora实现写作排版一体化
  7. ES6的新特性(5)——数值的扩展
  8. python自定义包的发布与安装
  9. 里诺仓库管理软件(单机版)3.70 注册机 Code.By.HackWm.
  10. 程序员工作交接文档怎么写_浅谈程序员该如何做好工作交接?
  11. ts视频文件的爬取与合并
  12. MySql批量插入语句(INSERT)
  13. confluence 制作流程图_Sketch制作交互流程图,哪种工具最高效?
  14. 构建KEGG pathway、Entrez ID、Ensemble ID的对应关系
  15. jax_ws_JAX-RS和OpenAPI对Hypermedia API的支持:任重而道远
  16. 编译器怎么把多个源文件编译成一个程序
  17. IDEA 资源文件配置中文乱码问题
  18. 修改linux中@后的名字
  19. loadRunner之Linux环境下安装负载机
  20. RHEL6.5和RHEL7 的区别(转)

热门文章

  1. 公司声明:Selina伤情稳定 Hebe及Ella工作继续
  2. 计算机网络地址设置,如何设置电脑ip地址?电脑ip地址设置图文教程
  3. 安装Kylin Linux Advanced Server V10操作系统
  4. 【深度学习算法原理】Deep Structured Semantic Models(DSSM)
  5. 雾霾指数预测与城市治理(大数据平台系列)
  6. Ps简单的墨笔画制作
  7. 自动驾驶上的三种感知传感器(激光、毫米波雷达和摄像头)优缺点比较
  8. 银行家算法01--安全性检查 (操作系统)
  9. bugku之密码ok解题思路
  10. python实用程序育儿法下载_Python高级编程