机器人学习或解决问题

私信小编007即可自动获取大量Python视频教程以及各类PDF!包含零基础学人脸识别视频教程!

现如今人脸识别技术越来越成熟,在各种金融软件里得到了广泛的应用,今天我们就简单介绍下怎样用python完成一个简单的人脸识别程序。

也许你会想着一定会很复杂吧,是不是得写成坨成坨的代码,然后里面还有各种天书一样的数学计算?

其实从完成这件事的角度上说,

答案是不需要,这一切仅需要几行代码就搞定了。

贴一下python的代码,

没错,就只是这么一点代码,并且还很清晰易懂。

生物特征识别人脸识别

生物特征识别人脸识别

第一行读取一个人的照片,然后编码成一个特征值,后面再读区另一个人的照片,再编码成其特征值,然后比对这两个特征值是否足够相似,就可以得到结果了。

这些代码也体现了现在动态语言的高复用的特性,编码的人不需要是每个专业领域的专家,他可以站在别人的肩膀上完成自己的事情,就像盖房子的人不需要自己去烧砖一样,他只需要怎样把所有的砖垒在一块就好了。

得到的结果是True(真), 表示输入的两张照片被识别成了一张照片(我提供的两张照片都是我的照片),而当我提供一张我的照片,一张我老婆的照片时,程序也正确地得到了False(假)的结果,表示识别出来了是不同的人。

也许你会问,这几行代码到底是什么意思呢? 到底计算机是怎样做到识别出两张图片里的人是同一个人的呢?

我就简单介绍下,着几行代码是什么意思。

import face_recognition

是引入一个叫 face_recognition 的库到我们的程序中。

表示我们的程序不知道怎么识别人脸,但是不重要,我们认识一个“别人家的程序”,那个程序知道怎样识别两张图片中的人是不是同一个,我把那个家伙叫过来帮我,就可以搞定了。

img_2 = face_recognition.load_image_file('~/develop/face/yao/2.jpg’)

让这个叫face_recognition 的家伙读取我们电脑里的一张图片,这张图片在我Mac电脑的这个位置 '~/develop/face/yao/2.jpg’, (windows电脑的路径格式稍有不同,但是道理一样)

img_1_coding = face_recognition.face_encodings(img_1)[0]

让face_recognition 这个家伙在我们刚读取的图片里,提取图片中的人脸的特征值,以供后续比较后面两行是读取另一张照片,只是前面过程的重复。

face_recognition.compare_faces([img_1_coding], img_2_coding)

让face_recognition 这个家伙,比比刚才得到的两个特征值,看看是不是同一个人。

这里面核心的代码是特征值的提取,不仅仅一张人脸有自己独一无二的特征值,还有我们的指纹,声音,甚至一篇文章,一段程序都可以经由数学算法得到一个特征值,然后我们比对不同特征值,就可以计算相似性了。

比如电影里经常出现的指纹比对,根据嫌犯的指纹特征去数据库中匹配出谁的相似度最高。

还有谷歌的图片搜索功能中,有一个功能就是搜索相似图片,我曾经拿我小时候在杭州灵隐寺拍的一张照片去在谷歌中搜索,结果谷歌精确地鉴定出了这个地方是灵隐寺,并且还推荐出了灵隐寺的其他许多照片。

其实现原理就是谷歌的爬虫爬遍了许许多多介绍灵隐寺的图文信息,他就发现了有很多灵隐寺的照片的特征值都非常接近,并且在出现这些图片的网页里总是重复提到一个叫“灵隐寺”的词,所以它判断这种图片特征值和“灵隐寺”之间有强烈的相关性。

而我上传给谷歌的那张照片的特征值也非常接近灵隐寺的图片特征值,所以就判断出这张照片就是灵隐寺。

还有关于文章的特征值提取,也广泛地用于原创保护方面的工作。

包括现在的微信公众号里的原创文章保护,它也是计算了原创文章的特征值,存入数据库, 这是如果谁抄袭了这片文章,微信后台当然能识别出来。

就算是抄袭后修改了部分片段部分文字,还是可以计算出这两篇文章的特征值非常接近。

从而可以在不用人工干预的情况下,识别出两篇文章的高度相似性,然后再看这两篇文章谁先申请了原创保护,然后判断出谁抄袭谁就轻而易举了。

而在原创保护方面做的最绝的要数youtube了, 众所周知,youtube 视频的点击量是可以让视频主得到金钱奖励的,打比方说如果我上传的视频在youtube中被点击观看了100W次,那么由此赚取的广告费,我也是可以分一杯羹的。

但是问题来了,如果有人抄袭了另一个人的视频再上传到youtube怎么办?

很简单youtube也会用这种特征值检测的办法,然后再判断出谁是抄袭者后,直接把抄袭者得到的金钱奖励划给了原创者!

不禁让人感叹其套路真是深,抄袭者不知不觉给原创者打了工,都不知道,不过这也是保护原创维护秩序所必须的。

而这所有算法的底层逻辑,全都是数学,或者说是一种能够和今天的计算机能力相匹配的数学计算。

意思是着你不能说我有个很牛逼的人工智能的算法能够完美解决所有的人工智能问题,但是这个算法只有在几十年后的强力计算机才有能力去运行。(回头想想十几年前的电脑运算能力和今天根本无法相比)。

但是其仍然是数学,现今的机器学习基本都建立在统计学,概率,线性代数,微积分等数学基础上,都是原来大学里我认为最枯燥的课程。。

曾经有一次机会我以在大学里有大把的时间学习这些数学课程,但是我没珍惜,我把那些时间都用来打游戏了,然后等我进入社会参加工作越来越忙碌时,才追悔莫及。

哎,如果上天能给我一次从头再来重回校园的机会,我一定会认真努力地学好这些课程,然后再顺便在校园里谈个恋爱就完美了。

更多推荐