K210快速上手教程(色块、人脸、声源识别等)

k210实现各种功能快速上手

前言

最近想要做一个项目是涉及到目标识别的,我想要实现一个功能就是识别到目标并且把目标的坐标信息通过串口传输给单片机进行控制,那么目前我认为最好的选择就是使用k210了,它不仅成本低,性能好,而且基于MicroPython的开发极易上手,就算是不会python的小萌新也能实现简单的使用,这是各方面完全吊打openmv呀!

首先我来介绍一下什么是k210:
210 是嘉楠(Cannaan)科技的一款集成机器视觉与机器听觉能力的系统级芯片 (RSIC-V CPU)。使用台积电 (TSMC) 超低功耗的 28 纳米先进制程,具有双核 64 位处理器,拥有较好的功耗性能,稳定性与可靠性。该方案力求零门槛开发,可在最短时效部署于用户的产品中,赋予产品人工智能(AI)。 可以说是集性能强劲与高性价比于一身。

开发环境以及材料准备

K210快速上手教程(色块、人脸、声源识别等)
学习k210的话核心板和底板是必备的,还需要一条安卓线用于连接电脑。其他功能模块大家可以按照需要去某宝购买,用到视觉的话摄像头模块也是必须的哦
MaixPy 拥有自己官方的 IDE,可以在官网下载,我们使用该 IDE 可以轻松进行开发。而且拥有 Windows、 Mac OS、 Linux 等版本。官网下载地址: 软件下载地址
可以根据自己系统选择合适的版本下载安装。 Window 用户选择 exe 格式文件下载安装。安装步骤很简单的,安装完成后在下图开始处找到软件点击打开。
K210快速上手教程(色块、人脸、声源识别等)
打开软件后会出现如下界面
K210快速上手教程(色块、人脸、声源识别等)

; 软件Maixpy IDE使用说明

打开软件后的第一步就是把开发板通过安卓线连接上电脑,然后在电脑的设备管理器处找到对应的COM口。如果没有找到说明电脑没有安装ch340的驱动,这就需要自行百度去安装了。

K210快速上手教程(色块、人脸、声源识别等)
然后,在软件右下角点击连接,选择对应的串口点击OK就可以连接pc与开发板了
K210快速上手教程(色块、人脸、声源识别等)
这时,软件的左下角三角形箭头就会变成红色,单击的话会把文本种的代码在开发板中执行,但是断开连接的话会停止执行,因为这个按钮是在线执行代码的意思,如果没有bug的话就不会报错。
K210快速上手教程(色块、人脸、声源识别等)

关于软件的菜单栏,这里我只介绍一些不好的工具,大家不用担心其他菜单栏。如果你想深入学习,你也可以去看看。

[En]

With regard to the menu bar of the software, I only introduce the bad tools here, and you don’t have to worry about other menu bars. If you want to study deeply, you can also take a look at it.

K210快速上手教程(色块、人脸、声源识别等)
首先,根据自己的开发板在选择开发板处选择对应的开发板,如果是pyAI-K210 的开发板,因为串口驱动芯片跟 Maix 的 DOCK 接近,因此可以在选择 Dock。
然后是第二行”将打开的脚本发送到开发板的boot.py”,这个选项在开发板连接到pc后会变得可选,意思是把文本中的代码保存到开发板中,这样的话即使断开pc与开发板的连接,只要供电,就可以执行在上面保存的代码。注意,新保存的代码会覆盖旧的代码。
在这里我给出一个点亮led的代码
from Maix import GPIO
from fpioa_manager import fm

fm.register(12, fm.fpioa.GPIO0)

LED_B = GPIO(GPIO.GPIO0, GPIO.OUT)
LED_B.value(0)

你可以将这段代码复制到软件中,注意要删除原代码,然后点击绿色三角形即可运行,效果如下

[En]

You can copy this section of code into the software, note that the original code should be deleted, and then click on the green triangle to run, the effect is as follows

K210快速上手教程(色块、人脸、声源识别等)
如果是其他开发板,只需根据原理图中对应的管脚修改代码的第三行即可。
[En]

If it is another development board, just modify the third line of the code according to the corresponding pin in the schematic.

识别色块并且串口输出最大色块中心坐标

import sensor,lcd,time,image
from machine import UART,Timer
from fpioa_manager import fm

fm.register(15, fm.fpioa.UART1_RX, force=True)
fm.register(17, fm.fpioa.UART1_TX, force=True)

uart = UART(UART.UART1, 115200, read_buf_len=4096)
uart.write('Hello world!')

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1)
lcd.init()

thresholds = [(30, 100, 15, 127, 15, 127),
(30, 100, -64, -8, -32, 32),
(0, 30, 0, 64, -128, -20)]

while True:

    img = sensor.snapshot()
    blobs = img.find_blobs([thresholds[2]])
    if blobs:
        for b in blobs:
            tmp=img.draw_rectangle(b[0:4])
            tmp=img.draw_cross(b[5], b[6])
        max_blob=find_max(blobs)
        output_str="[%d,%d]" % (max_blob.cx(),max_blob.cy())

        uart.write(output_str+'\r\n')

    lcd.display(img)

def find_max(blobs):
    max_size=0
    for blob in blobs:
        if blob.pixels() > max_size:
            max_blob=blob
            max_size = blob.pixels()
    return max_blob

大家注意yellow_threshold = (65, 100, -10, 6, 24, 51) 这个赋值语句,大家要把期望识别的颜色的lab值填写到这里,就可以识别对应的颜色了。

该代码的功能是:当摄像头无法识别色块时,串口将不会有输出。当颜色块被识别时,最大颜色块的坐标信息将使用115200的波特率通过串口1传输(串口、波特率和对应的引脚都可以修改)

[En]

The function of the code is: when the camera does not recognize the color block, the serial port will not have output. When the color block is identified, the coordinate information of the largest color block will be transmitted through serial port 1 using a baud rate of 115200 (serial port, baud rate and corresponding pins can all be modified)

fm.register(15, fm.fpioa.UART1_RX, force=True)
fm.register(17, fm.fpioa.UART1_TX, force=True)

这两句代码即是修改串口的tx与rx引脚。其他的代码可以不用去理解,直接用就好了,毕竟本文就是为了快速入门而实现某个特定功能的,想要学习的话是需要先入门学习python的哦。这时候,就可以把这两个引脚连接到单片机,设置波特率为115200就可以实现坐标的接收啦!

声源方向的坐标识别

从亚马逊的 Alexa、 google 智能音箱到国内的天猫精灵、小爱同学等智能音箱都有一个共同的功能,那就是声源定位,其原理是利用多个分布在不同方向的麦克风阵列采集声音,进而定位声源的位置。
麦克风阵列扩展模块由 7 个数字麦克风组成,其中 6 个分布在四周不同方向, 1 个在模块正中央,便于识别各个方向声源。另外 12 个 LED 指示灯,方便指示声源位置。

'''
实验目的:通过麦克风阵列编程实现声源定位,并在LCD上显示。
'''

from Maix import MIC_ARRAY as mic
import lcd

lcd.init()
mic.init()

while True:

    imga = mic.get_map()

    b = mic.get_dir(imga)
    a = mic.set_led(b,(0,0,255))

    imgb = imga.resize(160,160)
    imgc = imgb.to_rainbow(1)

    lcd.display(imgc)

mic.deinit()

效果如下,能够检测刮胡刀转动的声音并且在lcd上显示位置与声音大小(拍摄效果不好请见谅)

K210快速上手教程(色块、人脸、声源识别等)

基于MicroPython的人脸识别

我们来简单介绍一下 K210 的 KPU。 KPU 是 K210 内部一个神经网络处理器,它可以在低功耗的情况下实现卷积神经网络计算, 实时获取被检测目标的大小、坐标和种类,对人脸或者物体进行检测和分类。
KPU 具备以下几个特点:
➢ 支持主流训练框架按照特定限制规则训练出来的定点化模型
➢ 对网络层数无直接限制,支持每层卷积神经网络参数单独配置,包括输
入输出通道数目、输入输 出行宽列高1320
➢ 支持两种卷积内核 1×1 和 3×3
➢ 支持任意形式的激活函数
➢ 实时工作时最大支持神经网络参数大小为 5.5MiB 到 5.9MiB
➢ 非实时工作时最大支持网络参数大小为(Flash 容量-软件体积)
简单来说就是 KPU 能加载和运行各种现成的 AI 算法模型,实现各种机器视
觉等功能。
MaixPy 中人脸识别本质是目标检测,主要通过在 K210 的 KPU 上跑 YOLO
(You Only Look Once)目标检测算法来实现。 我们来看一下 KPU 在 MaixPy 下的用法。


import sensor,lcd,time
import KPU as kpu

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)

lcd.init()

clock = time.clock()

task = kpu.load("/sd/facedetect.kmodel")

anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)

a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)

while(True):
    clock.tick()
    img = sensor.snapshot()
    code = kpu.run_yolo2(task, img)

    if code:
        for i in code:
            print(i)
            b = img.draw_rectangle(i.rect())

    lcd.display(img)

    print(clock.fps())

人脸识别不是靠代码就能实现的,还需要模型库。例如,新生儿不会认识他或她的父母,但会通过后天学习将他们一步步储存在他的脑海中。最后,父母可以在许多人中被认出。机器也是如此。你必须给他一个知识库(模型),让他知道什么是脸。

[En]

Face recognition can not be realized with code, but also needs a model library. for example, a newborn baby will not know his or her parents, but will store them in his mind step by step through acquired learning. finally, parents can be identified among many people. The same is true of machines. You have to give him a knowledge base (model) to let him know what a face is.

我已经打包了k210的开发软件以及模型库打包上传到csdn了免费的。
首先找到后缀名为kfpkg的文件然后再使用 K210 固件烧录工具烧录直接烧录该文件即可

K210快速上手教程(色块、人脸、声源识别等)
实验效果演示
K210快速上手教程(色块、人脸、声源识别等)
我对比了一下树莓派实现的人脸识别:
K210快速上手教程(色块、人脸、声源识别等)
发现识别效果是差不多的。

(博客还未写完,其他功能后续更新噢)

Original: https://blog.csdn.net/small_po_kid/article/details/113762110
Author: Smalld_cat
Title: K210快速上手教程(色块、人脸、声源识别等)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10568/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部