本文档提供在 Raspberry Pi 设备上设置和运行 face_recognition 库的说明。Raspberry Pi 设置允许您以最少的硬件要求构建经济高效的独立人脸识别系统。
有关基于 Docker 的部署,请参阅 Docker 设置。有关常规包安装,请参阅 包安装。
face_recognition 库需要 Raspberry Pi 2 或更新型号。早期型号缺乏有效人脸识别处理所需的计算能力。
推荐规格
来源: README.md113-115
在 Raspberry Pi 上安装 face_recognition 需要几个步骤,因为需要从源代码编译 dlib(底层计算机视觉库)。由于 Raspberry Pi 的资源限制,该过程比标准的 pip 安装更复杂。
更新您的 Raspberry Pi 系统并安装所需的构建工具
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install python3-dev python3-pip
sudo pip3 install --upgrade pip
安装人脸识别所需的数值和图像处理库
sudo apt-get install python3-numpy
sudo pip3 install numpy
sudo apt-get install libjpeg-dev libpng-dev
sudo pip3 install Pillow
由于 Raspberry Pi 的资源限制,您需要使用特定设置编译 dlib
sudo pip3 install dlib --no-cache-dir
注意:此步骤在 Raspberry Pi 设备上可能需要相当长的时间(1-2 小时)。
安装 dlib 后,即可安装 face_recognition 库
sudo pip3 install face_recognition
用于 Raspberry Pi 相机模块
sudo apt-get install python3-picamera
sudo pip3 install "picamera[array]"
来源: README.md113-115 examples/facerec_on_raspberry_pi.py4-7
在 Raspberry Pi 上运行 face_recognition 时,系统组件的交互如图所示
Raspberry Pi 上的面部识别流程遵循此顺序
来源: examples/facerec_on_raspberry_pi.py9-48
该存储库包含一个适用于 Raspberry Pi 的示例应用程序,该应用程序使用 Pi 相机模块演示实时人脸识别。此示例的关键组件包括:
来源: examples/facerec_on_raspberry_pi.py13-48
在 Raspberry Pi 这样资源受限的设备上运行人脸识别需要进行优化。以下是一些提高性能的方法:
使用较低分辨率的图像可显著提高处理速度
| 解决方案 | 相对处理速度 | 检测准确度 |
|---|---|---|
| 640x480 | 1x(基线) | 高 |
| 320x240 | 约 4 倍速 | 中高 |
| 160x120 | 约 16 倍速 | 中等 |
示例脚本使用了 320x240 的分辨率,这在 Raspberry Pi 硬件上提供了性能和准确性的良好平衡。
在 Raspberry Pi 上,务必使用基于 HOG 的检测器而不是 CNN 模型,因为它速度明显更快。
在视频应用中,您可以处理第 N 帧以降低 CPU 负载
来源: examples/facerec_on_raspberry_pi.py16-18
face_recognition 库可以与各种基于 Raspberry Pi 的系统和应用程序集成
您可以将人脸识别系统连接到各种硬件组件
| 组件 | 目的 | 集成方法 |
|---|---|---|
| LED 指示灯 | 视觉反馈 | GPIO 引脚 |
| 继电器模块 | 控制门锁/电器 | GPIO 引脚 |
| 扬声器 | 音频警报 | USB/3.5mm 音频 |
| 伺服电机/电机 | 机器人控制 | GPIO/PWM/I2C |
| 外部存储 | 数据记录 | USB/网络 |
面部识别结果可以集成到各种软件系统中
来源: examples/facerec_on_raspberry_pi.py39-47
在 Raspberry Pi 上设置人脸识别时遇到的常见问题
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 编译错误 | 内存不足 | 增加交换空间或以较低的并发度进行编译 |
| 系统冻结 | 过热 | 确保适当散热或添加散热片/风扇 |
| 未找到相机 | 模块未启用 | 在 raspi-config 中启用相机 |
| 性能低下 | 电源不足 | 使用合适的电源(2.5A+) |
| 导入错误 | 缺少依赖项 | 检查所有依赖项是否都已安装 |
| 段错误 | 内存问题 | 降低图像分辨率或帧率 |
如果在编译或运行时遇到内存错误,您可以暂时添加交换空间
sudo dphys-swapfile swapoff
sudo nano /etc/dphys-swapfile
# Set CONF_SWAPSIZE=1024
sudo dphys-swapfile setup
sudo dphys-swapfile swapon
来源: README.md113-115
有关在 Raspberry Pi 上使用人脸识别的更多信息,请参阅以下资源
来源: README.md370-371