基于K210的口罩检测与人脸识别——手把手教学
笔者最近期末综合设计,设计一个 基于深度学习与FreeRTOS的多功能视觉防疫终端,本人负责人脸识别和口罩检测模块,采用k210完成该模块。
K210简介
本次设计采用基于k210设计的maixbit开发板载UART / I2C接口,连接到esp32主流控制器,实现硬件无缝对接。同时,该单片机将Micropython移植到K210,带64 位双核带硬件 FPU、卷积加速器、FFT、Sha256 的 RISC-V CPU,基于该单片机的硬件基础,可以使用部署在K210上的YOLOv2模型,完成人脸识别和口罩识别部分。
人脸识别模型获取
KPU 是 K210 内部一个神经网络处理器,简单来说就是 KPU 能加载和运行各种现成的 AI 算法模型,实现各种机器视觉等功能。 MaixPy 中人脸识别本质是目标检测,主要通过在K210的KPU上跑 YOLO(You Only Look Once)目标检测算法来实现。 我们通过烧录训练好的模型和固件、在SD卡中存放已有模型,调用K210的KPU,实现口罩检测。基于这个思路,使用部署在K210上的YOLO模型完成口罩检测任务。 笔者采用自训练的方法获得,官方提供了现成的口罩检测和人脸检测模型,附上链接以供大家获取;值得注意的是,每个k210的机器码不同,需要烧录以下固件,并在串口助手连接的情况下,按下boot,显示你的机器码 固件下载库: 得到机器码后,进入 最后得到: 但这个代码只针对人脸检测,但我们目标还需要口罩检测,所以代码只能用于参考。 注意:我们可以通过把三个固件和一个bin(理解为:承载各个模型头文件的包)通过kflash烧录到k210中,也可以放在sd卡中,但在boot.py中要调用一下代码:
task_fd = kpu.load(0x200000) # 从flash 0x200000 加载人脸检测模型 task_ld = kpu.load(0x300000) # 从flash 0x300000 加载人脸五点关键点检测模型 task_fe = kpu.load(0x400000) # 从flash 0x400000 加载人脸196维特征值模型
`也可通过sipeed官网提供的固件(但会不会出bug我不了解):
口罩检测模型获取
使用说明
下载模型后得到: .py 示例脚本,.smodel 模型文件 将模型下载到 flash 的 0x300000 位置(与示例脚本中模型加载位置对应) 到下载 kmodelv4 支持固件, 并用 kflash 烧录 这里我将support.bin(v0.6.2_32)(默认地址)和口罩模型.smodel(起始地址改为:0x300000)打包成kfpkg,值得一提的是,人脸检测也是使用这个版本的固件
模型总结
笔者采用以下方法 人脸检测模型放在sd卡,采用代码读取法 口罩检测模型烧录进k210,采用调用地址法
task_fe = kpu.load("/sd/FE1.smodel") # 加载人脸196维特征值模型
task = kpu.load(0x300000) #加载口罩检测模型
模型(人脸需要自己拿自己的机器码去下载)和代码
基于深度学习与FreeRTOS的多功能视觉防疫终端
FreeRTOS实时人机交互部分采用ESP32完成,有问题请联系
`
视频演示
不多说上成果
