使用DLP训练卷积神经网络(CNN)分类器

使用DLP训练卷积神经网络(CNN)分类器

在这篇文章中,我们将看到DLP如何用于训练卷积神经网络(CNN)分类器,它代表了深度学习平台。更具体地说,我们将使用Fashion-MNIST数据集来训练我们的CNN分类器。在本教程结束时,您将能够拍摄时尚图像项目,例如左侧的图像项目,并生成标记的输出,例如右侧的图像。

使用DLP训练卷积神经网络(CNN)分类器

但是在我们开始之前,让我们快速浏览一下DLP。如果您尚未这样做,请访问www.ai-dlp.com并索取DLP副本。它适用于所有三种主要的操作系统,即Windows,Linux和Mac。

DLP是一款专门用于深度学习(DL)应用开发而不需要编码的软件,它建立在流行的深度学习框架Caffe之上。它包含DL应用程序管道的主要模块:数据,网络,训练和部署。我们将在DLP分类的背景下探索这些模块中的每一个。

PS:由于DLP是建立在Caffe深度学习框架的基础上的,因此如果您想从头到尾跟随,则预计您的Caffe会在系统上安装python API。但是,DLP只依赖Caffe来训练模型,但其他mundanes DL任务(如数据准备,网络定义和模型部署)可以在DLP上完成,并且不需要您在系统上安装Caffe。

现在让我们启动DLP。一旦启动,你会看到下面的屏幕。

使用DLP训练卷积神经网络(CNN)分类器

我们有很多可供选择的选项组合。在“1。选择模型类型“选择分类,然后在”2。选择数据类型“选择图片,然后点击继续,你将登陆到下一页。

使用DLP训练卷积神经网络(CNN)分类器

这个界面是我们所有的数据预处理工作分类的地方。但在进入它之前,让我们先熟悉界面的主要部分:

  • 导航栏:包含用于在DLP内的不同模块之间切换的控件,下拉按钮(您必须为caffe / build / tools,caffe / python和python bin目录设置路径)以及链接到我们的社交媒体页面的按钮。

  • 功能栏:包含用于停止/退出项目的控件,以及设置工作目录和添加图像/类等的方法。

  • 可视化区域:您将操作图像的主要区域。

  • 类设置:包含为您的分类任务定义的类数量以及每个类中的图像数量。

  • 图像设置:包含图像数据的可配置设置。

现在我们已经熟悉了数据模块接口,让我们先跳一下并开始与之交互。

数据集说明

我们将使用Fashion-mnist数据集。该数据集由电子商务公司Zalando的研究人员介绍,作为流行MNIST数据集的直接替代品。Fashion-mnist包含各种物品和服装物品的图像,如衬衫,鞋子,包包,大衣和其他时尚物品 - 包含60000个示例的训练集和10000个示例的测试集。与MNIST类似,每个示例都是与来自10个类别(T恤,裤子,套头衫,连衣裙,大衣,凉鞋,衬衫,运动鞋,包和踝靴)的标签相关联的28x28灰度图像。下面是数据的一个例子,每个类需要三行。

使用DLP训练卷积神经网络(CNN)分类器

获取数据

数据集可以从https://pan.baidu.com/s/1dGopafv下载。下载的zip文件名为fashion_mnist_data.tar.gz,应该具有以下目录结构:

<training / testing> / <label> / <id> .png

训练文件夹包含标记的png图像,将用于训练我们的Caffe模型。测试文件夹也包含标记的png图像,但这些图像将用于评估我们训练有素的Caffe模型。

数据集准备

DLP可用于以非常简单直观的方式帮助您可视化和组织数据集。从我们离开它的位置返回到DLP,并在功能栏下单击AddClass,Class Setting面板下的可编辑标签区域将显示:

使用DLP训练卷积神经网络(CNN)分类器

从那里你可以给你的标签/类名称。由于Fashion-mnist是一个10级的数据集,因此我们将重复上述过程9次,并从0-9标记我们的类:

如果您注意上图中突出显示的区域,您会注意到每个标签区域与其相应的垃圾桶图标之间都有一个数字。这个数字(目前为所有标签为0)表示每个类的图像数量。因为我们迄今为止所做的只是添加类标签,所以现在每个类标签都具有零图像。对于每个类别标签,让我们添加相应的图像。为了添加对应于特定类别标签的图像,首先单击标签区域前面的黄色框,然后在功能栏下单击AddImg并导航到机器中包含与您具有的特定标签对应的图像的文件夹在班级设置下选择。例如,要添加对应于标签0(T恤/顶部)的图像,请在fashion_mnist_data文件夹内导航至:/ training / 0。

您会注意到表示类别标签0的图像数量的数字已从0更改为6,000。这意味着我们的数据集包含该标签的6000个图像。我们对其余类别也是如此。这是一种简单而干净的方式来可视化和检查你的数据集; 无论您是要为给定的类标签添加更多图像,还是仅删除给定类中的某些图像。

现在我们的图像已导入到DLP中,我们需要将它们存储为可用于训练Caffe模型的格式。

在图像设置面板下 - 位于类设置面板的右下方 - 您可以给数据集命名,将尺寸选项设置为28x28,将图像类型设置为灰度(因为我们正在处理28x28灰度图像)。为ImageEncode选择PNG(因为我们的图像全部是png文件),并为后端选择LMDB。将TestingSet设置为您选择的百分比(例如25),并为参数选择shuffle和MeanFile。然后您必须为将生成的平均文件命名。

基本上这些设置意味着我们正在处理编码为png格式的28x28灰度图像,数据将首先被混洗,然后作为lmdb存储,并且25%的训练集将被用作验证集。在为我们的训练和验证数据创建lmdb文件时,我们还将生成训练数据的平均图像。

一旦您定义了图像设置,您可以通过单击功能栏上的预览命令来预览更改。而且您会注意到,在可视化区域中,您的图像大小已更改为与图像设置面板中定义的大小相匹配。

使用DLP训练卷积神经网络(CNN)分类器

现在确保您的/ caffe / build / tools /和/ caffe / python /路径设置正确。

使用DLP训练卷积神经网络(CNN)分类器

然后继续进行数据转换(在图像设置面板中定义),方法是前往功能栏并单击转换命令。然后你会被要求选择一个你会喜欢这个文件的位置,这个文件将会被保存......就是这样。通常,Convert命令会将初始数据集分为训练集和验证集,然后为每个数据集将图像存储为准备提供给Caffe模型的lmdb文件。数据集的平均图像也将被生成。

如果一切顺利,将会弹出“成功”窗口。单击确定,然后通过单击位于功能栏上的NextStep命令移至网络定义模块。

使用DLP训练卷积神经网络(CNN)分类器

模型定义

这是您定义模型架构及其参数的地方。在这里,您可以将.prototxt train_val文件导入到DLP中,使用DLP Net Components以简单的拖放方式从现有体系结构或从头开始构建网络体系结构,或者您可以简单地使用DLP中提供的预定义网络体系结构之一网络库。

使用DLP训练卷积神经网络(CNN)分类器

对于这个例子,我们将考虑后者,即我们将使用DLP网络库中定义的一个网络。更具体地说,我们将使用流行的LeNet架构。

只需左键单击位于网络库中的LeNet命令,然后将其拖入可视化区域并放置:

使用DLP训练卷积神经网络(CNN)分类器

在可视化区域,您将看到LeNet架构的可视化。网络的每个组件/层都是可点击的,点击特定的组件可以让您在组件设置面板下定义/检查其参数。

我们将修改一些LeNet组件的一些默认设置。我们从数据层开始。通常,我们要修改与每个数据层关联的名称,指定与训练和验证集对应的lmdb文件的路径,并包含训练数据的平均文件。

使用DLP训练卷积神经网络(CNN)分类器

我们对与验证集相对应的数据层(连接到卷积层的那个)执行相同的操作。要知道哪个lmdb文件转到哪个数据层,请参考给每个数据层的默认名称(您可以编辑这些名称,但我们建议不要)。

接下来,我们必须确保最后一个InnerProduct层的输出数量实际上与我们的分类问题的类数相匹配,即10。

使用DLP训练卷积神经网络(CNN)分类器

您可能已经注意到这种LeNet架构包含两个精度层:一个是计算的准确性LeNet通过比较真实的标签顶部k得分类,和其他的比较做同样的事,而是真正的标签顶部k得分类只与最高得分类进行比较。默认情况下k = 3,如果愿意,可以更改默认值。

现在我们的网络已经准备就绪,现在是时候定义它的求解器组件。求解器负责模型优化。选择求解器组件并在组件设置面板下检查和/或修改其参数。您可以将其保留为默认值,或更改某些属性的值。

使用DLP训练卷积神经网络(CNN)分类器

我选择训练模型进行50次迭代,每25次迭代保存一次快照,每10次迭代显示一次训练日志,并每10次迭代验证验证集上的训练。如果您只运行一个仅限CPU的Caffe,则可以将“SolverMode”保留给CPU,否则将其设置为GPU。

现在我们已经对LeNet架构进行了适当的修改以适应我们的分类问题,并相应地定义了求解器,现在是时候训练我们的模型了。点击训练命令,你会被要求选择一个目标文件夹(将存放生成的.prototxt文件和caffemodels)。

使用DLP训练卷积神经网络(CNN)分类器

模型训练

该Train 命令将引导您到DLP Train Module界面,并将自动启动训练。

使用DLP训练卷积神经网络(CNN)分类器

在那里,我们可以通过可视化图的训练/测试损失,以及在验证集上的模型精度(top 1和top 3),或者查看可视化区域下的日志面板来监控训练。训练日志、.prototxt文件和caffemodels将存储在您单击Train 命令时所选择的文件夹中。在50个时代之后,在验证集上的前1个准确率为72%左右,而前3个准确率达到94%左右。训练/验证损失的持续下降也可以被观察到。

现在我们已经训练了我们的Caffe模型,我们可以使用它来预测新的(不可见的)数据(例如,来自测试集的图像)。

新数据的预测

点击NextStep命令转到部署模块。

使用DLP训练卷积神经网络(CNN)分类器

部署模块界面非常直观。要开始对新图像数据进行预测,我们首先需要准备许多文件:一个deploy.prototxt文件和一个文本(.txt)标签文件。用你最喜欢的代码编辑器创建一个.txt文件,并且按照DLP上加载数据的顺序,为每一行记下每个(fashion-mnist)10级的名称。你的label.txt文件应该如下所示:

使用DLP训练卷积神经网络(CNN)分类器

可以从https://pan.baidu.com/s/1dGopafv#list/path=%2F下载deploy_fashion-mnist.prototxt文件。其结构类似于fashion-mnist-train_val.prototxt(在模型定义阶段生成),但只做了一些修改。一旦我们准备好这两个文件并保存在本地,我们现在就完成了设置。但在我们开始对未看到的数据做出预测之前,我们必须告诉DLP在哪里可以找到以下文件:我们的label.txt和deploy_fashion-mnist.prototxt,我们训练有素的Caffe模型,以及数据准备阶段生成的平均文件。如果你只运行一个只有CPU的Caffe,你需要确保Mode选项被设置为CPU。

使用DLP训练卷积神经网络(CNN)分类器

如果设置了所有必需参数,则下拉按钮将变为绿色。接下来,通过将其切换到右侧来开启切换按钮。这将初始化DLP进行预测。

使用DLP训练卷积神经网络(CNN)分类器

然后前往功能栏并单击图像命令以添加图像输入。对输入图像的预测将在可视化区域的右侧弹出。

使用DLP训练卷积神经网络(CNN)分类器

就我而言,分类器100%确信输入图像是一件连衣裙。让我们试试fashion-mnist数据的测试集中的另一个输入图像。

使用DLP训练卷积神经网络(CNN)分类器

同样,我们的分类器以完美的置信度得出了正确的预测结果。

结论

在本教程中,我们介绍了使用DLP对卷积神经网络分类器进行训练的过程。我们涵盖了DLP核心模块,即数据,网络,训练和部署。从这里,你可以尝试一些事情:

  • 1.训练更长时间:我们只对50次迭代训练了分类器。训练更长的迭代次数肯定会提高分类器的准确性。

  • 2.尝试其他网络体系结构:DLP网络库包含一些最流行(且有效)的CNN体系结构用于分类。你可以尝试一下。

  • 3.训练您自己的数据:我们使用时尚mnist数据集来说明如何使用DLP执行从数据准备到未预见数据预测的分类。上述步骤对于任何用于分类的数据集都是相似的。

相关推荐