说,我想训练CNN来检测图像是否是汽车。
选择" Not-Car"有哪些最佳做法或方法?数据集?
因为这个数据集可能是无限的(基本上任何不是汽车的东西) - 是否有关于数据集需要多大的指南?它们是否应包含与汽车非常相似但不是(飞机,船等)的物体?
答案 0 :(得分:9)
与所有受监督的机器学习一样,训练集应该反映模型将要使用的实际分布。神经网络基本上是函数逼近器。你的实际目标是近似真实世界的分布,但在实践中,它只能从中获取样本,而这个样本是神经网络将看到的唯一的东西。对于训练流形之外的任何输入方式,输出只是一个猜测(参见this discussion on AI.SE)。
因此,在选择否定数据集时,您应回答的第一个问题是:此模型的可能用例是什么?例如,如果您正在为智能手机构建应用,然后负面样本应该包括街景,建筑物和商店的图片,人物,室内环境等。智能手机相机的图像不太可能是野生动物或抽象绘画,即它是你真实的不可思议的输入分布。
包括看起来像正面的图像(卡车,飞机,船等)是一个好主意,因为低转换层特征(边缘,角落)将非常相似,并且神经网络学到了很重要重要的高级功能正确。
一般来说,我会使用5-10倍以上的正面负片。 CIFAR-10是一个很好的起点:在50000个训练图像中,5000个是汽车,5000个是飞机等。实际上,构建10级分类器并不是一个坏主意。在这种情况下,您将通过阈值确定推断类是汽车来将此CNN转换为二进制分类器。 CNN不确定的任何事情都将被解释为不是汽车。
答案 1 :(得分:2)
我认为应根据模型的工作情况选择负样本。如果您的模型在街道上作为汽车探测器工作,那么合理的负面样本应该是街道背景,树木,行人和其他街道上的车辆。所以我认为没有普遍的负面样本选择规则,只取决于你的需要。