人脸识别可以自制,你知道吗?而且非常简单
- 只需要不到10行代码就能完成
如你所知,很多人使用手机上的面部解锁功能;而且你也知道,如今很多城市乘坐地铁时都被要求刷脸;甚至人们在超市结账时举起手机刷脸……
更多参见我们的 “生物识别及对抗方法” 栏目。本文不是对抗方法。
很多人觉得这项名为“人脸识别”的技术简直不可思议。但是,您认为基于该技术的应用程序很难吗?
实际上并不难。您甚至可以自制,只需要不到10行的代码就可以制作它!
这里是人脸识别 Tensorflow 教程,欢迎来玩。
如果不想阅读本文,只需要看一眼以下代码 😂
from easyfacenet.simple import facenet images = ['images/image1.jpg', 'images/image2.jpg', 'images/image3.jpg']aligned = facenet.align_face(images)comparisons = facenet.compare(aligned) print("Is image 1 and 2 similar? ", bool(comparisons[0][1]))print("Is image 1 and 3 similar? ", bool(comparisons[0][2]))
它将输出以下内容:
Is image 1 and 2 similar? TrueIs image 1 and 3 similar? False
等下,难道不是 tensorflow?当然是 tensorflow。本教程将使用由 Tensorflow 开发的算法 Facenet。
因此,在 Facenet 之上创建另一个接口,称为 Easy Facenet。要安装该库,您只需键入:
pip install easyfacenet
完成了~
这篇文章到此结束了吗?当然不是。
接下来将逐行向您解释该教程。同时,首先介绍人脸识别的工作原理。
人脸识别
关于人脸识别是如何工作的?
从上图可以看到,步骤是这样的:
- 获取应包含面部的输入图像
- 需要找到面部的确切位置,并在面部周围放置一个边界框
- 为了确保算法的一致性,需要对图片稍作调整,以使嘴、鼻子和眼睛的位置对于不同的图片来说能保持一致
- 然后裁剪
- 将裁剪的图片输入到 Facenet 算法中,该算法是一个深度神经网络。
- 它将输出该脸部图的矢量表示。当时是128维特征向量,现在是512维。
- 然后,您就可以使用该形式执行所需的操作了。您可以进行分类、聚类、或者仅使用图片之间的相似度计算,也就是识别。
哇哦,听起来有好多,很难吧?并不是。基本上,您可以将这7个步骤分为3个步骤,分别是:
- 校准:输入图像并输出对齐的裁切面
- 嵌入:输入面部并输出矢量表示
- 比较:就是识别
因为只有3个简单的步骤,所以代码应该就这么简单,不是吗?
是的,可以使用 easyfacenet。
最简单的人脸识别 Tensorflow 库
下面逐一分解代码。
from easyfacenet.simple import facenet
从 simple 组件导入 facenet 文件。您可以在文件内部使用三个模式:align_face, embedding, 和 compare.
可以很容易地看出,这些模式中的每一个都代表了人脸识别的每个步骤。
images = ['images/image1.jpg', 'images/image2.jpg', 'images/image3.jpg']
下面就可以确定图像了。
还有另外一个:
图像已经有了,下面开始进行。
步骤1:对齐
aligned = facenet.align_face(images)
该库将尝试在图像内部找到人脸并裁剪人脸,预白化可以使训练更容易,于是进行预白化处理。
经过预白化处理的对齐的脸部将如下所示。
步骤2:嵌入
embeddings = facenet.embedding(aligned)
结果将如下所示:
步骤3:比较
comparisons = facenet.compare(aligned)
如果您有3张图片,则 compares 变量将具有3 x 3的值。这一个步骤就是比较。如果要获取 “图像1是否类似于图像2?”,那么这样:
print("Is image 1 and 2 similar? ", bool(comparisons[0][1]))
同理:Is image 1 similar to image 3?
print("Is image 1 and 3 similar? ", bool(comparisons[0][2]))
就是这样。这样就可以得到比较结果。我使用的比较技术是余弦相似性。您可以使用任何其他想要的相似性方法。比如您可以使用聚类和分类;Siamese Network 这样的东西应该是您想要的。
接下来该怎么办?
正如前面所说的,这是最简单的人脸识别 Tensorflow 库。因此,您可以尽快开始做您想做的事。
如果您是老司机,则可以浏览该库并创建真正的人脸识别 Tensorflow 代码。在这里看一下代码,因为那是该库的基石。您可以扩展它创建您自己的功能。
最后的想法
总之,利用 easyfacenet 可以在极大程度上帮助您创建自制的人脸识别项目。而且,这个人脸识别库完全由个人维护。如果您想要某种功能,这对您来说应该很容易。
如果您想探索另一种惊人的机器学习技术,可以在这里阅读。⚪️
Face Recognition Tensorflow Tutorial (with less than 10 lines of codes!)
IYP新列表如下 ——
防身的: https:// start.me/p/xbYXdR/iyp-1
认知的:https:// start.me/p/RMQrDD/iyp-2
斗智的:https:// start.me/p/ nRBzO9 / iyp-3
眼界的:https:// start.me/p/aL8RrM/iyp-4
你懂的:https://start.me/p/1kod2L/iyp-direct-action5
持续更新中!