1. 概述

MNN 工作台图像分类训练模版用来产出图像分类模型,可以用来识别不同图片归属类目问题。目前 MNN 工作台内置 MNN 团队自行基于迁移学习优化FastTrainingCIs 模型。

2. 模型训练

2.1. 准备数据

MNN 工作台图像分类支持基于小样本的迭代式训练,一般来说,初次训练准备100 - 200张图片即可

数据准备工作中有几点注意事项,不符合训练数据格式会导致训练代码报错

  • 分类数据按照类别放在以类别名称命名的文件夹中,该路径下的所有文件即为训练数据。
  • 不能有嵌套式文件夹,MNN 工作台图像分类默认只识别一级目录下的图片作为训练数据。

训练数据支持 JPEG 和 PNG 格式的图片。

图1和图2 所示,该路径下有四个文件夹,分别代表animalflowerguitar以及houses四个类别。
每个文件夹中包含对应类别的数据。请选择这四个子文件夹的父文件夹
image.png

图例 1. 模型训练数据准备示例

image.png
图例 2. flower 分类文件夹中数据

2.2. 创建项目

  1. 打开 MNN 工作台,进入工作台主界面。

image.png
图例 3. MNN 工作台主界面

  1. 点击 Train a deep learning model,进入模型训练页面。

截屏2020-08-10上午10.07.09.png
图例 4. MNN 工作台模型训练模版选择界面

  1. 图片分类工程在 Image 分类下,点击Image栏,找到并点击Image Classifier

    首次/更新使用需联网,MNN 工作台会不定期更新最好用的训练模版

截屏2020-08-10上午10.10.06.png
图例 5. MNN 工作台图像相关训练能力模型展示

  1. (首次使用)需要下载 MNN 工作台图像分类训练模版,点击 Download 进行下载

image.png
图例 6. MNN 工作台图像分类模型下载

  1. 下载完成,点击 Next 进入项目配置页面,在Project Name上出入项目名称,比如MyImageClassifier,点击Next

截屏2020-08-10上午10.14.10.png
图例 7. MNN 工作台图像分类工程配置

  1. 选择目标文件夹,对工程进行保存。

截屏2020-08-10上午10.20.35.png
图例 8. MNN 工作台选择工程保存路径

  1. 点击Next,进入训练工程界面。工作台会自动配置训练环境,首次使用需联网加载相关配置,请耐心等候

截屏2020-08-10上午10.47.02.png
图例 9. MNN 工作台训练工程初始化

2.3 训练流程

MNN 工作台图像训练工程页面中存在两个配置模块:

  • Data Inputs,数据选择模块,主要进行数据相关操作。
    • Training Data,选择训练数据集。
    • Validation Data,选择验证数据集。可选
    • Testing Data,选择测试数据集。可选
  • Parameters,参数设置模块,用于调节模型训练的相关参数。

点击Training Data中的Select Files,选择训练数据所在的文件夹。工作台会自动读取该文件夹下的数据,并显示类别数目。
截屏2020-08-10上午11.35.33.png
图例 10. MNN 工作台训练工程数据集选择界面

参数项:

  • Max Iteration,所选数据需要迭代的次数,系统给了一个默认值20。用户可以根据自己的需求去调节大小,一般该值越大,训练所消耗的时间越久,模型对训练数据的拟合程度越高。
  • Quantization,是否进行模型量化。工作台默认进行模型量化,模型在训练结束后会进行量化,能够减少模型大小近4倍

点击Train按键,模型开始训练。
截屏2020-08-10上午11.41.58.png
图例 11. MNN 工作台训练中

页面会显示训练进度条,等待一段时间。当训练完成时,会显示训练结果页面。
截屏2020-08-10下午8.02.18.png
图例 12. MNN 工作台训练 Training Loss 图形化界面

该页面主要有数值栏和下方的图表栏:

  • 数值栏,展示的最终模型的状态,分别训练结束时模型在训练集损失数值,在验证集上的准确率以及模型大小。
  • 图表栏,展示训练过程中一些与训练相关的数据变化趋势。

对于上方Tab页中的Training项,数值0.00表示训练完成时,模型在训练数据集上面的损失数值。

损失数值越低表示模型对训练数据集拟合的越好.

下方图表栏显示的是在模型训练过程中损失值的变化曲线。图中该曲线后段比较平稳,表示模型对训练数据集拟合的比较充分。

点击Validation项,展示模型在验证集上的准确率:
截屏2020-08-10下午8.05.40.png
图例 13. MNN 工作台训练 Validation 图形化界面

图中tab页Validation项数值表示该模型在验证集上面的准确率为100.0%。

准确率高表示模型的泛化能力不错。 下方图表显示在训练阶段,验证集上准确率的变化虚线。

3. 模型输出和测试

3.1. 模型输出和单项测试

  1. 点击上方 tab 页的Output项,进入以下界面:
  • Output项中显示当前模型大小(如下图中为1.6MB)。
  • 右侧信息栏显示当前模型的详细信息截屏2020-08-10下午8.06.22.png

图例 14. MNN 工作台训练结果界面

  1. 将测试图片拖入左边栏,点击图片,即可显示预测结果。该示例表示当前图片的类型为 animal,置信概率为99.99%。

截屏2020-08-10下午8.07.47.png
图例 15. MNN 工作台训练结果所见即所得验证界面

3.2. 批量测试

MNN 工作台也提供了批量测试的功能,点击tab页的Testing项,进入以下界面:
截屏2020-08-10下午12.52.52.png
图例 16. MNN 工作台批量结果验证界面

  1. 点击Select,选中需要测试的图片所在文件夹,文件夹中支持jpgjpegpng格式的图片。点击Test Model开始测试,页面显示测试进度条。

截屏2020-08-10下午12.54.26.png
图例 17. MNN 工作台批量结果验证中

  1. 测试完成后,测试结果以表格形式展示。
  • Class列,该图片的预测分类。
  • Probability列,该分类对应的预测概率。
  • File列,图片的地址。点击地址打开图片所在的文件夹。

截屏2020-08-10下午12.55.14.png
图例 18. MNN 工作台批量验证结果

  1. 点击行左侧的灰色箭头,展开显示图片内容。

截屏2020-08-10下午12.56.54.png
图例 19. MNN 工作台批量验证结果详细信息

3.3 Try in Playground

MNN 工作台图像训练模版在训练完成得到 MNN 模型后,可以通过点击训练结果界面的 Try in Playground 进入三端一体的 Playground 体验环节。具体请阅读4.1 Playground 整体介绍
截屏2020-08-10下午8.06.22.png
图例 20. MNN 工作台结果页 Try in Playground

4. 迭代式训练

可以通过 MNN 工作台打开一个已有的工程,继续优化迭代之前的训练结果。

在首页主页面中点击open an existing project,选择之前保存的工程文件。
image.png
图例 21. MNN 工作台主界面

点击打开,就可以直接进入工程界面,如下图所示,根据需求再进行操作。

  • 可以在已经得到训练结果的基础上,继续迭代,增加更多的训练数据和迭代次数,增加模型的学习和泛化能力,让模型对于图像的分类结果判断更准确。

  • 可以点击左上角 + 号按钮,创建一个全新的训练流程,与之前的流程完全独立。

截屏2020-08-10下午2.10.38.png

5. 模型优化小窍门

如果在训练完成后,发现模型存在一些误分类的情况,那么可以在这个基础上对模型进行严谨。一种有效的做法是将错误分类的测试图片加入到训练集中,打开原有工程,选择加入误分类数据的文件夹作为训练数据集,点击Train,进行再训练。那么,新训练出来的模型就可以很好的分类该类型误分类图片。

6. 图像分类样例数据集

ImageClassifier.zip