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

获取机器码的步骤:https://bbs.sipeed.com/thread/426
使用串口调试助手。波特率为115200,按键复位键,看到机器码,将其复制下来,保存后面会用到。

进入网站,输入自己的机器码,下载三个.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 文件烧录到开发板,注意要一个一个烧录,地址不能错

增加了讲按键录入的信息存储到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)))
报错: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
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时