我正在启动一个项目,任务是从图像中识别运动鞋类型。我目前正在阅读TensorFlow和Torch的实现。我的问题是:每个类需要多少图像才能达到合理的分类性能?
每个类有多少图像足以训练 CNN
训练神经网络时,训练样本太少怎么办? 简历上:
这实际上取决于您的数据集和网络架构。我读过的一条经验法则 (2) 是每个类有几千个样本,这样神经网络才能开始表现得非常好。在实践中,人们尝试和观察。
粗略评估拥有更多训练样本在多大程度上有益的一个好方法是根据训练集的大小绘制神经网络的性能,例如从(1):
- (1) Dernoncourt、Franck、Ji Young Lee、Ozlem Uzuner 和 Peter Szolovits。“使用循环神经网络对患者笔记进行去识别” arXiv 预印本 arXiv:1606.03475 (2016)。
(2) Cireşan、Dan C.、Ueli Meier 和 Jürgen Schmidhuber。“使用深度神经网络对拉丁文和中文字符进行迁移学习。” 在 2012 年神经网络国际联合会议 (IJCNN),第 1-6 页。IEEE,2012。https://scholar.google.com/scholar?cluster=7452424507909578812&hl=en&as_sdt =0,22;http://people.idsia.ch/~ciresan/data/ijcnn2012_v9.pdf:
对于每类有几千个样本的分类任务,(无监督或有监督)预训练的好处并不容易证明。
最好的方法是尽可能多地收集数据。然后开始项目并制作数据模型。
现在您可以评估您的模型以查看它是否具有高偏差或高方差。
高方差:在这种情况下,您将看到交叉验证误差在收敛后高于训练误差。如果您将相同的数据与训练数据大小进行对比,则存在显着差距。
高偏差:在这种情况下,交叉验证误差略高于训练误差,当针对训练数据大小绘制时,训练误差本身就很高。通过针对训练数据大小绘制我的意思是,您可以输入您拥有的训练数据子集并不断增加子集大小并绘制错误。
如果您发现您的模型具有高方差(过拟合),则添加更多数据通常会有所帮助,而高偏差(欠拟合)模型则添加新的训练数据无济于事。
同样,对于每个班级,您必须尝试获取相同数量的图像,否则数据集可能会出现偏差(更多一种)。
另外我建议如果您使用TensorFlow,请阅读有关GOOGLE 的 INCEPTION图像分类器的更多信息。它已经在谷歌的图像数据库上经过训练分类器,您可以将它用于您的图像,这样对图像数量的要求就会大大降低。