使用Mx_Yolo_v3训练K210模型文件
使用Mx_Yolo_v3训练K210模型文件
Aciano一、功能介绍
目前提供两种训练:
- 目标分类: 识别图片所属的种类, 比如图中是苹果还是杯子, 没有坐标。 如下图,识别到了苹果,是苹果的概率为0.8
- 目标检测: 检测图片中物体的位置, 并且输出这个物体的坐标和物体大小(即框出认识的物体)。 如下图, 识别到了苹果, 并且框出了位置, 是苹果的概率为0.8
二、确定方案
首先确定要训练哪种模型。
在上面支持的模型中选择一个,如果不需要检测物体坐标, 用目标分类, 需要坐标则目标识别,
两者处理数据要做的工作和格式都不一样, 后者会复杂很多。确定分类。 包括分类数量, 具体分类。 比如这里以识别红色小球和玩具为例:
所以共两个分类: ball
和 toy
, 我们也称之为标签(label)
,
注意!分类名(标签/label)只能使用英文字符和下划线
- 确定分辨率。 图片的分辨率也十分重要,不管是在采集、训练,还是使用时, 都需要十分注意, 稍不注意,模型可能就无法使用或者识别精度低。
以下为Maixhub目前支持的分辨率,其它分辨率将会训练失败:
目标分类、目标检测: 224x224
(推荐)
确定采集数据集(这里就是所有图片的统称)数量。 即确定好每个分类的图片数量,方便后面采集图片快速准确进行,
三、获取,处理数据集
1.采集数据
图片数据的采集可以使用任意的图片采集工具。某些特定的图片数据,可能需要用k210主控板的摄像头来拍摄,这样数据使用会比较准确。
手机拍照, 然后使用预处理工具处理成需要的分辨率
可以使用网络爬虫在网络上按名称爬取图片,在Mx_yolo_v3的“工具集”菜单中,使用图片爬取工具可以爬取需要的照片。
注:要把无效图片去除,否则会影响训练!
得到图片数据后,将其导入电脑:
2.处理图片分辨率
打开Image_tool.exe
软件,看到以下界面,点击选择图像文件夹...
,选择存放采集照片的文件夹,设置分辨率为224*224
。
等待处理完毕后,即可得到224*224
分辨率的图片:
3.对图片进行更名
打开 拖把更名器 文件夹中的xTools.exe
点击菜单栏中的序号
,接下来按照下图步骤操作即可:
应用更改后即可得到按照序号排列的文件名:
4.标注图片
此步骤仅
目标检测
需要操作!
目标分类
可跳过此步骤。
新建一个mask
文件夹,里面新建images
和xml
文件夹,将先前处理好的图片数据丢入images
文件夹。
打开LabelImg
软件:
- 更改图片所在文件夹;
- 更改标签所在文件夹;
- 点击
Create RectBox
进行标注; - 在图片上拖选出需要识别的标注部分;
- 输入
标签/label
名,点击OK; - 点击
Save
保存; - 点击
Next Images
标注下一张图片;
到此数据集的处理和准备工作完毕,接下来就可以开始训练模型了!
四、训练模型
1.目标分类
1.1 线上Maixhub平台
打包数据集
将数据集按以下分支保存,
并将其压缩为zip
文件:
1 | datasets.zip |
压缩文件命名为datasets.zip
,注意大小不要超过20MB。
训练过程
打开Maixhub注册地址:https://www.maixhub.com/register,注册一个账号:
注册成功后记得去邮箱激活账号。
回到首页,点击网页顶部的模型训练
选择物体分类
,点击 Next :
上传前面打包好的数据集:
上传完成后点击Submit
,之后耐心等待即可:
等待一段时间训练完成后,来到此界面,点击 Download 下载训练好的模型文件:
下载回来得到以下文件,将其全部丢入K210板的sd卡中,上电之后即可实现简单的目标分类功能:
1.2 线下Mx_Yolo_v3训练
保存数据集
将数据集按以下分支保存,
线下训练无需打包为压缩包。
1 | images |
进行训练
打开Mxyolov3
,点击图像分类
点击选择
,选取到刚才调整好的images
文件夹,再点击提取
,此时正常来说可以显示出你的各label名称,比如我的是apples,bananas
。
其他配置参数可以保持默认无需更改,如果需要更高的识别率可以调整训练次数的多少。
点击开始训练,耐心等待一段时间即可。
跑完训练过程后,会出现两个结果图,关闭即可,等待信息栏出现over,end等字样即代表训练过程完成,会自动弹出存放模型文件的文件夹。
需记录下此文件夹路径,后面需要用到,一般在Mx_yolo安装目录下的
Model_file
文件夹中。
测试模型
点击右上角的测试模型
,选择刚才训练完毕后弹出的文件夹中的weights.h5
文件,得到以下结果。
可以看到有关苹果的图片被标注上apples,说明模型可以正常使用。
转换模型
Mx_yolo_v3中训练出的模型无法直接在K210板上使用,需要转换为kmodel文件,
在软件中内置了模型转换软件,点击右上角的转换模型
,进入以下界面:
- 模型输入路径选择刚才弹出的
Model_file
文件夹下的weights.tflite
文件; - 模型输出路径选择你需要导出的文件所在路径;
- 量化图片路径选择你的图片数据集。
转换成功后即可放入sd卡在K210板中运行。
2.目标检测
1.1 线上 Maixhub 平台
打包数据集
新建一个labels.txt
, 输入标记的标签, 每行一个, 比如这里:
1 | ball |
这是必须的, 否则数据会无效。
然后目录结构如下:
1 | datasets.zip |
或者两级labelimg输出:
1 | datasets.zip |
训练过程
目标检测与目标分类的线上训练过程完全相同,仅需更改为对应模式即可,
参考四、 1. 1.1 训练过程
处步骤即可。
1.2 线下 Mx_yolo_v3 训练
打开软件,选择目标识别
- 选择网络为
Yolov2-K210
; - 训练图片地址选择为你图片训练集的路径;
- 训练标签地址选择为你为图片标注后保存的xml文件路径;
- 点击
自动提取
,将提取出种类名称,即label; - 点击
计算
,将自动计算出锚点,即author,后面会用到。 - 其他配置可保持默认不变,建议取消勾选数据校验,容易闪退。
点击开始训练
即可;
等待训练完成后会出现类似于目标分类后的曲线图,关闭后再稍等片刻即可。
模型转换
此步骤与前面大同小异,参考四、 1. 1.2 测试模型、转换模型
处步骤。
五、上传程序
目标分类
使用以下代码:
- 需要在代码15行及70行修改引用的kmodel文件:
model_addr="/sd/fruit.kmodel"
- 需要在代码68行修改你的label名:
labels = ["apples", "bananas"]
1 | import sensor, image, lcd, time |
目标检测
根据实际情况修改即可:
六、出错问题
1.内存不足
1 | SYSCALL: Out of memory |
解决办法:刷mini固件,下载地址
2.锚点错误
1 | File "main.py", line 30, in <module> |
此问题为使用目标分类模型,但没有使用到锚点所报的错。
解决方法:参考上文提供的代码,使用Python纯代码编写程序。
3.转换失败
解决方法:无,更换电脑重试。
七、下载资源
Mx_Yolo-v3安装包:https://www.aliyundrive.com/s/Vknz8mtKqMj
提取码zl04
mini固件:下载地址
其他软件及代码等文件:
可以在评论区留下邮箱,网盘多有空间及文件类型限制,分享过于麻烦。