项目>行空板 K10>行空板 K10 视觉 AI 实战

行空板 K10 视觉 AI 实战

摘要:用官方 unihiker_k10 库的 ai 模块把人脸检测完整跑通一遍,每一步写清操作和预期结果;四种算法模式怎么换、人脸关键点能拿到什么、横屏为什么不检测、崩溃先查 TF 卡,照着做就能跑出第一次检测。

跑通一次人脸检测

K10 板载 200 万像素摄像头,视觉 AI 提供四种算法模式:人脸检测、猫狗检测、运动检测、二维码识别,全部是板内内置的离线模型,不联网、不需要云端密钥,在课堂上用起来省事。官方 unihiker_k10 库把这四种模式做成了同一套调用路径:初始化 AI、启动摄像头、选一种模式启动、循环取结果、结束释放,下面按这条路径把人脸检测完整跑通。语音类的离线模型在语音 AI 页再展开。

  1. 初始化 AI:调用 ai.init_ai()。预期结果:程序顺利执行到下一行,没有报错。
  2. 启动摄像头:调用 ai.camera_start()。预期结果:摄像头启动,程序继续运行无报错。
  3. 选定检测模式:调用 ai.face_recognize_start() 进入人脸检测。预期结果:程序处于人脸检测状态;持板方式要竖直、Type-C 口朝上,摄像头对准人脸。
  4. 循环取结果:在主循环里先用 ai.is_ai_data_updated() 判断有没有新结果,有新结果再调用 ai.get_ai_data() 取数。预期结果:检测到人脸后,Thonny 下方的 Shell 里开始打印取到的数据。
  5. 释放:程序退出或切换去别的功能前,调用 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 格式,换卡后再验证。

官方没有公布各模式的准确率、帧率、识别距离等指标,模式合不合适,只能拿自己的场景试。

资料来源

  • Mind+ 官方文档
  • DFRobot 行空板 K10 官方 Wiki
  • 行空板 K10 官方 FAQ

相关内容

给特斯拉自动插枪的小车、“陆空两栖”四足机器人、到点捞菜的火锅机器实践基于行空板K10的地震波模拟探测装置实践行空板K10制作旋转展示台:语音控制灯光与转盘实践STEM教育 · 行空板M10:3D智能客厅课堂项目实践BME688传感器配行空板K10:室内环境监测实战实践ESP-Mosaico智能套件上手:AI编码与模块化扩展实践