分享

[人工智能]使用Mx_yolov2模型训练器来进行图像分类的模型训练

 beginnow1 2020-07-29
Maix可以通过机器学习训练出来的模型来进行物体识别,图片分类;这一切前提是要拥有一个模型文件来让Maix进行识别预测,如果你体验过官方提供的人脸识别模型,或者20种物体分类的模型,相信你一定想过如何根据自己要检测的物体来训练属于自己的模型。如果从零开始训练一个模型,那对于任何一个非专业的人来说,会是一个非常漫长的过程。
现在,无论是学生还是老师都可以使用Mx_yolov2模型训练器来训练你自己的模型,训练模型的过程会变得非常简单。
先来看看训练出来的模型效果:

戴口罩检测(物体检测)

花卉分类(图像分类)

当然除了这些物体,身边的其他物体也可以进行检测、分类。你只需要准备好给机器学习的学习资料(数据集)给机器一些时间,机器也能学会如何去识别你需要识别的对象。
本次教程就先来学习如何训练图像分类模型,物体检测模型将在下个教程分享。
接下来进入正题:
01

下载软件、配置环境

首先你需要下载软件压缩包,关注公众号,并发送信息“Mx”到公众号,即可获得下载地址。

下载后,将压缩包解压缩(注意:文件夹所在位置不能包含中文、空格;建议放在硬盘根目录,如D盘目录下)
解压缩后你将看到如下的文件夹目录:

打开"使用前配置"文件夹,首先你需要安装Python 3.7.4版本软件(因为训练使用到Tensorflow 1.15版本,最新的Python 3.8.2不能安装1.15版本的Tensorflow),安装时注意要勾选 ☑Add Python 3.7 to PATH ,接下来的安装过程也很简单,直接点击Install Now即可。

安装完后,你还需要安装一些必要的Python库及一些配置,在这里提供了一键配置的小程序(配置时需要网络)。
当出现修改成功字样,说明你的环境配置已经完成了。

02

准备你的训练数据集

机器要学会如何识别物体之前,需要对一些样本进行学习,就好像小时候学习认字一样,需要课本、需要有人告诉你这个字是怎么读,怎么写,在不断的练习与训练中,你就能学会写字,读书。
准备数据集分为两种,首先你要确定你是需要进行物体识别、追踪,还是进行图像分类;
那么怎样确认你是需要训练哪一种模型呢?
如果你需要获得图像中某个物体的位置,大小等信息,将物体提取出来,那么你就需要物体识别;
(物体识别会在检测的目标周围画一个框将目标框选出来)
如果你只是需要判断图像中的物体是什么,那么你就需要图像分类
(图像分类会将图像最可能的种类区分出来)

图像分类的数据集预处理

1、拍摄你需要识别的每一种类物体大概60张以上的照片,每种物体一个文件夹,并用英文给这些文件夹命名。如下图的花卉分类数据集结构

2、打开Mx_yolov2软件,点击Image_tool进行图像预处理
选择你刚才建好的分类数据集,Image_tool将会把所有的图片处理成像素为(224x224)的图像,同时在原来文件所在目录将会出现一个名称中带有_out的文件夹(如图)
3、接下来从处理后的图像中,挑选出每种物体总图片数量10%~20%的照片数量,以同样的文件夹将他们分类(如下图)
如在Mx_yolov2\datasets\MobileNet\flower\valid目录下的结构
你可以查看Mx_yolov2\datasets\MobileNet\目录下已经处理好的数据集;不难发现,数据集分为两个文件夹,一个叫做train、一个叫做valid;他们分别是机器学习中的训练集(train)以及验证集(valid);到此,你的图像分类数据集就准备好了

03

调整训练参数

打开Mx_yolov2软件,选择图像分类模式,并选择“2-参数设置”选项卡(如下图)
在这里你要设置分类的标签(也就是分类物体的名字,要和的的文件夹命名相同)、训练的总类数、选择你准备好的训练集路径、测试集路径、Batch_size(单次训练用的样本数)、迭代次数。
当你设置完后,点击保存设置文件,设置文件以json格式保存在Mx_yolov2\configs中。

04

开始训练!

选择开始训练选项,并导入刚才保存的设置文件,并点击开始训练,训练时终端会显示如下画面;
你会注意到训练时终端中的一些重要参数:
▪Epoch --迭代的次数/总次数
▪loss--损失函数(越低,说明训练的模型越好,但也不是越低越好,过低的话就会出现过拟合,你需要适当的降低迭代次数,一般正常的训练模型loss会在开始的几次迭代中快速的收敛变小)
当在迭代次数达到后并且终端也没有信息滚动,操作信息栏中出现”训练结束“信息之后,你可以在Mx_yolov2文件夹下发现多出两个文件,分别是MobileNet.h5、MobileNet.tflite;这就是你训练好的模型文件。
首先h5模型文件是你最初训练出来的模型文件,它可以在你的计算机上进行部署并识别;tflite模型文件是h5文件经过Tensorflow Lite转换得到的模型文件;它能够更好的部署到小型设备上,例如Maix、手机。

05

转换模型

你会发现你训练出来的模型文件是tflite模型文件,然而Maix上需要使用后缀名为kmodel的模型文件;所以你需要使用工具将模型文件进行转换。
在GitHub上的开源项目NNCase,它能很好的将你的模型文件进行转换,一开始它是一个命令行工具,为了方便使用我已经为它写了一个Gui的界面。你可以在Mx_yolov2的训练界面找到打开它的按钮(如下图)
在打开的NNCase 0.1.0 Qt软件界面,选择你需要转换的模型文件、模型输出保存的地址以及至少含有3张训练图片的文件夹;点击转换按钮,当出现模型转换成功字样,即可在刚才保存的模型的位置找到你的kmodel模型。(如下图)

05

部署模型到Maix上

你需要使用Kflash工具将模型下载到Maix的内存中,Kflash软件你可以在Mx_yolov2文件夹中找到。
注意打开文件按钮前的0x300000,这是模型下载到内存中的地址,等会在代码中加载模型时要用到。
上传完毕之后,你需要使用MaixPy IDE为Maix来编写一个脚本,它的程序如下:(你也可以在Mx_yolov2的文件夹下找到boot.py)
这里注意:标签名称要和你训练时的标签名称顺序相同,kpu加载的内存地址就是你刚才上传模型的地址。
接下来运行程序~使用你的Maix尽情的进行图像分类吧~

06

结语

Mx_yolov2是一个刚开始的项目,也许软件使用过程中会出现一些BUG;说实话它没有经过太多的测试,我对自动化测试并不熟悉,如果你在使用过程中出现任何BUG或者有什么建议可以随时联系我 :)
我的微信/QQ:649756903
邮箱:649756903@qq.com

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多