IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 基于Maix IDE的编程环境 K21O人脸识别+串口输出 -> 正文阅读

[开发工具]基于Maix IDE的编程环境 K21O人脸识别+串口输出

如果你想进行人脸识别首先要进行对K210的模型以及固件的配置,在你去Maix官网去下载模型以及固件。

目录

一、如何申请机械码???

1.前往这个网站,也就是Maix的官网(需要提前申请账号)

2.要进入maixhub去获得获取key_gen机器码

?3.下载获得机械码的固件?

?4.复位获取机械码

二、下载人脸识别的模型

1.注册账号

?2.下载模型

3,将模型下载到K210中

?三,找到我们所需要的源码

1.复制代码,嘿嘿嘿!!!


一、如何申请机械码???

1.前往这个网站,也就是Maix的官网

https://wiki.sipeed.com/

2.要进入maixhub去获得获取key_gen机器码

?

?

?

?需要使用

?3.下载获得机械码的固件

?使用kflash_gui将key_gen_v1.2.bin这个固件下载我们使用的K210中

?

?4.复位获取机械码

接下来就是将你的K210连接到出口助手上就行,我使用的是XCOM,串口选择我们的K210,波特率选择115200,按下复位后,你就会看到你的机械码了。

一定要把你的机械吗保存好。

二、下载人脸识别的模型

1.注册账号

在点击网站之后,需要线注册账号,登录后才可进行下载,网站链接也放在后面了

Sipeed MaixHub – sipeed AI 模型平台(下载模型的网站)

?2.下载模型

点击Download后,直接下载就可以。(当你下载的时候会让你输入机械码)

?这个时候你就需要去申请机械码,每个硬件都会有一个专属的机械码的。上面已经说过怎么获取机械码了。

下载完成后,也就是有三个模型。(建议直接用谷歌浏览器去操作,因为我个人使用的浏览器是搜狗浏览器,下载后就有一个模型)

?

?就是这三个模型,其中名子里面有你的机械码。

3,将模型下载到K210中

接下来把你的模型下载到你的K210中

?

?把这些模型下载到你的K210以后就需要下载我们人脸识别的固件

这个固件我是Maix按照官网教程的思路下载的,但是发现将官网推荐的固件下载到我的K210中发现我的K210硬件连接不到我Maix IDE上,所以大家有兴趣的可以去看看,我就直接吧固件放在下面了,大家自行取用吧!!

?https://pan.baidu.com/s/1b3cam7wqqvoaPlePFpjOnQ? ? ? 提取码:e9gj

然后将这个固件使用kflash_gui下载到我们的K210开发板上就已经成功一半多了。

加油!!!!!

加油!!!!!?

加油!!!!!

?三,找到我们所需要的源码

1.复制代码,嘿嘿嘿!!!

我还是直接给大家我已经测试好的代码!!!

import sensor
import image
import lcd
import KPU as kpu
import time
from Maix import FPIOA, GPIO
import gc
from fpioa_manager import fm
from board import board_info
import utime

task_fd = kpu.load(0x300000)
task_ld = kpu.load(0x400000)
task_fe = kpu.load(0x500000)

clock = time.clock()

fm.register(board_info.BOOT_KEY, fm.fpioa.GPIOHS0)
key_gpio = GPIO(GPIO.GPIOHS0, GPIO.IN)
start_processing = False

BOUNCE_PROTECTION = 50


def set_key_state(*_):
    global start_processing
    start_processing = True
    utime.sleep_ms(BOUNCE_PROTECTION)


key_gpio.irq(set_key_state, GPIO.IRQ_RISING, GPIO.WAKEUP_NOT_SUPPORT)

lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(1)
sensor.set_vflip(1)
sensor.run(1)
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437,
          6.92275, 6.718375, 9.01025)  # anchor for face detect
dst_point = [(44, 59), (84, 59), (64, 82), (47, 105),
             (81, 105)]  # standard face key point position
a = kpu.init_yolo2(task_fd, 0.5, 0.3, 5, anchor)
img_lcd = image.Image()
img_face = image.Image(size=(128, 128))
a = img_face.pix_to_ai()
record_ftr = []
record_ftrs = []
names = ['Mr.1', 'Mr.2', 'Mr.3', 'Mr.4', 'Mr.5',
         'Mr.6', 'Mr.7', 'Mr.8', 'Mr.9', 'Mr.10']

ACCURACY = 85

while (1):
    img = sensor.snapshot()
    clock.tick()
    code = kpu.run_yolo2(task_fd, img)
    if code:
        for i in code:
            # Cut face and resize to 128x128
            a = img.draw_rectangle(i.rect())
            face_cut = img.cut(i.x(), i.y(), i.w(), i.h())
            face_cut_128 = face_cut.resize(128, 128)
            a = face_cut_128.pix_to_ai()
            # a = img.draw_image(face_cut_128, (0,0))
            # Landmark for face 5 points
            fmap = kpu.forward(task_ld, face_cut_128)
            plist = fmap[:]
            le = (i.x() + int(plist[0] * i.w() - 10), i.y() + int(plist[1] * i.h()))
            re = (i.x() + int(plist[2] * i.w()), i.y() + int(plist[3] * i.h()))
            nose = (i.x() + int(plist[4] * i.w()), i.y() + int(plist[5] * i.h()))
            lm = (i.x() + int(plist[6] * i.w()), i.y() + int(plist[7] * i.h()))
            rm = (i.x() + int(plist[8] * i.w()), i.y() + int(plist[9] * i.h()))
            a = img.draw_circle(le[0], le[1], 4)
            a = img.draw_circle(re[0], re[1], 4)
            a = img.draw_circle(nose[0], nose[1], 4)
            a = img.draw_circle(lm[0], lm[1], 4)
            a = img.draw_circle(rm[0], rm[1], 4)
            # align face to standard position
            src_point = [le, re, nose, lm, rm]
            T = image.get_affine_transform(src_point, dst_point)
            a = image.warp_affine_ai(img, img_face, T)
            a = img_face.ai_to_pix()
            # a = img.draw_image(img_face, (128,0))
            del (face_cut_128)
            # calculate face feature vector
            fmap = kpu.forward(task_fe, img_face)
            feature = kpu.face_encode(fmap[:])
            reg_flag = False
            scores = []
            for j in range(len(record_ftrs)):
                score = kpu.face_compare(record_ftrs[j], feature)
                scores.append(score)
            max_score = 0
            index = 0
            for k in range(len(scores)):
                if max_score < scores[k]:
                    max_score = scores[k]
                    index = k
            if max_score > ACCURACY:
                a = img.draw_string(i.x(), i.y(), ("%s :%2.1f" % (
                    names[index], max_score)), color=(0, 255, 0), scale=2)
            else:
                a = img.draw_string(i.x(), i.y(), ("X :%2.1f" % (
                    max_score)), color=(255, 0, 0), scale=2)
            if start_processing:
                record_ftr = feature
                record_ftrs.append(record_ftr)
                start_processing = False

            break
    fps = clock.fps()
    print("%2.1f fps" % fps)
    a = lcd.display(img)
    gc.collect()
    # kpu.memtest()

# a = kpu.deinit(task_fe)
# a = kpu.deinit(task_ld)
# a = kpu.deinit(task_fd)

?将上面代码直接复制,粘贴到Maix IDE中,连接我们的开发板然后就直接开始运行就可以了!!

终于写完了!!!好累!!希望对大家有帮助!!!


?下面是我进行的测试,

然后输出串口能让STM32读取,接下来就是你们发挥能力的时刻了

?我也就到此为止了。

这是我进行的串口测试!!!

?

我会把我现在所有的资料的都发过来,如果上面没跟上的小伙伴,我把东西都整理好了,直接使用flash_gui下载就行了!!!还有就是带有详细注释的代码,以及我现在正在调试的代码都在里面。

https://pan.baidu.com/s/1L8PWCPRpZ7DTfNEKsPOfFw? ?提取码:c6cj

最后祝大家学有所成!

加油!!!

加油!!!

加油!!!

重要的事情要说三遍!!!

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:39:21  更:2021-09-23 11:42:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:32:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码