跳到主要内容

个人数据集训练卷积神经网络

使用个人数据训练神经网络

现实项目中,通常需要使用很少的数据来训练一个图像分类模型。“少数”样本可以指几百到几万张图像。作为一个实际的例子,我们将着重于在一个包含4000张猫和狗的图片(2000张猫,2000张狗)的数据集中将图片分类为猫和狗。我们将使用2000张图片进行训练,1000张图片进行验证,1000张进行测试。
在本案例中,我们将设计解决这个问题的基本策略:使用仅有的少量数据从零开始训练一个新模型。首先,您将在2000个训练样本上训练一个小的卷积网络,而不进行任何正则化,从而为可以为项目设置一个最低标准。后续为了解决数据过拟合问题。然后我们将使用数据增强技术,这是一种在计算机视觉中减轻过度拟合的技术。通过使用数据增强,您可以将网络的精确度提升。
在后续实践中,我们将使用深度学习应用于小型数据集的另外两个基本技术:使用预训练网络的特征提取(这将大幅度提升模型准确率)和微调预训练网络(继续优化模型精度)。这三个策略——从零开始训练一个小模型,使用一个预训练的模型进行特征提取,以及对预训练的模型进行微调——将构成您未来处理使用小数据集执行图像分类问题的工具箱。

案例

要解决的问题

dog vs. Cats数据集并没有在keras的数据集中。该数据集为,2013年末,Kaggle计算机视觉竞赛的数据集,在当时convnets还不是主流。您可以从www.kaggle.com/c/dogs-vs-cats/data下载整个数据集,本案例中只使用了少量的数据对模型进行训练。 image.png

解决方案

在算盘的项目模板中,已经创建了一个简单的流程可以参考。
在项目模板中,双击keras教材案例中的个人数据集训练卷积神经网络: image.png可以创建出以下模板,模板中的组件可以在深度学习的pytorch的分类中找到:image.png

模板

可以看出整个模板分了五块:

  • 模型建立——需要有一个输入层,注意填写接收图片的大小与通道数,后面连接卷积层-RELU激活函数-池化层-全连接层等。
  • 数据载入——可以使用已经制作好的数据集组件Cats-vs-Dogs数据集组件,组件会直接将数据分为训练集,验证集和测试集,后面可以直接连接图片文件夹数据转换组件。
  • 模型训练——数据载入设置Batch Size,选择RMSprop作为参数寻优器,模型训练节点设置epoch数与Loss Function,最终生成训练好的模型文件
  • 预测评估——预测节点接收测试集数据与训练好的模型进行训练,生成预测图片文件夹与CSV文件(包含每个图片的index,真实值与预测值),CSV文件可以作为多分类评估的输入进行模型评估
  • 图片可视化——由于每张图片的大小不等,需要先将图片比例缩放之后再进行剪裁,案例中将图片变换为1501503的数据格式。Tensor转图片可以将生成好的Tensor数据转换为图片保存,最终生成在转换组合组件的输出节点中。

这样就实现了一个个人数据集训练的神经网络模型,你可以对其中的网络结构进行重新编辑,验证你的算法!