6行python代码完成人脸检测程序

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

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

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

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

贴一下python的代码,

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

这个代码里读取了两张照片,分别是曼德拉和贝爷,(都是我非常崇敬或崇拜的人)

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

得到的结果是False(假), 表示程序识别出来这是两个不同的人,而当我读入另一张曼德拉的照片和前一张曼德拉照片比较时,程序得出了正确的结果True(真)

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

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

import face_recognition

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

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

img1 = face_recognition.load_image_file("/Users/yao/Downloads/曼德拉.jpg")

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

img1_coding = face_recognition.face_encodings(img1)[0]

让face_recognition 这个家伙在我们刚读取的图片里,提取图片中的人脸的特征值,以供后续比较.

后面两行是读取另一张照片,只是前面过程的重复。

face_recognition.compare_faces([img_1_coding], img_2_coding)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

但是其仍然是数学,现今的机器学习基本都建立在统计学,概率,线性代数,微积分等数学基础之上,再次验证了数学是一切一切学科的基础的说法。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181029G1W3HO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券