先决条件
在开始检测和识别面部之前,您需要设置开发环境。首先,您需要先通过Python“读取”图像,然后再对其进行任何处理。我们将使用绘图库matplotlib来读取和操作图像。通过安装程序安装最新版本pip:
pip3 install matplotlib
要使用CNN算法的任何实现,您需要安装keras。使用以下命令下载并安装最新版本:
pip3 install keras
运行以下命令以通过以下方式安装软件包pip:
pip3 install mtcnn
从图像中提取人脸后,为了进行比较,我们将使用牛津大学视觉几何小组开发的VGGFace2算法。可将VGG算法的基于TensorFlow的Keras实现作为软件包安装,以供您安装:
pip3 install keras_vggface
尽管您可能需要构建和训练自己的模型,但您需要庞大的训练数据集和强大的处理能力。由于本教程重点介绍这些模型的实用性,因此它使用了本领域专家提供的经过培训的现有模型。
现在,您已经成功安装了先决条件,让我们直接进入本教程!
步骤1:使用MTCNN模型进行人脸检测
此步骤的目标如下:
- 检索外部托管在本地服务器上的图像
- 通过matplotlib的imread()功能读取图像
- 通过MTCNN算法检测和探索人脸
- 从图像中提取人脸。
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:705933274
1.1存储外部图像
您可能经常根据托管在外部服务器上的映像进行分析。在此示例中,我们将使用两张图像,它们是野马之父Lee Iacocca托管在BBC和The Detroit News网站上的。
为了将图像临时存储在本地以供我们分析,我们将从其URL中检索每个图像并将其写入本地文件。store_image为此,我们定义一个函数:
import urllib.request
def store_image(url, local_file_name):
with urllib.request.urlopen(url) as resource:
with open(local_file_name, 'wb') as f:
f.write(resource.read())
现在,您可以简单地使用URL和您要在其中存储图像的本地文件来调用该函数:
store_image('https://ichef.bbci.co.uk/news/320/cpsprodpb/5944/production/_107725822_55fd57ad-c509-4335-a7d2-bcc86e32be72.jpg',
'iacocca_1.jpg')
store_image('https://www.gannett-cdn.com/presto/2019/07/03/PDTN/205798e7-9555-4245-99e1-fd300c50ce85-AP_080910055617.jpg?width=540&height=&fit=bounds&auto=webp',
'iacocca_2.jpg')
成功检索图像后,让我们检测其中的面孔。
1.2检测图像中的人脸
为此,我们将进行两次导入-matplotlib读取图像和mtcnn检测图像中的人脸:</