▌00 整体内容
进入正文前,我们通过下方框图整体了解每个章节的内容,先大概了解每个章节做的工作是什么作用,这样有助于理解每个章节的内容。同学们可以参考以下章节内容训练模型,但这只是一个初级参考,相信有同学可以实现更好的模型和方法,最终也一定有强校、强队会在赛场上让大家惊艳,希望此篇入门教程能抛砖引玉,让我们在赛场上看到更多的惊艳时刻,我们拭目以待。
▌01 软件安装
1.1.操作系统版本确认
在安装配套的软件之前首先确认系统是否满足要求,操作系统必须是win7或者以上且必须是64位的系统。这里强烈建议大家使用win10 64位的版本。因为后面所有的讲解与演示都是基于win10系统。
1.2.安装python
使用提供的资料包,找到python-3.6.8-amd64.exe(务必使用这个版本的python)文件,双击文件开始安装,如下图所示 :
1、务必勾选Add Python 3.6 to PATH之后再点击Customize installation。
2、点击Next进入一下步。
3、点击Browse指定python安装目录,自己指定安装目录的好处在于当需要找到python目录的时候自己会比较清楚安装的位置,需要切记指定目录不能含有中文。
4、然后点击Install开始安装,直到安装完成。
1.3.安装pycharm
使用提供的资料包,找到pycharm-professional-2019.3.exe文件,双击开始安装,如下图
1、点击Next进入下一步
2、点击Browse指定pycharm安装目录,自己指定安装目录的好处在于当需要找到pycharm目录的时候自己会比较清楚安装的位置,需要切记指定目录不能含有中文。然后点击Next。
3、勾选64-bit launcher和Add launchers dir to the PATH,再点击Next。
4、然后点击Install开始安装。

1.4.更换pip安装源
在后续的使用中我们需要依赖一些工具包,我们将会通过pip在线安装工具包,但是由于默认的pip安装源速度很慢,因此我们需要对pip的安装源进行更换,切换为国内阿里的源提高安装速度。
1、打开资源管理器并打开C盘,然后点击图片中箭头所指的查看。
2、然后勾选上隐藏选项,这样我们才能找到我们需要打开的一个文件夹。
3、进入“用户”文件夹
4、然后选择自己的用户账号文件夹进入,这里我的账户名称是SEEKFREE因此我需要打开SEEKFREE文件夹。
5、依次打开AppData、Roaming文件夹。
6、在Roaming文件夹内新建一个文件夹并取名为pip,将资料包中的pip源切换压缩包中的pip.ini文件放入新建的文件夹中。到此pip源切换就完成了。
1.5.安装相关的包
提供的python代码用到了很多的包,因此为了保证代码能够被正确的运行我们需要将用到的包给安装好。
1、按下windows微标键+R按键,在左下角弹出的窗口中输入cmd,然后回车。在打开的命令提示符窗口中我们将会使用pip3命令来安装各种我们需要的包。
2、在命令提示符窗口中输入pip3 install scikit-learn==0.22.1并回车,等待安装完成。
3、在命令提示符窗口中输入pip3 install numpy==1.16.6并回车,等待安装完。
4、在命令提示符窗口中输入pip3 install tensorflow==1.14.0并回车,等待安装完成。
5、在命令提示符窗口中输入pip3 install keras==2.2.4并回车,等待安装完成。
6、在命令提示符窗口中输入pip3 install matplotlib==3.1.3并回车,等待安装完成。
7、在命令提示符窗口中输入pip install onnx==1.5.0并回车,等待安装完成。
8、在命令提示符窗口中输入pip install onnxmltools==1.5.0并回车,等待安装完成。
9、在命令提示符窗口中输入pip install Pillow==6.2.1并回车,等待安装完成。
10、在命令提示符窗口中输入pip install h5py==2.10.0并回车,等待安装完成。
11、在命令提示符窗口中输入pip install wheel==0.34.2并回车,等待安装完成。
12、在命令提示符窗口中输入pip install opencv-python==4.5.1.48,等待安装完成。
13、到此我们需要的一些包全部安装完成了,如果以后自己在学习时遇到了没有安装的包一样可以通过这样的方式来安装。
14、检查包版本,在桌面空白处按住shift右击鼠标选择Powershell,然后输入pip list并回车,查看自己的各种包版本是否与下图一致,如果不一致可能出现无法训练模型等问题。
其中重点关注h5py、Keras、matplotlib、numpy、scikit-learn、scipy、tensorflow、wheel这些包的版本是否与下图中一致,如果一致还是有问题,则尝试将其他不一致的包全部卸载使用指定版本的方式安装对应的包。
卸载包可以使用pip uninstall 包名,指定版本安装可以使用pip3 install keras==2.2.4,keras是需要安装的包名称,2.2.4是需要安装的版本。
1.6.安装Openmv IDE
使用提供的资料包,找到openmv-ide-windows-2.6.7.exe,双击即可开始安装。请务必使用资料包中提供的安装包进行安装,如果已经安装过Openmv IDE可以卸载后重新安装。
▌02 尝试模型训练
2.1.制作训练数据文件
训练模型之前,我们需要先采集数据然后才能开始训练模型,采集数据的手段一通过爬虫程序网上下载规则中指定的动物与水果的水平,爬虫程序虽然能很快下载大量的图片,但是也会下载到很多错误的图片,需要手动删除掉。手段二可以自己在网站上一张一张的下载下来,比较费时费力,手段三使用OpenART mini模块拍照并保存图片在sd卡。我们开源资料里面的图片就是用OpenART mini模块拍照并保存图片在sd卡上的。我们可以先行用资料里面的这些图片进行模型的训练,后期自己完善的时候可以加入更多的图片。
在提供的资料包中找到number_train_model压缩包解压,解压后得到如下文件。
Picture文件夹里面存放的是我们采集的数据,默认里面存放的是数字的图片(动物水果的模型制作使用animal_fruit_train_model压缩包,操作方式也是一样的)。然后将鼠标放在文件夹的空白处然后按下左shift按键+鼠标右键,然后点击“在此处打开Powershell窗口”。
在打开的Powershell窗口中输入python .\make_dataset.py,这个脚本会从Picture文件夹读取图片并转换为数据集,会生成x.npy和y.npy两个文件。如下图所示
执行python .\train.py语句之后会将会开始进行模型的训练,当acc增大的速度非常缓慢了可以使用ctrl+c提前结束训练,训练结束之后所有的模型都会存储在models文件夹内,使用的时候只需要使用序号最大的模型文件即可,例如示例里面使用model_11_0.9928.h5模型文件,其中11表示模型序号,我们使用序号最大的即可。
(这里介绍一款特别好用的模型查看工具Netron通过这个工具可以很方便的查看模型的结构,参数等,软件已经为大家下载好了,放在了“需要用到的软件”的压缩包中)。
2.2.模型量化
在提供的资料包中,找到seekfree-nncu_tool-master并解压,然后按照以下步骤顺序操作。
1、将训练后的模型文件model_11_0.9928.h5文件复制到nncu\nncu_pc文件夹。
2、转换后的npy文件x.npy、y.npy复制到nncu\datasets\f5c5文件夹。
3、双击nncu目录下的nncu_vbgui.bat文件,开始运行nncu软件。有可能会提示缺失.dll或者.ocx文件,可以尝试添加“seekfree-nncu_tool-master/缺失的dll”中的dll文件。需要确保软件的路径中没有中文,否则会出现错误。
4、在配置文件处点击“加载”,加载smartcar_vision.ini文件,如下图所示
5、点击左上角 选择模型文件 按钮,加载放入到nncu_pc中的.h5文件。
6、然后点击干活!按钮,之后会跳出后台转换脚本的命令窗口,稍候片刻会在nncu_pc目录下生成_1s_model_11_0.9928_xxxx.nncu模型执行文件。文件的名称是根据加载的.h5文件名称来命名的。称来命名的。
7、模型文件已经量化完毕,接下来我们量化之后的模型文件放入OpenART mini中跑起来。
2.3.OpenART mini运行模型测试
在“OpenART_mini”压缩包内提供了一些py和txt文件,主要演示如何使用OpenART mini调用量化之后的模型,如何使用OpenART mini拍照并保存,以及如何使用python代码控制OpenART mini的UART、GPIO、LED、PWM。
使用OpenART mini运行模型前需要按照以下步骤一步一步进行。
1、OpenART mini模块插入SD卡,然后将OpenART mini与电脑连接好。
2、将训练好的.h5文件以及OpenART_mini压缩包内的txt文件复制到SD卡根目录。
3、使用Openmv IDE打开find number.py文件,然后找到net_path = "_1s_model_06_0.9857_xxxx.nncu"语句,双引号中的字符串替换为自己的模型名称。
4、然后使用Openmv IDE连接模块并运行,识别到带黑框的数字后,即可通过串行终端界面看到提示数据。
▌03 训练自己的模型
训练自己的模型,操作步骤和上一个章节是一致的,主要的不同在于图片数据需要自己采集或者增加更多的图片,使得自己的模型更加的完善。
上一个章节是以训练识别数字的模型举例的,训练识别动物与水果的操作步骤也是一样的,不过使用的文件应该是animal_fruit_train_model压缩包里面的文件。
欢迎大家加入逐飞科技专门创建的AI群,给大家提供一个交流与沟通的环境,群号946236488。
▌04 有关AI组别链接
■ 智能车大赛AI视觉组参考答案
https://mp.weixin.qq.com/s/RQF8L41i6Z8YkMeiR4c5Bw
■ 视觉组仙人一步之模型量化
https://mp.weixin.qq.com/s/am4ahNvT9cBfIV8AQ4C2mA
■ 视觉组仙人一步之高级玩法——从Python回归C语言
<https://mp.weixin.qq.com/s/gUHCZXLM5WQXceIr2INAVQ >
■ 视觉组仙人一步之模型调优
https://mp.weixin.qq.com/s/1sDV6KkIx5w6ZlC5jxAuhQ