机器学习:使用卷积神经网络将图像分类为 3 类(狗或猫或两者都不是)

问题描述 投票:0回答:1

如果您能帮助我思考这个问题,我将不胜感激。我有一个分类器,可以准确地将图像成功分类为狗或猫。我有一个很好的数据集来训练分类器。目前为止没问题。

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

但是,当我尝试呈现其他没有狗或猫的图像(例如汽车、建筑物或老虎)时,我希望分类器的输出为“两者都不是”。现在显然,分类器试图将所有东西分类为狗或猫,这是不正确的。

问题1:

我怎样才能实现这个目标?我是否需要拥有不包含狗或猫的第三组图像,并在这些附加图像上训练分类器以将其他所有图像识别为“两者都不是”?

大致而言,我需要多少张非狗/猫类别的图像才能获得良好的准确性?由于非狗/猫图像域如此之大,大约 50,000 张图像可以吗?或者我需要更多图像吗?

问题2:

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

请参阅此示例以加载预先训练的 imagenet 模型

非常感谢您的帮助。

image machine-learning classification keras multilabel-classification
1个回答
3
投票

问题2

我将首先采用“杀手”启发法。 是的,使用现有的训练模型。 只需将所有狗分类合并为 1 类,将猫分类为 2 类,将其他所有分类合并为 0 类。这几乎可以解决您的所有问题。

问题1

问题是你的初始模型已经被训练成“世界上的一切”(所有 40,000 张图像)要么是狗,要么是猫。 是的,你必须训练第三组,除非你的训练方法是自限制算法,例如单类 SVM(每个分类运行一次)。 即便如此,我预计你在排除山猫或狼时也会遇到一些麻烦。 你说得很对,考虑到输入空间的高维度,你需要大量“两者都不是”类的例子:这并不是图像的数量,而是它们的位置只是“超出边界”猫或狗。 我对一个项目感兴趣,以确定如何以最少的额外输入来做到这一点。

简而言之,不要简单地从 ImageNet 类型的世界中抓取 50K 图像;选择那些能够为您的模型提供最佳区分度的对象:其他猫科动物和犬科动物的示例、您在类似环境中找到的其他物体(茶几、野外啮齿动物等)。

© www.soinside.com 2019 - 2024. All rights reserved.