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

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

  1. 在组织用于训练CNN的类别时,有没有最佳实践?例如,类别的数量和每个类别的样本数量?例如,我这样做会不会更好:
    • (a) 车辆 – 轿车-轿车/轿车-掀背车/轿车-SUV/卡车-18轮/….(请注意,这可能意味着几千个类别),或者
    • (b) 有一个更高级别的模型来区分轿车/卡车/两轮车等…如果是轿车类型,则查询轿车模型以获取轿车类型(轿车/掀背车等)
    1. 每个类别的训练图像数量通常的最佳实践是多少?我知道有几个其他变量会影响CNN的准确性,但每个类别应该瞄准的粗略数字是多少?它应该是一个与模型中类别数量相关的函数吗?例如,如果我的模型中有很多类别,我应该为每个类别提供更多的样本吗?

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


    回答:

    1. 嗯,你提到的第一个选择对应于计算机视觉社区中一项非常具有挑战性的任务:细粒度图像分类,你希望对一个基础类别的下属进行分类,比如汽车!要获取更多信息,你可以查看这篇论文。根据图像分类的文献,分类高层次的类别如汽车/卡车对于CNN来说会更简单,因为可能存在更多可区分的特征。我建议采用第二种方法,即分类所有类型的汽车与卡车等。

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

    3. 与过拟合作斗争一直是机器学习中的一个问题,即使是CNN也无法避免。在文献中,已经提出了一些实用的建议来减少过拟合的发生,例如 dropout 层和数据增强程序。

    虽然你的问题中没有提到,但似乎你应该遵循微调程序,即用另一个任务(例如 ILSVRC 201X)的预计算权重初始化网络,并根据你的新任务调整权重。这个过程在社区中被称为迁移学习(有时也称为领域适应)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注