← 返回首页
K210实现人脸识别
发表时间:2024-11-05 10:08:21
K210实现人脸识别

1.安装固件

首先我们先确保有ch340的驱动,随后在官方文档中下载固件,这个固件的网址是github的所有这里贴出百度网盘的链接(1.8.1版本) https://pan.baidu.com/share/init?surl=TH8AIPuob8Hp_d47tZgZjw 提取码:5k39

k_falsh下载网址: https://github.com/sipeed/kflash_gui/releases

2.安装MaxiPy IDE

我们下载Maixpy ide,这个网站可以下载ide官网下载地址。速度还是可以的。下载地址:

https://dl.sipeed.com/shareURL/MAIX/MaixPy/ide/v0.2.5

IDE配置:打开软件点击工具选择开发板就行。

3.人脸识别

人脸识别是需要刷入人脸识别的固件的,人脸识别的固件下载地址:

https://dl.sipeed.com/shareURL/MAIX/MaixPy/model

需要用kflash_gui把固件烧录进去。

这是用的是0x600000的地址,还有一个0x300000的地址,官网提供的案例是使用了0x300000的地址,这个一定要注意。等他下载完成以后我们打开ide在ide中放入官方例程。

import sensor, image, lcd, time
import KPU as kpu
import gc, sys

def lcd_show_except(e):
    import uio
    err_str = uio.StringIO()
    sys.print_exception(e, err_str)
    err_str = err_str.getvalue()
    img = image.Image(size=(224,224))
    img.draw_string(0, 10, err_str, scale=1, color=(0xff,0x00,0x00))
    lcd.display(img)

def main(model_addr=0x300000, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False):
    try:
        sensor.reset()
    except Exception as e:
        raise Exception("sensor reset fail, please check hardware connection, or hardware damaged! err: {}".format(e))
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    sensor.set_hmirror(1)
    sensor.set_vflip(1)
    sensor.run(1)

    lcd.init(type=1)
    lcd.rotation(lcd_rotation)
    lcd.clear(lcd.WHITE)

    anchors = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
    try:
        task = None
        task = kpu.load(model_addr)
        kpu.init_yolo2(task, 0.5, 0.3, 5, anchors) # threshold:[0,1], nms_value: [0, 1]
        while(True):
            img = sensor.snapshot()
            t = time.ticks_ms()
            objects = kpu.run_yolo2(task, img)
            t = time.ticks_ms() - t
            if objects:
                for obj in objects:
                    img.draw_rectangle(obj.rect())
            img.draw_string(0, 200, "t:%dms" %(t), scale=2)
            lcd.display(img)
    except Exception as e:
        raise e
    finally:
        if not task is None:
            kpu.deinit(task)


if __name__ == "__main__":
    try:
        main( model_addr=0x300000, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False)
        # main(model_addr="/sd/m.kmodel")
    except Exception as e:
        sys.print_exception(e)
        lcd_show_except(e)
    finally:
        gc.collect()