4.2.4.Elasticsearch和Python构建面部识别系统
创作人:刘晓国
你是否曾经尝试在图像中搜索目标? Elasticsearch 可以帮助你存储,分析和搜索图像或视频中的目标。
在本文中,我们将向你展示如何构建一个使用 Python 进行面部识别的系统。 了解有关如何检测和编码面部信息的更多信息-并在搜索中找到匹配项。
我们将参照代码:https://github.com/liu-xiao-guo/face_detection_elasticsearch。你可以把这个代码下载到本地的电脑:
$ pwd /Users/liuxg/python/face_detection $ tree -L 2 . ├── README.md ├── getVectorFromPicture.py ├── images │ ├── shay.png │ ├── simon.png │ ├── steven.png │ └── uri.png ├── images_to_be_recognized │ └── facial-recognition-blog-elastic-founders-match.png └── recognizeFaces.py
在上面的代码中,有如下的两个 Python 文件:
l getVectorFromPicture.py:导入在 images 目录下的图像。这些图像将被导入到 Elasticse-arch 中。
l recognizeFaces.py:识别位于 images_to_be_recognized 目录下的图像文件。
基础知识
面部识别
面部识别是使用面部特征来识别用户的过程,例如,为了实现身份验证机制(例如解锁智能手机)。它根据人的面部细节捕获,分析和比较模式。 此过程可以分为三个步骤:
l 人脸检测:识别数字图像中的人脸
l 人脸数据编码:将人脸特征转换为数字表示
l 脸部比对:搜寻和比较脸部特征
在示例中,我们将引导你完成每个步骤。
128 维向量
可以将面部特征转换为一组数字信息,以便进行存储和分析。
Vector data type
Elasticsearch 提供了 dense_vector 数据类型来存储浮点值的 dense vectors。 向量中的最大尺寸数不应超过 2048,这足以存储面部特征表示。
现在,让我们实现所有这些概念。
准备
要检测面部并编码信息,你需要执行以下操作:
1、Python:在此示例中,我们将使用 Python 3。
2、Elasticsearch 集群:你可以免费使用 阿里云Elasticsearch 来启动集群。本文中,我将进行一个本地的部署 Elasticsearch 及 Kibana。
3、人脸识别库:一个简单的人脸识别 Python 库。
4、Python Elasticsearch 客户端:Elasticsearch的官方Python客户端。
客户端下载:https://elasticsearch-py.readthedocs.io/en/v7.10.1/
Python教程:https://elasticstack.blog.csdn.net/article/details/111573923
Python下载:https://www.python.org/downloads/
注意,我们已经在 Ubuntu 20.04 LTS 和 Ubuntu 18.04 LTS 上测试了以下说明。 根据你的操作系统,可能需要进行一些更改。尽管下面的安装步骤是针对 Ubuntu 操作系统的,但是我们可以按照同样的步骤在 Mac OS 上进行同样的顺序进行安装(部分指令会有所不同)。
安装 Python 和 Python 库
随 Python 3 的安装一起提供了 Ubuntu 20.04 和其他版本的 Debian Linux。
如果你的系统不是这种情况,则可以点击下载并安装 Python:
https://www.python.org/downloads/
要确认您的版本是最新版本,可以运行以下命令:
sudo apt update sudo apt upgrade
确认 Python 版本为 3.x:
python3 -V
或者:
python --version
安装 pip3 来管理 Python 库:
sudo apt install -y python3-pip
安装 face_recognition 库所需的 cmake:
pip3 install CMake
将 cmake bin 文件夹添加到 $PATH 目录中:
export PATH=$CMake_bin_folder:$PATH
在我的测试中,上述步骤可以不需要。你只要在任何一个 terminal 中打入 cmake 命令,如果能看到被执行,那么就可以不用上面的命令了。
最后,在开始编写主程序脚本之前,安装以下库:
pip3 install dlib pip3 install numpy pip3 install face_recognition pip3 install elasticsearch
《Elastic Stack 实战手册》——四、应用实践——4.2 可观测性应用场景 ——4.2.4.Elasticsearch和Python构建面部识别系统(中) https://developer.aliyun.com/article/1225805