用Python鬼畜特朗普照片,了解下?
咪哥杂谈
本篇阅读时间约为 7 分钟。
1
前言
看到标题,别慌,慢慢往下看,好玩的在中间部分!下面正文开始。
这周给大家介绍一个好玩的库 - face_recognition。
先来看下官方简介:
face_recognition是一个强大、简单、易上手的人脸识别开源项目,基于业内领先的C++开源库 dlib中的深度学习模型,用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。github
图像学领域的东西,我一直保持敬畏之心。未来,图像学计算肯定是人类科技的重要突破口。
很庆幸的是,现在即使我们不用懂背后的具体算法实现,也可以使用别人封装好的功能来完成自己的需求,俗称 "调库小王子" 。
那么,今天就由"本调库小王子"来给大家演示下这个库的好玩之处。
2
环境准备
开始之前,先介绍下实验环境以及准备工作。
1. 环境
系统 mac os
Python版本:3.7
开发工具:Pycharm
2. 安装库命令
pip install cmake
pip install dlib
pip install face_recognition
这里需要注意的是,安装的先后顺序,要按照这个来。同时,需要注意的是,有可能操作系统不同,带来的安装报错也会不同,如果遇到错误,自行查找解决即可。
3
开玩!
1. 定位图片中人脸的位置
首先,先找一张带有正常人脸的图片,比如下面这张,刘亦菲姐姐的照片:
然后只需要:
核心代码2行:
# 加载图片
image = face_recognition.load_image_file("1.png")
# 识别人脸位置
face_locations = face_recognition.face_locations(image)
具体代码的功能,详见注释,你会得到这样一张新生成的脸部图片。
同时,控制台打印出人脸所在原图像的像素位置:
2. 提取人脸特征值
特征值是什么?这个词可能第一眼看上去很陌生对吧,那我们换种方式来问,你说判断一个人的特征有哪些?
我们可以通过一个人的眼睛,鼻子,嘴,下巴等器官,来分辨你是谁。
而这里的特征值,就是把我们分辨一个人的特征数据化了,变成了可以看到的数字。
这里有张 特朗普 的图(我是不会告诉你们,我是特意作秀的~):
那来看下代码,如何将面部的特征值用代码提取到:
核心代码:
image = face_recognition.load_image_file("2.png")
# 识别图片中人脸的面部特征
face_landmarks_list = face_recognition.face_landmarks(image)
for face_landmarks in face_landmarks_list:
......
执行之后,你会看到这样的结果:
发现没有,通过白色线条,将人物的脸部特征描绘了出来。同时看下控制台输出:
点开仔细看,它其实是由 key-value 组成的键值对,key作为特征名称,而value则是具体数值。
比如 key 中的 chin 代表下巴, left_eyebrow 代表做眉毛,nose_tip 代表鼻尖,等等等等,具体你可以对照上图画出来的白线条来区分含义。
正因为有提取特征值这个功能,那这个库玩的方式可就多了!比如官方提供的例子,给总统安排上!来自动补个妆!
官方代码:
补妆之后:就问你一句话,漂亮不漂亮??!!觉得漂亮的老铁评论区留个言再走~转发,好看一条龙我也不介意~
3. 此库还有个功能,判断不同照片是否是同一人。
这里用婚前的周董(周杰伦),和婚后的周董来做个实验。
婚前,头文字D版周董 (jay-young.png):
婚礼上的周董 (jay-marry.png) :
周董拍头文字D时间:2005年。周董举办婚礼的时间:2015年。间隔时间:10 年。
但当我执行完代码时,不得不佩服。。真是太强了。。来看下代码和结果。
这段代码,重复执行了 3 遍,确实能识别出来。。
4
结语
好啦,本期文章到此结束。
关于这个库的用法,相信有创意,有想法的人,一定可以玩出花样,即使你不了解背后的算法实现。
如果你想学习本篇文章的源码,图片和源码已经上传到 github 了。后台回复关键词 "图像识别" ,即可获得源码地址。
如果觉得特朗普好看的话,别忘了留言区留个"漂亮"哟,哇哈哈哈!
如果Java在全世界突然被禁用会怎样?