你有没有试过在 400MHz 的单片机上跑人脸检测?没有操作系统,没有 GPU,RAM 才 512KB。OpenMV 做到了,而且还能驱动舵机实时追踪。
这块小板的思路很野:不跟 Jetson Nano 比算力,而是把视觉流程压到极致。传感器直连 MCU,MicroPython 裁剪到秒级启动,所有图像函数都用 C 内联。说白了,就是砍掉一切通用计算的包袱,只留一条流水线:采集 → 检测 → 追踪 → 输出。
检测:为什么还坚持用 Haar Cascade
大部分人觉得 Haar 该进博物馆了,但放在资源受限的场景里,它依然是最合适的。YOLO 这些方案动辄要几 MB 模型和浮点加速,而 Haar 的推理只用整型加减,关键路径能跑在 MCU 的定点单元上。
它怎么判断一张脸?拿几个经典模板举例:
[■■|□□] → 垂直边缘(鼻梁与脸颊对比)
[■|□] → 水平线条(双眼与额头分界)
[■■■|□□□|■■■] → 中心亮、两边暗(典型的面部结构)
这些模板在图像上滑动,每滑一次就要算一堆矩形和的差值。听上去很慢,但 OpenMV 用了一个老技巧——积分图。
积分图的原理就一句话:提前存好每个点左上角所有像素的和,后续任何矩形区域求和只需 4 次查表和 3 次加减。不管矩形面积多大,计算开销都是常数。这就是 Haar 能在低端芯片上实时跑的根本原因。
追踪部分没有银弹
原文没展开质心跟踪,但常见做法是:检测到人脸后,用二值化或色块跟踪其质心,然后控制舵机做 PID 跟随。这套组合省资源,但是强光或遮挡一来就容易丢掉目标。实际部署时你会反复调阈值、加滤波,没有一次搞定的好事。
OpenMV 的招牌就是把这坨零散的工程细节封进了 MicroPython 接口,几行脚本就能搭个追脸系统。但你要是想在生产环境用,还是得钻进 C 源码调 ROI 和采样率。

