使用 ReCamera 构建一款实时的人脸洞察型摄像机
扫描二维码
随时随地手机看文章
在 ReCamera 上进行面部检测、年龄/性别分析以及情绪识别,然后通过 UDP 将实时结果传输到您的电脑上。在这个项目中,我使用“ReCamera”构建了一个实时的人脸分析摄像机。
资源
•GitHub 仓库地址:[RobotXTeam/sscma-example-sg200x]
•预训练模型:[sscma-example-sg200x v1.0.1 版本]
•详细部署指南:[ReCamera UDP 人脸分析指南]
关于完整的分步部署流程,包括环境设置、模型准备、编译、运行 ReCamera 可执行文件以及启动 PC 接收器。
此演示将 ReCamera 转变为一款小巧的边缘人工智能摄像头,它能够检测人脸、估算年龄/性别/种族特征、识别情绪,并通过 UDP 协议实时将标注后的视频结果传输至个人电脑。
与简单的物体检测演示不同,该项目将多个人工智能任务整合到了一个完整的边缘视觉处理流程中:
•使用 YOLO 人脸模型进行人脸检测
•基于“FairFace”模型的年龄、性别和种族估计
•基于 7 类情绪模型的情绪识别
•JPEG 帧压缩
•UDP 视频及元数据流传输
•使用 Python 和 OpenCV 在个人电脑上进行实时可视化展示
最终的成果是一款小巧的边缘人工智能摄像头,它能够本地分析人脸,并将分析结果实时显示在电脑上。
我为何要这样做
许多基于人工智能的摄像设备应用都依赖于云端处理。虽然云端人工智能功能强大,但它也带来了若干问题:
•更高的延迟
•更多的网络带宽使用量
•隐私问题
•对互联网连接的依赖
对于许多实际应用而言,直接在设备上运行人工智能推理会更为理想。
这就是我想要在 ReCamera 上构建实时面部分析系统的原因。其目的是展示一款边缘人工智能摄像头如何能够处理视频采集、人工智能推理以及实时流传输,而无需将原始视频发送到云端服务器。
这种类型的系统可以作为以下应用的起点:
例如:
•智能零售分析
•互动式自助服务终端机
•教室考勤系统
•人机交互
•边缘人工智能摄像机原型开发
•嵌入式计算机视觉教育
该项目主要是用于开发、研究和演示用途。在进行面部分析工作时,务必确保相关人员知晓情况并已给予同意。
系统运作方式
该系统分为两部分:
•ReCamera 侧边:ReCamera 运行一个 C++ 应用程序。它捕获视频帧、进行人工智能推理、压缩图像,并通过 UDP 发送结果。
•PC 侧:PC 运行一个 Python 接收器脚本。它接收 JPEG 图像帧和检测元数据,对其进行解码,绘制边框框和标签,并实时显示最终的视频流。
整体架构如下所示:
人工智能管道系统
该人工智能流程包含三个主要阶段。
1. 人脸检测
第一个模型是一个基于 YOLO 的人脸检测模型。它能在摄像头画面中检测出人脸,并输出带有置信度分数的边界框。
在启动程序时可以设置一个信任阈值。这样用户就能在保证敏感性的同时降低误报率。
2. 属性分析
在检测到面部后,裁剪出的面部区域会传递给年龄/性别/种族属性模型。
该模型的估计结果为:
•性别
•年龄范围
•比赛类别
这些结果会以文字标签的形式显示在检测到的面部附近。
3. 情绪识别
检测到的面部图像也会被传递给一个情绪识别模型。
该情感模型包含七种类别:
•生气的
•厌恶;反感
•恐惧
•快乐
•悲伤
•惊喜
•中立的
这使得演示更加具有互动性,因为所显示的标签会随着用户面部表情的变化而实时变化。
实时 UDP 流媒体传输
经过推理后,ReCamera 将视频帧压缩为 JPEG 格式,并通过 UDP 将其发送至 PC。
我选择使用 UDP 是因为它的传输效率高且适用于实时视频流传输。在本次演示中,偶尔出现的数据包丢失是可以接受的,因为系统会持续发送新的帧。
PC 接收器脚本执行以下操作:
•接收来自遥控摄像头的 UDP 数据包
•重新构建 JPEG 帧及元数据
•使用 OpenCV 解码图像
•绘制面部边界框及标签
•在实时窗口中显示最终结果
这使得该系统易于测试。ReCamera 负责执行人工智能推理,而 PC 则提供了便捷的可视化界面。
性能优化
在嵌入式设备上运行多个人工智能模型是一项颇具挑战性的任务。为了保持系统的响应速度,我采用了多种优化策略。
跳帧推理
该程序并非对每一帧视频都进行人工智能推理,而是可以每隔 N 帧进行一次推理。
例如,当跳过值设为 3 时,系统每三帧才进行一次推理。这样既减轻了人工智能的计算负担,又保证了视觉输出足够流畅,能够满足实时观看的需求。
JPEG 压缩
原始视频帧太大,无法通过 UDP 协议进行高效传输。因此,在传输前会将该帧压缩成 JPEG 格式。
这大大降低了带宽使用量,并使实时流媒体的播放变得更加可行。
可配置的阈值和模式
该程序支持多种 YOLO 头部类型和检测阈值。这使得能够更轻松地根据不同的模型或环境来调整系统设置。
例如:
在这条指令中:
•选择 YOLO 头部类型
•0.5 设定检测阈值
•3 表示推理每 3 帧运行一次
•192.168.31.100 是这台电脑的 IP 地址
•5001 是 UDP 端口
演示结果
当系统运行时,电脑会显示一个实时视频窗口。
每个检测到的人脸都会被标注一个边框区域。结果显示了所检测到的特征和情绪,例如:
在 ReCamera 终端上,该程序还会打印性能数据,包括视频帧率、UDP 帧率、推理时间以及吞吐量。
这些统计数据有助于我们了解整个边缘人工智能流程的运行情况。
本文编译自hackster.io





