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

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

我有大约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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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