使用CNN进行二元图像分类 – 选择“负”数据集的最佳实践?

假设我想训练一个CNN来检测图像是否为汽车。

选择“非汽车”数据集有哪些最佳实践或方法?

因为这个数据集可能是无限的(基本上是任何不是汽车的东西) – 是否有关于数据集大小需要的指导方针?它们应该包含与汽车非常相似但不是汽车的物体(如飞机、船只等)吗?


回答:

就像所有监督式机器学习一样,训练集应该反映模型将要处理的真实分布。神经网络基本上是一个函数近似器。你的实际目标是近似现实世界的分布,但在实践中只能从中获取样本,而这个样本是神经网络唯一能看到的东西。对于训练流形之外的任何输入,输出只是一个猜测(另见AI.SE上的讨论)。

因此,在选择负数据集时,你首先应该回答的问题是:这个模型的可能用途是什么?例如,如果你在为智能手机构建一个应用,那么负样本可能应该包括街道视图、建筑和商店的图片、人、室内环境等。不太可能从智能手机相机中得到的图像是野生动物或抽象画,即在你的真实分布中这是不太可能的输入。

包含看起来像正类别的图像(卡车、飞机、船只等)是个好主意,因为低卷积层特征(边缘、角落)将非常相似,重要的是神经网络能够正确学习重要的高层次特征。

一般来说,我会使用5到10倍于正样本的负样本图像。CIFAR-10是一个很好的起点:在50000个训练图像中,5000个是汽车,5000个是飞机,等等。事实上,构建一个10类分类器并不是一个坏主意。在这种情况下,你可以通过设定阈值,将这个CNN转化为一个二元分类器,阈值是CNN对推断类别为汽车的确定性。任何CNN不确定的东西都将被解释为不是汽车。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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