ESP-WHO开发框架分析与快速部署
一、ESP-WHO 整体定位
ESP-WHO 是乐鑫官方开源、面向ESP系列芯片的边缘机器视觉AI开发框架,主打低门槛快速实现人脸、物体、手势等视觉AI任务,完全基于ESP-IDF构建,底层依赖乐鑫自研深度学习库 ESP-DL 做模型推理加速。
核心定位:给资源有限的ESP32/ESP32-S3/ESP32-P4等MCU提供开箱即用的视觉流水线,不用从零搭建图像采集、预处理、AI推理、结果渲染整套代码。
版本适配关系
- ESP-IDF v5.x → 新版ESP-WHO主分支(主推S3、P4)
- ESP-IDF v4.4 → 对应esp-who/idf v4.4分支(老ESP32芯片)

二、分层软件架构
整体四层堆栈,自上而下:
- 应用层examples:可直接编译运行的业务示例
- ESP-WHO核心组件层:流水线节点、检测/识别内核、BSP硬件抽象
- ESP-DL深度学习层:INT8/FP16量化推理、NNA硬件加速算子
- 底层基础层:ESP-IDF、FreeRTOS、外设驱动(Camera/LCD/PSRAM/WiFi)
异步流水线核心设计
采用节点化异步任务流水线,每个环节封装独立WhoXXXNode类,FreeRTOS队列/事件位通信,互不阻塞:
WhoFrameCapNode:摄像头图像采集、裁剪、格式转换(RGB565/YUV422)WhoDetect:调用ESP-DL运行检测模型(人脸/人体/猫脸)WhoRecognitionCore(可选):特征提取、比对、人脸库增删管理(录入/识别/删除状态机)- 输出节点:LCD渲染、串口打印、WiFi图传、继电器控制等
三、内置核心AI能力
1. 人脸体系
- 人脸检测:轻量化MTCNN三级级联,输出人脸框+5个人脸关键点
- 人脸识别:轻量化ArcFace,128维特征向量比对,支持本地人脸模板Flash存储;支持多人录入、权限区分(管理员/普通用户)
- 性能:ESP32-S3内置NNA加速,人脸检测+识别单帧几十毫秒级
2. 其他预置视觉模型
- 人体/行人检测
- 猫脸检测(宠物监控)
- 手势识别(单/多手势控制)
- 二维码/条形码识别
- 物体分类(可替换自定义训练模型)
模型优化手段
全部针对MCU深度优化:
- 权重INT8量化,大幅减少Flash/内存占用
- 深度可分离卷积、网络剪枝、通道压缩
- 充分调用S3/P4内置NNA神经网络加速器,纯CPU也可降级运行(速度慢)
四、支持硬件平台
主控芯片
- ESP32-S3(主流首选):自带NNA、大PSRAM,ESP32-S3-EYE官方开发板完美适配
- ESP32-P4:更强NNA算力,高分辨率图像、多任务并行视觉
- 老款ESP32(无硬件NNA):仅基础人脸检测可用,识别速度偏低;ESP32-S2算力弱不推荐重度视觉
配套外设
- 摄像头:OV2640(标配200W)、OV3660等;框架统一封装驱动,BSP屏蔽引脚差异
- 显示:ST7789 LCD、OLED,流水线可直接叠加人脸框、文字渲染
- 存储:Flash存人脸模板;PSRAM必须(缓存图像帧、模型权重)
- 通信:Wi-Fi传输图片/识别日志;搭配ESP-ADF音频框架可做音视觉融合(语音唤醒+人脸识别)
官方开发板
- ESP32-S3-EYE(最适配,出厂即跑ESP-WHO人脸例程)
- ESP-EYE(初代ESP32)
- ESP32-WROVER-KIT、Korvo-2(音视一体)

兼容开发板


五、框架关键特性
- BSP硬件抽象层
同一套业务代码切换不同开发板,只需改sdkconfig.bsp.xxx编译配置,不用改底层摄像头/LCD引脚代码,移植极快。 - 完整状态机管理
人脸识别内置标准流程:空闲→录入人脸→保存模板→比对识别→删除人脸,自带校验阈值、相似度分数可调。 - 低门槛二次开发
- 示例代码完整可跑,只需加回调函数就能对接外设(开锁、灯光、上报云平台)
- 支持替换自己训练的YOLO/MobileNet模型,通过ESP-DL模型转换工具一键部署
- IoT无缝打通
识别结果、抓拍图片可通过ESP-IDF MQTT/HTTP上传阿里云、华为云、ESP RainMaker;本地可配WiFi热点远程查看画面 - 开源协议
Apache 2.0,商用无版权限制,GitHub乐鑫官方仓库维护,持续更新模型与芯片适配
六、典型应用场景
- 智能门禁/考勤:本地人脸开锁、打卡,脱机可用,断网不失效
- 智能家居交互:人脸识别自动切换灯光/空调模式、手势开关设备
- 宠物监控:猫脸检测自动抓拍推送手机
- 工业安防:人员在岗检测、危险区域闯入提醒
- 低功耗电池摄像头:S3深度休眠,有人脸唤醒抓拍,超长待机
七、快速上手步骤
1、ESP32_S3_EYE 配置与编译
基于esp32_s3_eye 开发板(或兼容开发板),运行examples/human_face_recognition 人脸识别的示例,完整配置与编译步骤:
开发环境(Ubuntu22.04 + IDF5.5)
cd /home/tony/esp
git clone git@gitee.com:EspressifSystems/esp-who.git
export IDF_EXTRA_ACTIONS_PATH=/home/tony/esp/esp-who/tools/
cd esp-who/examples/human_face_recognition/
idf.py -D SDKCONFIG_DEFAULTS="sdkconfig.bsp.esp32_s3_eye" set-target esp32s3
idf.py menuconfig (可选)
idf.py update-dependencies(可选)
idf.py build
idf.py flash
idf.py monitor





2、ESP32_S3_EYE 兼容板问题
- LCD 屏幕不亮
源文件路径:
esp-who/examples/human_face_recognition/managed_components/espressif__esp32_s3_eye/esp32_s3_eye.c
修订 367 行,spi_mode = 0。(原厂 spi_mode = 2)

- 调整摄像头方向
源文件路径:
esp-who/examples/human_face_recognition/main/frame_cap_pipeline.cpp

八、同类方案对比
|
维度 |
ESP-WHO |
裸写ESP-DL |
第三方开源视觉库 |
|
上手难度 |
极低,现成流水线 |
高,需自己搭采集/预处理 |
中,适配ESP生态差 |
|
硬件适配 |
BSP统一封装,多板兼容 |
需手动写摄像头驱动 |
引脚、存储适配麻烦 |
|
人脸流程 |
录入/比对/存储全套封装 |
全部自己实现状态机 |
大多只有检测无识别管理 |
|
乐鑫生态 |
深度绑定IDF/ADL/RainMaker |
仅绑定ESP-DL |
生态割裂 |
简单总结:做ESP芯片人脸视觉首选ESP-WHO,把80%重复底层视觉工程全部封装,开发者只专注业务逻辑。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)