K210学习笔记(7-机器视觉3)

一、模型训练与使用:

        软件准备:

                图像处理:image_tool软件,用来完成对于图像的批量修改

软件提取码:        链接:https://pan.baidu.com/s/1KlkO6lmtl5w2Go2mEX_Dbg?pwd=jxfg 
                              提取码:jxfg

                labelimg:这个自求多福,跟着别人的下载教程走就行。。。

                        用来对图像进行标注。

        

        实操:

                首先在桌面新建一个文件夹,文件名称为practice(这个无所谓,按自己喜好,但确保是英文),在文件内部建立要训练的对象,这次命名为blob文件夹,在blob文件夹下再建立两个文件夹,命名为images和xml,再建立一个text文本,命名为labels。

                然后打开,image_tool软件,将拍摄好的图片导入,如下图所示。

                 完成后,再blob文件夹下方会多出一个文件夹,名字为images_out,保留该文件,将源文件删除,并将该文件夹重命名为images

                下一步,打开labelimg(打开方式再cmd中输入labelimg即可打开)。

                然后点击,change save dir项,选择我们创建的xml文件夹,然后点击open dir,选择images文件夹,便可以开始进行对图像进行标注(完成后的页面如上所示),再打开view,选择auto save mode(自动保存)。 

                 下面来对,labelimg的操作进行一些讲解(本人也仅是初学,如有不对欢迎指出)

                1、w按键,为绘制按键,把想要识别的区域框出,如下图所示

 2、按下D键,移入下一张,继续上述操作,完成所有的标注。完成后xml文件夹如下图。

 3、打开labels(标签)文件(就是创建的text文本),在里面输入我们标注的标签,如我标注了blue_true和red_true两类,则只用输入这两种即可。当然,不同标签用换行符(enter键)隔开。

 4、打开Maixhub网站创建训练项目(一般选择图像检测,它能将被检测目标框选出来并得出物体类别和坐标)

 5、创建完成之后准备数据集。

 点击去准备数据集,再点击创建数据集

 点击导入数据集,出现下图所示的界面,因为是传递压缩包,所以将整个文件夹进行压缩

 

 

然后点击开始上传,可以看到这样就是已经上传成功。

 

 完成所有之后,回到模型训练(之间点击就可以)找到你创建的任务,导入刚刚创建的数据集,然后点击创建任务,如下选择(图像增强那边我是顺便随便钩了的。。。因为我觉得多点总没错哈哈哈,选择模型那边,因为我们要下载到K210所有选择nncase部署平台,训练参数那边也都全钩上了,虽然不知道有什么用) 

 

训练完成之后如下图所示,loss好像是损失,acc是准确度变化,训练的结果其实看val_acc即可。

 下一步开始部署模型,点击手动部署->下载模型即可

 然将该压缩包解压,上传到sd卡,K210插入sd卡不会显示,要将文件放入,需要准备一个读卡器。

 

 然后将main.py文件中的文本复制到Maixpy中运行便可。(复制的时候用文本打开会比较块)这里面可能会有各种报错,当发现是什么fm未声明啊,UART为声明啊,点开main.py将这些模块导入便可。具体可看我前面几篇文章,固件的话烧录maixpy_v0.6.2_85_g23d09fbcc_openmv_kmodel_v4_with_ide_support,这个。

下载站 - Sipeed在这下载。

另外,记得在sensor设置那块把镜面翻转打开,镜像关闭,不然画面会很奇怪。。。

 识别率低可能是没开灯。。。还有模型训练数据集比较少,各位可以自行尝试。以及我没有开起矫正导致有圆筒畸变之类的。。。

在用模型的时候出现了挺多奇怪问题的,比如突然显示我SD卡没有挂载,但是我之前时使用的时候是可以用的,后来发现是SD卡槽有点松,一会能识别一会不好识别,然后就换了一个新的板就啥事也没有了。

二、KPU(作为了解-为什么,因为来不及仔细学完)

        基础知识:

                    K210的KPU是内部的一个神经网络处理器,它可以在低功耗情况下实现卷积神经网络计算,实时获取被检测目标的大小、坐标和种类,对人脸或者物体进行检测和分类。

                        一些特点:

                                ·  支持主流训练框架按照特定限制规则训练出来的定点化模型;

                                · 对网络层数无直接限制,支持每层卷积神经网络参数单独配置,包括输入输出通道数目、输入输出行宽列高;

                                · 支持两种卷积内核 1x1 和 3x3;

                                · 支持任意形式的激活函数;

                                · 实时工作最大支持神经网络参数大小为5.5MiB到5.9MiB;

                                · 非实时工作时最大支持网络参数大小为(Flash 容量-软件体积)

简单来说KPU就是能够加载和运行各种现成的AI算法模型,实现各种机器视觉等功能。目标检测时通过在K210的KPU上跑YOLO(You Only Look Once)目标检测算法来实现。

                                

                                构造函数:

                                                import KPU as kpu:

                                                功能:常用的KPU模块导入方法。

                                

                                使用方法:

                                                kpu.load(offset or file_path):

                                                功能:加载模型;

                                                · offset :模型存放在flash的偏移量,如0x300000(可以联合maixhub上的手写数字识别那个官方模型来进行联系);

                                                · 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网络对象。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你好!感谢提问。下面是有关 K210 学习笔记五中串口通信的一些内容: 在 K210 开发板上,串口是一种常见的通信接口,用于将数据从一个设备传输到另一个设备。串口通信通常使用 UART (Universal Asynchronous Receiver/Transmitter) 协议。 要在 K210 上进行串口通信,首先需要使用两个引脚:一个用于接收数据(RX),一个用于发送数据(TX)。这些引脚可以通过 GPIO 端口与外部设备连接。 在 K210 的开发环境中,可以使用 MaixPy 或者 Kendryte Standalone SDK 进行串口编程。 在 MaixPy 中,可以使用 `uart` 模块来进行串口通信。例如,要初始化一个串口对象并设置波特率为 115200,可以使用以下代码: ```python from machine import UART uart = UART(UART.UART1, 115200) ``` 然后,可以使用 `uart.write()` 函数发送数据,使用 `uart.read()` 函数接收数据。例如: ```python uart.write("Hello, world!\n") data = uart.read(10) ``` 在 Kendryte Standalone SDK 中,可以使用 `uart.h` 头文件中的函数来进行串口通信。例如,要初始化一个串口对象并设置波特率为 115200,可以使用以下代码: ```c #include "uart.h" uart_init(UART_DEVICE_1, 115200); ``` 然后,可以使用 `uart_send_data()` 函数发送数据,使用 `uart_receive_data()` 函数接收数据。例如: ```c uart_send_data(UART_DEVICE_1, "Hello, world!\n", 14); char buffer[10]; uart_receive_data(UART_DEVICE_1, buffer, 10); ``` 以上是关于 K210 学习笔记五中串口通信的简要介绍。如果你有更具体的问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江弦凤歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值