附录 A:外部 Python 库
让我们检查本课程中使用的 Python 外部库。
第三方 Python 库列表
Python 库是一段可重复使用的代码,可用于利用其功能来解决项目中的特定任务。大量实用的 Python 库为计算机视觉实现和人脸分析项目提供了强大且系统化的支持基础。
我们将重点关注本课程中使用的一系列广泛的第三方 Python 库:
MediaPipe
MediaPipe 是由 Google 开发的一个开源、基于图结构的媒体处理框架。MediaPipe 是一个跨平台的机器学习框架,用于构建复杂且多模态的机器学习流水线。
MediaPipe 可用于实现高级机器学习模型,如物体检测、人脸检测、多手部追踪等。它本质上充当了在不同平台上部署 ML 模型的中间层,使开发者能够专注于使用这些模型,而无需从头构建它们。
MediaPipe 的人脸检测器大致基于 BlazeFace。BlazeFace 是专为移动端 GPU 推理设计的一种轻量级且高性能的人脸检测器,能够在设备上实现实时运行。
Dlib
Dlib 是一个先进的机器学习库,旨在解决复杂的计算问题。该库使用 C++ 编程语言开发,支持 C/C++、Python 和 Java。它内置了优秀的人脸检测算法,并提供预训练的人脸关键点定位模型。
人脸识别(Face Recognition)
人脸识别 建立在 Dlib 先进的 Python 库之上,被认为是目前最简单易用的人脸识别工具之一。该库的主要功能包括:
- 在数字图像中识别人脸。支持多种人脸检测算法,例如 HOG(方向梯度直方图)和 CNN。这些算法在准确率上有所差异:CNN 比 HOG 更精确,但需要更高的计算资源,如高性能 GPU 和 CPU。
- 检测并操作面部特征,例如定位眼睛、鼻子、嘴巴和下巴。
- 通过实时人脸识别技术,在图像中识别具体人物身份。
该库的神经网络已在约三百万张图像的数据集上完成预训练。
OpenCV
OpenCV 是一个用于实时图像处理、机器学习和视频分析的优化库,广泛应用于人脸检测与识别、图像编辑、光学字符识别(OCR)等领域。
使用 OpenCV 具有以下优势:
OpenCV是一个开源库,最初由 Intel 开发,完全免费。OpenCV性能高效,核心以 C 和 C++ 编写。OpenCV是跨平台库,支持 Windows、Linux 和 macOS 等主流操作系统。OpenCV支持多种编程语言,包括 Python、C++ 和 Java。
Deepface
Deepface 是一个轻量级的人脸分析框架,涵盖人脸识别、人脸属性分析以及年龄、性别、种族和情绪估计等功能。该 Python 库由 Sefik Ilkin Serengil 开发。
如果你不想从零开始构建神经网络模型,可以考虑使用 Deepface。
FER
由 Justin Shenk 开发,该库利用深度神经网络解析面部表情,并结合 OpenCV、Tensorflow 和 Keras 库实现功能。
ONNX
ONNX 是一种开放格式,用于表示机器学习模型。该库定义了一个可扩展的计算图模型和通用框架,使 AI 开发者能够在多种工具、运行时环境和编译器之间无缝使用模型。
Sklearn
Sklearn(即 scikit-learn)是 Python 中最常用的机器学习库之一,提供了大量高效的机器学习和统计建模工具,涵盖分类、回归、降维和聚类等任务。
NumPy
该库提供了对数组进行操作的函数,主要用于线性代数、傅里叶变换和矩阵运算领域。
SciPy
一个基于 NumPy 构建的开源科学计算库。SciPy 集成了大量数学算法和技术函数。
imutils
该包封装了一系列用于执行基本图像处理任务的函数,例如图像缩放、平移、旋转、骨架化等。
Pillow
这是一个适用于数字图像处理应用的 Python 图像处理库。
webcolors
这是一个简单的 Python 库,用于处理颜色名称及其定义。
filetype
一个无依赖的 Python 库,可通过检查文件或缓冲区的签名来判断其文件类型和 MIME 类型。
| 库名 | 版本号 |
|---|---|
| mediapipe | 0.8.9 |
| Dlib | 19.17.0 |
| face-recognition | 1.3.0 |
| opencv-python | 4.4.0.46 |
| deepface | 0.0.68 |
| fer | 21.0.3 |
| onnx | 1.10.2 |
| scikit-learn | 1.0.1 |
| numpy | 1.19.4 |
| scipy | 1.5.4 |
| imutils | 0.5.3 |
| Pillow | 8.0.1 |
| webcolors | 1.11.1 |
| filetype | 1.0.7 |
尽管上述列表可能令人感到繁多,但正是这一整套丰富的库推动了 Python 的广泛流行。它使得 Python 成为全球范围内计算机视觉开发者——无论是初学者还是资深工程师——的理想选择。