跑通一次人脸检测
K10 板载 200 万像素摄像头,视觉 AI 提供四种算法模式:人脸检测、猫狗检测、运动检测、二维码识别,全部是板内内置的离线模型,不联网、不需要云端密钥,在课堂上用起来省事。官方 unihiker_k10 库把这四种模式做成了同一套调用路径:初始化 AI、启动摄像头、选一种模式启动、循环取结果、结束释放,下面按这条路径把人脸检测完整跑通。语音类的离线模型在语音 AI 页再展开。
- 初始化 AI:调用
ai.init_ai()。预期结果:程序顺利执行到下一行,没有报错。 - 启动摄像头:调用
ai.camera_start()。预期结果:摄像头启动,程序继续运行无报错。 - 选定检测模式:调用
ai.face_recognize_start()进入人脸检测。预期结果:程序处于人脸检测状态;持板方式要竖直、Type-C 口朝上,摄像头对准人脸。 - 循环取结果:在主循环里先用
ai.is_ai_data_updated()判断有没有新结果,有新结果再调用ai.get_ai_data()取数。预期结果:检测到人脸后,Thonny 下方的 Shell 里开始打印取到的数据。 - 释放:程序退出或切换去别的功能前,调用
ai.deinit_ai()。预期结果:AI 占用的资源被释放,程序正常结束。
完整代码如下,在 Thonny 里连接 K10 后直接运行:
import ai
import time
ai.init_ai() # 初始化 AI
ai.camera_start() # 启动摄像头
ai.face_recognize_start() # 人脸检测模式
try:
while True:
if ai.is_ai_data_updated(): # 有新结果才取数
print(ai.get_ai_data())
time.sleep(0.1)
except KeyboardInterrupt:
ai.deinit_ai()
换模式只改一行:猫狗检测换成 ai.cat_detect(),运动检测换成 ai.move_detect(),二维码识别换成 ai.code_scanner(),取数和释放的写法都不变。运动检测在画面发生变化时给出结果,二维码识别用来读画面里的二维码。
这套代码跑在 MicroPython 固件上,官方说明该固件仍处于测试阶段,可能存在 bug。跑完想回到 Mind+ 图形化,要在 Mind+ V1 里执行「恢复初始设置」,或在 Mind+ V2 连接 K10 后执行「擦除」;恢复时先按住 BOOT 再接数据线,识别出端口后松开,再按 RST 复位。程序建议在 Thonny 里保存为 main.py 存到 MicroPython 设备,只存到电脑上的话,板子重启后程序不会保留。
四种模式与识别框
| 模式 | 启动函数 | 画面叠加识别框 |
|---|---|---|
| 人脸检测 | ai.face_recognize_start() |
是 |
| 猫狗检测 | ai.cat_detect() |
仅猫脸 |
| 运动检测 | ai.move_detect() |
否 |
| 二维码识别 | ai.code_scanner() |
否 |
四种模式中只有人脸检测与猫脸检测会在画面上叠加识别框,运动检测和二维码识别只返回结果、不画框,看不到框不等于没检测到,以判断积木或 ai.get_ai_data() 取到的数据为准。选模式从要检测的对象出发:人数统计、打卡选人脸检测,画面有变化就要提醒选运动检测,扫码登记选二维码识别,宠物相关的触发选猫狗检测。
图形化一侧的判别顺序
在 Mind+ 里做同一件事,官方说明给出的积木判别顺序是:先用「切换机器视觉算法模式」选定模式,再用对应模式的判断积木确认是否检测到人脸、猫、狗、运动或二维码,最后才用「获取人脸关键点」读详细数据。先判断有没有目标,再去读关键点。人脸关键点共 14 项,包括长、宽、中心点、左右眼、鼻、左右嘴角等,能直接告诉你脸在画面里的位置和大小,做位置相关的反馈时用这些数据。
程序里要加按键操作的话,官方建议在启用摄像头或 AI 功能时改用 A/B 键中断来判断按键,而不是直接读按键状态;中断里不要放无限循环和长延时,代码尽量短。屏幕显示类积木也不要放进回调、线程或中断里执行。
检测不到或崩溃时先查什么
检测要求屏幕竖直、Type-C 口朝上,横屏时检测不到,一直检测不到先从这里查。
一直检测不到:程序正常运行,判断结果却始终为否。先确认持板方向,再核对程序启动的模式与镜头前的目标是否对应,比如启动的是猫狗检测,镜头前就得有猫或狗;两样都排除后,回到代码里检查模式启动和取数逻辑。
程序崩溃:一启用 AI 功能就崩。先查 TF 卡——AI 功能涉及 TF 卡时,劣质卡可能导致程序崩溃,官方建议使用 16G 或 32G 的官方 TF 卡,并用 FAT32 格式,换卡后再验证。
官方没有公布各模式的准确率、帧率、识别距离等指标,模式合不合适,只能拿自己的场景试。