Image processing 卷积神经网络作为二值分类器

Image processing 卷积神经网络作为二值分类器,image-processing,machine-learning,computer-vision,neural-network,torch,Image Processing,Machine Learning,Computer Vision,Neural Network,Torch,给定任何图像,我希望我的分类器判断它是否是向日葵。如何创建第二个类?将所有可能的图像集-{Sunflower}保留在第二个类中是一种过分的做法。有没有这方面的研究?目前,我的分类器在最后一层使用神经网络。我是根据以下教程编写的: 我用254x254作为输入拍摄图像。 SVM在最后一层有帮助吗?此外,我也愿意使用任何其他分类器/功能,这可能会对我有所帮助。ML中的标准方法是: 1) 构建模型 2) 尝试使用正面/负面示例对某些数据进行培训(从培训集中的pos\neg的50\50开始) 3) 在测

给定任何图像,我希望我的分类器判断它是否是向日葵。如何创建第二个类?将所有可能的图像集-{Sunflower}保留在第二个类中是一种过分的做法。有没有这方面的研究?目前,我的分类器在最后一层使用神经网络。我是根据以下教程编写的:

我用254x254作为输入拍摄图像。
SVM在最后一层有帮助吗?此外,我也愿意使用任何其他分类器/功能,这可能会对我有所帮助。

ML中的标准方法是:

1) 构建模型 2) 尝试使用正面/负面示例对某些数据进行培训(从培训集中的pos\neg的50\50开始) 3) 在测试集中验证它(同样,在测试集中尝试50\50个pos\neg示例) 如果结果不好: a) 尝试不同的模式? b) 获取更多数据

对于案例b,在决定需要哪些额外数据时,对我来说非常有效的经验法则是: 1) 如果分类器给出了大量的假阳性(告诉我们这是一朵向日葵,而实际上它根本不是一朵向日葵),那么得到更多的负面例子 2) 如果分类器给出了大量的假阴性(当它实际上是向日葵时,告诉它这不是向日葵),那么得到更多的正面例子

通常,从一些合理数量的数据开始,检查结果,如果列车组或测试组的结果不好,则获取更多数据。当获得最佳结果时,停止获取更多数据

另一件事你需要考虑的是,如果你的结果与当前的数据和当前的分类器不好,你需要了解如果问题是高偏压(好,坏结果在火车集和测试集),或者如果它是一个高方差的问题(火车上的结果不错,但是测试集上的结果不好)。如果您有高偏差问题-更多数据或更强大的分类器肯定会有所帮助。如果你有一个高方差的问题-不需要更强大的分类器,你需要关于泛化的东西-引入正则化,也许从你的ANN中移除几层。对抗高差异的另一种可能方法是获取更多的数据


总之,您需要使用迭代方法,并尝试逐步增加数据量,直到获得好的结果。没有魔术棒分类器,也没有关于应该使用多少数据的简单答案。

最好使用CNN作为特征提取器,剥离用于分类的原始完全连接层并添加新分类器。这也被称为迁移学习技术,在深度学习研究领域得到了广泛应用。对于您的问题,使用单类SVM作为添加的分类器是一个不错的选择

具体来说,

  • 一个好的CNN特征提取器可以在大型数据集上进行训练,例如ImageNet
  • 然后可以使用“sunflower”数据集对单类SVM进行训练

解决问题的关键部分是实现单类SVM,也称为异常检测或新颖性检测。您可以参考一些关于该方法的见解。

您应该使用的“负面示例”取决于您将让分类器看到的数据类型。如果只是别的花,就用剩下的花。如果是植物,你也需要这个领域的例子。我想涵盖整个领域。在这种情况下,我应该如何抽取我的负面例子?那么,在这种情况下,来自image net数据库中每个synset的单个图像就足够了吗?我更感兴趣的是使用一个类分类器,这样就不需要对负面示例进行采样。我该怎么做?对不起,我不理解你的问题。要训练一个好的二元分类器(正面示例只返回1,负面示例返回0-Sunflower\not Sunflower),您必须提供正面和负面示例的示例。你应该尽可能地把你的问题领域包括进去,以获得最好的结果。我的意思是,我假设你不想对问题领域进行全面的抽样,但你需要“以某种方式”对其进行抽样。在没有对问题域的负面示例进行采样的情况下,制作一个好的分类器是不可能的。