AI的强大!用Python实现一个简单的人脸识别
2018-11-07 14:23:16爱云资讯1415
近几年来,兴起了一股人工智能热潮,让人们见到了AI的能力和强大,比如图像识别,语音识别,机器翻译,无人驾驶等等。总体来说,AI的门槛还是比较高,不仅要学会使用框架实现,更重要的是,需要有一定的数学基础,如线性代数,矩阵,微积分等。
幸庆的是,国内外许多大神都已经给我们造好“轮子”,我们可以直接来使用某些模型。今天就和大家交流下如何实现一个简易版的人脸对比,非常有趣!
整体思路:
使用到的第三方模块和模型:
预先导入所需要的人脸识别模型遍历循环识别文件夹里面的图片,让模型“记住”人物的样子输入一张新的图像,与前一步文件夹里面的图片比对,返回最接近的结果
模块: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就是这么有趣好玩,可以玩爬虫,探秘数据分析,量化金融来赚钱,也可以来撩妹子做自动化工作,机器学习领域就更好了,人脸识别,自然语言处理,数据预测和挖掘!
相关文章
- 数仿现实 智真融合丨“2024软通动力AI+数字孪生创新发展论坛”成功举办
- “拥抱开源,All in AI”,润和软件闪耀2024南京软博会
- 持续发力AI+安全领域,启明星辰荣获昇腾AI创新大赛2024全国赛“银奖”!
- 北电数智前进·AI异构计算平台:重塑国产算力生态,驱动行业创新发展
- AGI Open Network(AON):赋能每个人创建、部署和货币化AI Agent
- 2024创原会:东信携手华为云,深耕AI营销,助力产业升级
- 首款量产AI眼镜——LOHO X 闪极A1震撼发布,售价999元起
- 巅峰盛典 星光璀璨!昇腾AI创新大赛2024总决赛成功举行
- 飞天云动荣耀“兴智杯”AI+文旅奖,携手重庆两江共绘元宇宙数字文旅蓝图
- 以AI驱动提升个性化消费体验,值得买科技荣获华为云“2024 AI-Native十大先锋实践”案例
- 脑机接口概念火热,龙头厂商凭“AI+”成热门投资方向
- 标贝科技全新AI数据平台4.0,解锁数据潜能 赋能产业升级
- 星光闪耀季 | AI了!360智慧商业喜提十余项营销行业大奖!
- 涂鸦智能即将亮相CES 2025,以全新AI成果引领智慧生活新纪元
- Amazon Connect运用生成式AI提升端到端客户体验
- AI必将成电商发展最大引擎:百度优选业绩翻番,数字人直播GMV超11倍增长