任务详情
ta charset="UTF-8"/>
STM32N6570-DK 多线程人脸检测与面部RGB分析系统开发需求
STM32N6570-DK 多线程人脸检测与面部RGB分析系统开发需求
项目概述
基于STM32N6570-DK开发板,利用其内置NPU加速,开发一套完整的多线程人脸检测与面部RGB分析系统。系统需实现实时人脸检测、特征点提取、面部RGB均值计算,并确保摄像头30fps稳定输出,如果性能无法满足30fps,可适当降低帧率,15或者10帧。采用多线程架构设计,保证系统的实时性和稳定性。
检测部分stm32官方已有现成模型可供利用,直接使用即可。
系统架构要求
1. 多线程架构设计
主线程(Main Thread)
├── 相机采集线程(Camera Capture Thread) - 优先级: High
├── 人脸检测线程(Face Detection Thread) - 优先级: Normal
├── 特征点分析线程(Landmark Analysis Thread) - 优先级: Normal
├── RGB计算线程(RGB Calculation Thread) - 优先级: Normal
├── 结果显示线程(Display Thread) - 优先级: Low
└── 数据输出线程(Data Output Thread) - 优先级: Low
2. 线程间通信机制
消息队列
: 采用FreeRTOS消息队列进行线程间数据传输
信号量
: 使用二值信号量和计数信号量实现线程同步
事件标志组
: 实现线程间事件通知机制
详细功能需求
1. 相机采集线程 (Camera Capture Thread)
功能
: 负责摄像头数据采集和预处理
性能要求
: 稳定30fps采集,无丢帧
数据格式
: RGB888或YUV422,最好RGB888,因为最终需要计算每帧的rgb均值
分辨率
: 640x480@30fps,分辨率根据性能更大一点
缓冲区管理
: 实现双缓冲机制
错误处理
: 摄像头故障检测与恢复
2. 人脸检测线程 (Face Detection Thread)
模型
: 推荐STM32官方类似轻量级模型
NPU加速
: 利用STM32N6内置NPU进行推理
检测能力
: 最好可以支持多人脸检测(最多10人)
输出
: 人脸边界框坐标和置信度
性能
: 单帧检测时间<20ms
后处理
: NMS非极大值抑制算法
3. 特征点分析线程 (Landmark Analysis Thread)
特征点模型
: 68点或更少的面部特征点检测
输入
: 人脸检测线程输出的边界框
处理
: 对每个检测到的人脸进行特征点提取
输出
: 特征点坐标数组
精度
: 特征点位置误差<3像素
优化
: 利用NPU加速特征点推理
4. RGB计算线程 (RGB Calculation Thread)
计算区域
: 基于特征点的面部包围框
计算方法
: 对包围框内所有像素RGB分量分别求平均
输出格式
:
typedef struct {
uint8_t R, G, B;
uint32_t timestamp;
uint16_t face_id;
float confidence;
} FaceRGBData;
频率
: 每帧每人脸计算一次
精度
: RGB各分量精度±1
5. 结果显示线程 (Display Thread)
显示内容
:
实时视频流
人脸边界框(不同颜色区分)
特征点标注
RGB数值显示
帧率信息
显示格式
: LCD显示屏或HDMI输出
更新频率
: 30fps同步显示
UI设计
: 简洁直观的用户界面
6. 数据输出线程 (Data Output Thread)
输出接口
:
USB CDC串口输出
可选以太网UDP输出
SD卡数据记录
输出频率
: 每帧输出或按设定间隔
数据格式
: JSON格式,包含所有检测和计算结果
实时性
: 数据输出不影响主流程性能
性能指标
1. 整体性能要求
指标
要求值
备注
系统帧率
30fps
稳定运行,性能不足可适当降低到15 帧或者10帧 ,最主要的需要帧率稳定
最大人脸数
2人
同时检测,性能不足可以降低至1人
CPU占用
<70%
整体CPU使用率
内存占用
<4MB
总内存使用
2. 单线程性能要求
线程
最大处理时间
备注说明
相机采集
33ms~ 100ms
30帧33ms, 10帧100ms
人脸检测
6ms
根据相机帧率不同而不同
特征点分析
10ms
根据相机帧率不同而不同
RGB计算
60ms
根据相机帧率不同而不同
结果显示
10ms
根据相机帧率不同而不同
数据输出
5ms
根据相机帧率不同而不同
重要提示
: 如果30fps性能无法满足,可适当降低帧率至15fps或10fps,但需保证系统稳定运行。
图像处理库集成
最好可以集成图像处理库。
1. 图像处理功能
几何变换
: 缩放、裁剪、旋转、仿射变换
2. 优化要求
NPU加速
: 支持NPU加速的图像处理操作
内存池管理
: 避免动态内存分配
缓存优化
: 充分利用CPU缓存
开发环境与交付内容
1. 开发环境要求
IDE
: STM32CubeIDE 1.19.0或更新版本
固件包
: STM32CubeN6 V1.1.0或更新版本
AI工具
: STM32Cube.AI V10.0.0或更新版本
Edge AI
: ST Edge AI Core V2.0.0或更新版本
RTOS
: FreeRTOS V10.5.0或更新版本
编译器
: ARM GCC 12.2或更新版本
2. 完整交付清单
源代码,文件结构仅供参考,但项目结构需要分明
project/
├── Core/
│ ├── Src/
│ │ ├── main.c
│ │ ├── camera_thread.c
│ │ ├── face_detection_thread.c
│ │ ├── landmark_thread.c
│ │ ├── rgb_calc_thread.c
│ │ ├── display_thread.c
│ │ ├── output_thread.c
│ │ ├── image_processing.c
│ │ ├── thread_communication.c
│ │ └── system_config.c
│ └── Inc/
├── AI/
│ ├── face_detection_model.h5
│ ├── face_landmarks_model.h5
│ ├── model_config.h
│ └── ai_inference.c
├── Middlewares/
│ ├── FreeRTOS/
│ ├── STM32_Cube_AI/
│ └── Image_Processing_Lib/
├── Drivers/
├── Utilities/
├── Docs/
├── Tests/
├── sc
ripts/
└── Tools/
模型文件,可利用官方已有的
人脸检测模型(Int8量化)
特征点检测模型(Int8量化)
模型配置文件
模型性能评估报告
文档资料
系统架构设计文档
: 多线程架构详细设计
API参考手册
: 所有函数接口说明
性能优化指南
: 性能调优建议
测试报告
: 功能测试和性能测试结果
故障排除指南
: 常见问题解决方案
测试与验证
集成测试
: 多线程协作测试
性能测试
: 帧率、延迟、资源占用测试
稳定性测试
: 长时间运行测试(>24小时)