机器学习:使用卷积神经网络将图像分类为三类(狗或猫或其他)

我希望能得到一些帮助来思考这个问题。我有一个分类器,可以成功地将图像分类为狗或猫,并且精度很好。我有一组很好的数据集来训练这个分类器。目前为止没有问题。

我有大约20,000张狗的图片和20,000张猫的图片。

然而,当我尝试展示其他图像,比如汽车、建筑物或老虎,这些图像不包含狗或猫时,我希望分类器的输出结果是“其他”。目前显然,分类器试图将所有东西都分类为狗或猫,这是不正确的。

问题1:

我该如何实现这一点?我是否需要有一组第三类不包含狗或猫的图像,并用这些额外的图像训练分类器,以识别其他所有东西为“其他”?

从高层次上大致来说,我需要多少张非狗/猫类别的图像才能获得良好的准确性?大约50,000张图像是否足够,因为非狗/猫图像的领域如此庞大?还是我需要更多图像?

问题2:

我是否可以不使用自己的图像数据来训练自己的分类器,而是使用Imagenet训练的VGG16 Keras模型作为初始层,并在其上添加DOG/CAT/Neither分类器作为全连接层?

查看此示例以加载预训练的imagenet模型

非常感谢你的帮助。


回答:

问题2

我先讨论“杀手级”启发式方法。是的,使用现有的训练模型。简单地将所有狗的分类合并到你的类别1中,将猫合并到类别2中,其余所有都归入类别0。这将解决你几乎所有的问题。

问题1

问题在于你的初始模型被训练成认为世界上所有东西(所有40,000张图像)都是狗或猫。是的,你必须训练第三组,除非你的训练方法是自我限制的算法,比如单类SVM(对每个分类运行一次)。即便如此,我预计你也会遇到一些麻烦,比如排除猞猁或狼的问题。

你很正确地指出,你需要为“其他”类提供大量的例子,考虑到输入空间的高维度:这不仅仅是图像的数量,而是它们的位置刚好在猫或狗的“边界”之外。我对一个项目感兴趣,该项目旨在确定如何以最少的额外输入来做到这一点。

简而言之,不要简单地从ImageNet类型的世界中抓取50K张图像;选择那些能给你的模型带来最佳区分度的图像:其他猫科和犬科的例子,其他你在类似环境中发现的物体(如茶几、田鼠等)。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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