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

Deep learning Training dataset with Caffe

我是一名深度学习新手,正在使用 Caffe 为图像创建车辆 classifier,我有一个由 3 部分组成的问题:

  1. 在组织 classes 培训 美国有线电视新闻网?即 classes 的数量和每个 class 的样本数量? 例如,我这样会更好吗:

    • (a) 车辆 - Car-Sedans/Car-Hatchback/Car-SUV/Truck-18-wheeler/....(注意这可能意味着数千 classes),或
    • (b) 有更高的水平 class 介于 car/truck/2-wheeler 之间的模型等等... 如果是汽车类型,则查询汽车型号以获取汽车类型
      (sedan/hatchback 等)
  2. 每个 class 有多少训练图像是典型的最佳做法?我知道还有其他几个变量会影响 CNN,但是在每个 class 中拍摄什么粗略数字是好的? 它应该是模型中 classes 数量的函数吗?为了 例如,如果我的模型中有很多 class,我是否应该提供更多 每个样本 class?

  3. 我们如何确保我们不会过度拟合 class?有没有办法衡量 class?

  4. 训练样本的异质性

提前致谢。

  1. 嗯,你提到的第一个选择对应了计算机视觉社区中一个非常具有挑战性的任务:fine-grained image classification,你想classify某基地下属class,说车!要获得有关 this 的更多信息,您可以查看这篇论文。 根据图像 classification 的文献,classifify high-level classes such as car/trucks would be much simple for CNNs to learn because there may exist more discriminative特征。我建议采用第二种方法,即 class 验证所有类型的汽车与卡车等等。

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

  3. 与过拟合作斗争一直是机器学习中的一个难题,甚至 CNN 也不能免于过拟合。在文献中,已经引入了一些实用的建议来减少过度拟合的发生,例如丢弃层和数据增强程序。

可能未包含在您的问题中,但您似乎应该遵循微调程序,即使用另一个任务(例如 ILSVRC 201X)的模型的预计算权重初始化网络并调整权重根据你的新任务。此过程在社区中称为迁移学习(有时是域适应)。