【K210开发板】人脸识别+ SD卡断电存储 --实时按键录取人脸信息并识别

一、人脸识别

1.获取机器码

人脸识别就是在人脸检测的基础上,除了检测人脸的位置外,还可以检测出这个人是谁(需要先对准人按按钮学习)。
先到 maixhub 按照说明下载模型, 获得模型smodel, 就是 加密版本的kmodel。下载后缀为.smodel模型需要用到机器码。机器码是一机一码的一种加密方式,用于模型文件的加密。如果使用别的机器码去加密或者下载以 smodel 为文件后缀的模型文件,开发板是无法使用该模型文件的。将 key_gen.bin 这个固件通过 Kflash 烧录到开发板上。烧录这个机器码固件之后,开发板是处于一个不能使用的状态(就是什么功能都不能使用,包括IDE也无法连接开发板),上电屏幕只会变成一个白屏。
在这里插入图片描述

获取机器码的步骤:https://bbs.sipeed.com/thread/426

使用串口调试助手。波特率为115200,按键复位键,看到机器码,将其复制下来,保存后面会用到。
在这里插入图片描述

2.下载并烧录.smodel文件和固件

  • 下载 固件.smodel 文件

进入网站,输入自己的机器码,下载三个.smodel模型文件,对应地址分别是 0x300000, 0x400000, 0x500000,文件以自己的机器码命名(注意一定要用自己开发板的机器码下载,否则开发板识别不了加密的.smodel文件)

注意:这里有个坑,我用搜狗浏览器下载每次只下一个文件,找了好久的问题,最后用谷歌浏览器下载成功,真坑人啊

在这里插入图片描述

下载站下载并用 kflash 烧录V4模型的固件支持固件,将第一个烧录进开发板,地址为0x000000,如果要使用ide注意要下载支持ide的固件,不然是连接不上ide的,

maixpy_v0.6.2_32_gf1cc361a5_openmv_kmodel_v4_with_ide_support.bin

在这里插入图片描述

  • 烧录 固件.smodel 文件

将 三个.smodel 文件烧录到开发板,注意要一个一个烧录,地址不能错
在这里插入图片描述

3.断电存储 SD卡

增加了讲按键录入的信息存储到sd卡,断电不丢失。
但是需要在代码中预先定义好名字信息,录入信息的时候,需要按照代码中定义的顺序录入。
开发板上电先判断SD卡是否存在txt文件,若存在文件则读取名称信息,并匹配识别到的人脸

#=================内存卡===================#
feature_file_exists = 0
for v in os.ilistdir('/sd'):#to check key directorys or files in sd card.sd card should be formated to fat32
    if v[0] == 'features.txt' and v[1] == 0x8000:#0x8000 is file
        feature_file_exists = 1

#================内存卡读写操作================#
record_ftr=[] #空列表 用于存储当前196维特征
record_ftrs=[] #空列表 用于存储按键记录下人脸特征, 可以将特征以txt等文件形式保存到sd卡后,读取到此列表,即可实现人脸断电存储。
names = ['zhang san', 'member.2', 'member.3', 'member.4', 'member.5', 'member.6', 'member.7', 'member.8', 'member.9' , 'member.10'] # 人名标签,与上面列表特征值一一对应。

record = []
def save_feature(feat):
    with open('/sd/features.txt','a') as f:
        record =ubinascii.b2a_base64(feat)
        f.write(record)
if(feature_file_exists):
    print("start")
    with open('/sd/features.txt','rb') as f:
        s = f.readlines()
        print(len(s))
        for line in s:
            record_ftrs.append(bytearray(ubinascii.a2b_base64(line)))

4、报错解决:

报错:only support kmodel V3/V4 now
MaixPy AI 硬件加速基本知识

基本图像变换 和 常用操作

在这里插入图片描述
**原因:**模型未烧录或者烧录地址错误,重新烧录下模型文件

程序理解:
总共用了三个模型, 分别是:
人脸检测模型, 这和前面的人脸检测使用的是同一个模型, 即找到人脸
人脸关键点检测模型,从前面找到的人脸中找到人脸的 眼睛 鼻子 和 嘴巴 的位置
人脸特征提取模型, 从一张人脸图片中得出一个特征值
步骤如下:
1、检测到人脸
2、裁出人脸,找到人脸的眼睛鼻子嘴巴, 这里裁成了128x128的图
3、把人脸图中的脸旋转到标准位置
4、用特征提取模型提取出人脸的特征值

1、加载各种模型
2、运行人脸检测模型,在图片中找到人脸位置并框出人脸
3、将裁出的人脸图片转换成kpu接收的格式
4、运行人脸5点关键点模型,获取到左眼、右眼、鼻子、左嘴角、右嘴角的位置
5、对原始图片人脸图片进行仿射变换,变换为正脸图像,将正脸图像转为kpu格式
6、使用人脸196维特征值模型计算正脸图片的196维特征值,计算得到最终的人脸特征feature
再将得到的人脸特征与之前保存过的人脸特征进行对比得到一组分数,选择其中最大的一个分数,且该分数超过85分(可以自己设置)就认为识别出该人,并根据对应下标从names列表中得到该人的姓名。

参考:
https://www.maixhub.com/modelInfo?modelId=14
https://blog.csdn.net/HuangChen666/article/details/113995079
https://wiki.sipeed.com/soft/maixpy/zh/course/ai/image/face_recognization.html

  • 8
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积跬步、至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值