如何快速为 MCU 添加人脸识别摄像头
投稿人:DigiKey 北美编辑
2018-07-12
人们现在越来越多地要求设计人员为当前网络系统和新产品添加图像和视频分析功能,特别是针对安防应用。人脸和车辆识别功能非常受用户欢迎,能够带来可观的价值,但是,了解基于微控制器的系统的人脸识别模型细节并对其进行编程,可能耗费大量时间,而且非常复杂。
通常情况下,开发人员必须尽可能快地开展试验和开发。本文将展示开发人员如何利用硬件和软件的现成组合,加快将人脸识别功能整合到嵌入式系统中的速度,从而节省时间。
人脸识别的基础知识
大多数开发人员对人脸检测已经非常熟悉了。这个过程就是分析图像,确定人脸出现的位置。很多智能手机都提供这种功能。人脸识别是人脸检测的下一个阶段。这个过程就是分析人脸,利用从人脸特征的相对距离得出的数据,开发一个数学模型。这些数据包括双眼之间的距离,以及眼睛与鼻子、下巴、耳朵和颧骨的相对位置。另外还要确定人脸相对于人脸识别摄像头的位置,因为这对于确定相对距离非常重要。也可以检测肤色并用于识别。
然后,再将该模型与数据库中存储的已知人脸数学模型进行比较,由算法确定最佳匹配。检测的人脸与存储的人脸有一定的匹配机率(百分比)。也有可能两者不匹配,那么检测的人脸就是未知的。
人脸识别硬件
为了实现人脸识别,设计人员需要挑选并组合摄像头传感器、视频和图像前端信号调节装置、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。
表 2:B5T-007001 的命令列表,包括每个命令的简短解释。每个命令会返回响应码或错误码。所有写入都是主机写入摄像头。所有读取都是主机从摄像头读取数据。(数据来源:Omron)
该摄像头非常灵活,可通过连接到微型 USB 2.0 端口的电缆轻松配置。要识别的每个人被称为用户,以 2 字节的用户 ID 进行标识。所有用户 ID 数据首先由主机写入 B5T-007001,其中包括用户的灰阶图像。
用户集合称为相册。每个相册支持最多 100 个用户。B5T-007001 将所有相册数据及其他配置数据存储在摄像头电路板上的 RAM 中。工作过程中,设备使用存储在 RAM 中的相册数据来进行检测。
摄像头有板载闪存,用于相册备份存储。将相册保存在闪存上命令可将存储在 RAM 中的所有用户相册数据写入闪存。闪存数据仅在摄像头启动时加载到摄像头 RAM。如果在工作过程中,主机固件需要将摄像头闪存数据重新加载到摄像头 RAM,则它必须通过硬件电源开关来复位 B5T-007001。
执行检测命令 (04h) 用于根据“命令数据”字段的内容,执行各种内置检测算法。对于在摄像头的视野中检测到的每个人,可以执行以下一个或所有十个检测命令:
- 人体检测命令 - 检测人体的上半身部分,按人体中心的坐标进行标识。
- 手部检测命令 - 检测打开的手掌,按手部中心的坐标进行标识。
- 人脸检测命令 - 检测最多 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)。
图 2:建议使用 Omron B5T-007001 人脸识别摄像头的 PC 用户界面进行摄像头评估和开发。它也用作用户应用程序,用于存储、更改和删除相册数据。(图片来源:Omron)
为微控制器系统添加人脸识别功能
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 单板计算机,用作更新的相册数据。
图 4:STM32F469 的外部存储卡接口可用于传输数据,例如来自 PC 的更新相册数据。(图片来源:Omron)
使用表 2 中所列的命令,STM32F469 和 B5T-007001 能够用作自主型安防监控系统。通过执行人脸识别命令,STM32F469 能够识别摄像头采集区域中的已知或未知人员。微控制器固件可将返回的已识别人员的用户 ID 与存储在微控制器中的内部人员表格进行比较。
如果与已知用户 ID 匹配,STM32F469 可以使用其多个外设中的任何一个来执行操作,例如发出提示音或开门。微控制器带有一个以太网端口,可将设备连接到网络,因而能够根据匹配的用户 ID 发送电子邮件。
STM32F469 微控制器还带有 LCD TFT 控制器,用于控制外部彩色 LCD 显示屏。但是,要进行更多视频扩展,可以使用 MIPI® DSI 兼容接口,连接到带有 MIPI® 多媒体接口的视频摄像机。这样可添加其他摄像机来进行视频串流和其他处理,从而实现后期的视频扩展。虽然这样可能大幅增加复杂性,但可以真正扩展安防系统的功能。
STM32469I-EVAL 评估板支持该微控制器,从而可实现对所有微控制器功能的快速评估。评估板还带有 LCD 显示屏,可用于显示来自 B5T-007001 的视频。
图 5:STM32469I-EVAL 是适用于 STM32F469 微控制器的完整评估套件,可使用任何 USB、UART 或 USART 端口,轻松连接到 B5T-007001。(图片来源:STMicroelectronics)
总结
借助现成的交钥匙硬件,我们可以通过将所需的算法集成到摄像头电路板固件中,轻松为嵌入式系统项目添加人脸识别功能。通过简单的命令界面,我们可以快速开发微控制器固件,用于与电路板进行交互,而无需了解图像处理的细节。
免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。