人脸识别的基础知识
大多数开发人员对人脸检测已经非常熟悉了。这个过程就是分析图像,确定人脸出现的位置。很多智能手机都提供这种功能。人脸识别是人脸检测的下一个阶段。这个过程就是分析人脸,利用从人脸特征的相对距离得出的数据,开发一个数学模型。这些数据包括双眼之间的距离,以及眼睛与鼻子、下巴、耳朵和颧骨的相对位置。另外还要确定人脸相对于人脸识别摄像头的位置,因为这对于确定相对距离非常重要。也可以检测肤色并用于识别。
人脸识别硬件
为了实现人脸识别,设计人员需要挑选并组合摄像头传感器、视频和图像前端信号调节装置、GPU、控制处理器、存储器及相关软件和固件。当然,这需要花费时间,可能是一段很长的曲折学习过程。或者,您可以利用现成的硬件和固件,构建人脸识别系统。来自 Omron Electronics 的 B5T-007001 摄像头传感器是很好的入手点,它是经过测试的硬件和固件的交钥匙解决方案(图 1)。
图 1:Omron B5T-007001 人脸识别摄像头具备了人脸识别应用必需的全部功能。(图片来源:Omron)
B5T-007001 带有 USB 2.0 接口,可将摄像头电路板连接到运行 Omron 评估软件的 Windows® PC。另外还有 UART 接口。使用 USB 或 UART 接口都可将摄像头电路板连接到主机,可以是微控制器或 PC。
USB 和 UART 都支持用于配置摄像头的命令 API。Omron 的板载摄像头固件会分析视频并执行检测处理,然后将视频发送到主机。
从主机发送到 B5T-007001 的命令按顺序执行。主机固件向摄像头发送命令之后,必须等待摄像头返回该命令的结果,然后才能发送另一个命令。如果主机检测到超时(取决于应用要求),主机固件可以重新发送命令,或者通过发送 RESET 命令来复位摄像头。
配置摄像头以实现人脸识别
启动 B5T-007001 之后,首先必须对其进行配置,让它能够在将要使用它的物理环境下工作。命令是通过 USB 或 UART 接口发送的,遵循指定的命令结构(表 1)。每个命令的第一个字节始终是 0xFE,称为同步码。
表 1:B5T-007001 的命令格式。LSB 在左侧,MSB 在右侧。首先传输 LSB。在写入命令的过程中,写入 B5T-007001 的数据在“命令数据”字段中。(图片来源:Omron)
B5T-007001 支持 20 个命令。有关这些命令的完整描述,请参见表 2。
手部检测命令 - 检测打开的手掌,按手部中心的坐标进行标识。
人脸检测命令 - 检测最多 100 张人脸,按中心点坐标粗略值进行标识。
人脸方向估计命令 - 估计受检测人脸的方向,表示为偏航角(左,右)、俯仰角(下,上)、翻滚角(逆时针,顺时针)。
年龄估计命令 - 估计受检测人脸的年龄,从 0 到 75 岁。
性别估计命令 - 估计受检测人脸的性别(男性,女性)。
注视点估计命令 - 估计受检测人脸的眼睛注视方向,表示为偏航角(左,右)和俯仰角(下,上)。
眨眼估计命令 - 估计受检测人脸每只眼睛的眨眼程度,1 = 眼睛全开,1000 = 眼睛全闭。
表情估计命令 - 估计受检测人脸的表情,结果表示为平和、快乐、惊讶、愤怒和悲伤。
人脸识别命令 - 识别受检测人脸,与存储的人脸进行比较。结果返回最可能与受检测人脸匹配的人脸的用户 ID。
所有位置都以 [x,y] 坐标进行标识,其中图像左上角的坐标为 [0,0]。对于每个结果,都有从 0% 到 100% 的关联可信度,以 0 - 1000 的十进制数表示。摄像头支持图像输出功能,主要用于开发人员设置摄像头和对准方向时的调试辅助。它的分辨率为 320 x 240,还不足以用作安防监视器。如果需要流媒体视频,建议安装另一个高清摄像头。
在应用中,放置摄像头之前,首先必须在开发环境中进行配置。B5T-007001 附带有软件,允许 PC 通过 USB 端口与设备连接。该 PC 软件也与 B5T-007001 配合使用,识别和注册相册中的用户。正如我们此前在人脸识别基础知识中所述,用户的脸部照片应该清晰地显示鼻子、眼睛、耳朵和下巴的主要特征(图 2)。
B5T-007001 能够通过 USB 或 UART 接口连接到微控制器。UART 接口支持 921600 位/秒的最大波特率,USB 2.0 接口支持 480 MB/秒。请注意,摄像头不支持同时使用这两种接口。微控制器只需支持基本输入/输出,即可用于 B5T-007001,而更高级的开发可能需要图像处理或多摄像头管理功能。对于此类应用,来自 STMicroelectronics 的 STM32F469 Arm® Cortex®-M4F 微控制器支持四个标准 UART,带有一个具板载物理层 (PHY) 的 USB 2.0 接口,以节省电路板空间和减少元件数(图 3)。微控制器还带有片载 MIPI® Alliance D-PHY,以支持 MIPI® CSI-2 和 DSI-2。对于视频处理,STM32F469 Arm 内核在 180 MHz 频率下运行。它还通过单独的 Chrom-ART Accelerator™,支持硬件图像处理。该图形加速器能够加快颜色转换,同时还执行快速块存储器移动操作。STM32F469 带有一个 128 位接口,连接 2 MB 的闪存,还提供指令预取队列和分支缓存,在 180 MHz 的 CPU 速度下,实现 0 等待状态的闪存访问。
图 3:STM32F469 微控制器带有两个 USB 2.0 端口和八个串行端口,可以轻松连接到 B5T-007001,而且仍然有足够的性能来支持图像处理。(图片来源:STMicroelectronics)
STM32F469 能够通过两个 USB 2.0 接口中的一个接口连接到 B5T-007001。在 STM32F469 主机和摄像头之间读取和写入相册数据时,USB 2.0 接口的速度尤其突出。STM32F469 带有四个 UART 接口、四个 USART 接口、两个 USB 2.0 端口,能够连接最多十个 B5T-007001。
STM32F469 还带有 SDMMC 外部存储卡接口(图 4)。该接口适用于多种闪存卡,例如商用 microSD 和 MMC 卡,可用于传输相册数据。例如,可以使用连接到 PC 的 B5T-007001,提取需要识别的所有用户的照片。然后,PC 将相册数据存储在闪存卡上,您即可将该闪存卡插入 STM32F469 单板计算机,用作更新的相册数据。
STM32469I-EVAL 评估板支持该微控制器,从而可实现对所有微控制器功能的快速评估。评估板还带有 LCD 显示屏,可用于显示来自 B5T-007001 的视频。
图 5:STM32469I-EVAL 是适用于 STM32F469 微控制器的完整评估套件,可使用任何 USB、UART 或 USART 端口,轻松连接到 B5T-007001。(图片来源:STMicroelectronics)
总结
借助现成的交钥匙硬件,我们可以通过将所需的算法集成到摄像头电路板固件中,轻松为嵌入式系统项目添加人脸识别功能。通过简单的命令界面,我们可以快速开发微控制器固件,用于与电路板进行交互,而无需了解图像处理的细节。