使用Caffe进行深度学习训练数据集

4

我正在使用Caffe创建图像的车辆分类器,并有一个三部分的问题:

  1. 在训练CNN时,是否有组织类别的最佳实践?例如每个类别的类别数和样本数?例如,我应该这样做会更好吗:
  • (a)车辆 - 轿车 / 车掀背式 / 车SUV / 卡车-18轮卡车/...(注意,这可能意味着几千个类),或
  • (b)拥有更高级别的模型,可以在汽车/卡车/二轮车之间进行分类等等...如果是汽车类型,则查询Car Model以获取汽车类型 (轿车/掀背车等)
  • 每个类别的训练图像数量是典型最佳实践?我知道还有其他几个变量会影响CNN的准确性,但在每个类别中应该瞄准多少个粗略数字呢?它应该是模型中类别数量的函数吗?例如,如果我的模型中有很多类别,那么应该为每个类别提供更多样本吗?

  • 如何确保我们不会过度拟合类别?有没有办法测量类别的训练样本的异质性?

  • 1个回答

    5
    1. 首先,你提到的第一种选择对于计算机视觉领域来说是一个非常具有挑战性的任务:细粒度图像分类,即你想要将一个基础类别的下属进行分类,比如汽车!如果你想获得更多信息,请参阅这篇论文(链接)。根据图像分类的文献,对高层次的类别如汽车/卡车进行分类会更容易让CNN学习,因为可能存在更有区分性的特征。我建议采用第二种方法,即对所有类型的汽车进行分类,比如轿车、卡车等。

    2. 训练样本数量主要与参数数量成正比,也就是说,如果你想训练一个浅层模型,则需要较少的样本。这也取决于你是否决定微调预训练模型或从头训练网络。当没有足够的样本可用时,你必须在你的任务上微调一个模型。

    3. 过拟合问题一直是机器学习中的难题,甚至CNN也无法摆脱。在文献中,引入了一些实用的建议来减少过拟合的发生,例如dropout层和数据增强过程。

    这可能不在你的问题范围内,但是看起来你应该遵循微调过程,即使用预先计算好的模型权重初始化网络(比如ILSVRC 201X),并根据新任务调整权重。这个过程在社区中被称为迁移学习(有时也叫领域适应)。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接