咸鱼K210体验笔记—物体检测

咸鱼K210体验笔记—物体检测

写在前面:本人非专业人员,仅为此类爱好者。分享一下新手在体验K210的过程。入门踩坑(各种跳坑),希望大佬帮忙填上一二~。(所选设备都是K210。都想体验一下。欢迎大佬指点。)因为之前有些硬件使用基础所以K210只使用视觉相关功能。

物体识别,是机器视觉里面非常典型的应用。要实现的就是将一幅图片里面的各种物体检测出来,然后跟已知模型做比较从而判断物体是什么。

构造函数

首先简单介绍一下 K210 的 KPU。KPU 是 K210 内部一个神经网络处理器,简单来说就是 KPU 能加载和运行各种现成的 AI 算法模型,实现各种机器视 觉等功能。 MaixPy 中人脸识别本质是目标检测,主要通过在 K210 的 KPU 上跑 YOLO(You Only Look Once)目标检测算法来实现。我们来看一下 KPU 在 MaixPy 下的 用法。

import KPU as kpu
#常用的 KPU 模块导入方法。

使用方法

函数 参数
kpu.load(offset or file_path) 加载模型。【offset】模型存放在 flash 的偏移量,如 0x300000;【file_path】模型在文件系统为文件名,如“xxx.kmodel”
kpu.init_yolo2(kpu_net,threshold,nms_value,anchor_num,anchor) 初始化 yolo2 网络;【kpu_net】kpu 网络对象【threshold】概率阈值;【nms_value】box_iou 门限;【anchor_num】描点数;【anchor】描点参数与模型参数一致。
kpu.run_yolo2(kpu_net,image) 运行 yolo2 网络;【kpu_net】从 kpu_load()中返回的网络对象;【image】从 sensor 中采集到的图像
kpu.deinit(kpu_net) 反初始化。【kpu_net】kpu 网络对象

参考地址:https://maixpy.sipeed.com/zh/libs/Maix/kpu.html

请按照以下步骤解锁物体识别(滑稽)

1.下载模型模型地址
在这里插入图片描述
下载
在这里插入图片描述
2.使用kflash浆把模型文件添加到开发板中,参数如下
在这里插入图片描述
3.下载成功就可以浪了
在这里插入图片描述
4.示例程序在01科技文件里也有:路径:示例程序——机器视觉——物体检测。

5.导入代码

#https://blog.sipeed.com/p/677.html (代码地址)
import sensor,image,lcd,time
import KPU as kpu

lcd.init(freq=15000000)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1)     #摄像头后置方式
sensor.run(1)
clock = time.clock()
#模型分类,按照 20class 顺序
#“飞机”、“自行车”、“鸟”、“船”、“瓶子”、“公交车”、“汽车”、“猫”、“椅子”、“牛”、“餐桌”、
#“狗”、“马”、“摩托车”、“人”、“土豆植物”、“羊”、“沙发”、“火车”、“电视监视器”
classes = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']

#需要将模型(20class.kfpkg)烧写到 flash 的 0x500000 位置
task = kpu.load(0x500000)
anchor = (1.08, 1.19, 3.42, 4.41, 6.63, 11.38, 9.42, 5.11, 16.62, 10.52)
#初始化 yolo2 网络,识别可信概率为 0.5(50%)
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
while(True):
    clock.tick()
    img = sensor.snapshot()
    code = kpu.run_yolo2(task, img)
    print(clock.fps())
    if code:
        for i in code:
            a=img.draw_rectangle(i.rect())
            a = lcd.display(img)
            for i in code:
                lcd.draw_string(i.x(), i.y(), classes[i.classid()], lcd.RED, lcd.WHITE)
                lcd.draw_string(i.x(), i.y()+12, '%f1.3'%i.value(), lcd.RED, lcd.WHITE)
    else:
        a = lcd.display(img)
a = kpu.deinit(task)

将代码保存到开发板的boot.py;保存成功我们就可以不用连数据线了。放个电池就能运行了在这里插入图片描述

实现效果
在这里插入图片描述

运行程序,准备 20class 里面相关的物体图片,可以看到 pyAI-K210 可以轻易地将相关物体识别出来。

发布了166 篇原创文章 · 获赞 22 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45020839/article/details/105092097
今日推荐