我做了一个简单的CNN,对狗和猫进行分类,我想让这个CNN检测出不是猫或狗的图像,这肯定是第三个不同的类别。如何实现这个目标?我应该用R-CNN还是别的什么?
附言:我在CNN使用Keras
发布于 2019-11-14 17:06:20
你想要做的就是所谓的“迁移学习”,使用学到的网络权重来解决一个新问题。
请注意,这是非常困难的,并且在许多约束下起作用,例如,使用可以检测汽车的CNN来检测卡车比使用经过训练的CNN来检测人来检测猫要简单。
在任何情况下,您都可以使用预先训练好的模型,加载权重,并继续使用新数据和示例对其进行训练。
这是否比简单地在所有需要的类上训练新模型更快,甚至更好,取决于实际的实现和问题。
Tl:博士
迁移学习很难!除非你知道你在做什么,或者有特定的原因,否则就在所有的类上训练一个新的模型。
发布于 2019-11-14 17:04:24
你可以用几乎相同的架构来训练它(当然,它取决于这个架构,如果它已经很糟糕了,那么它在更多的类上也不会有用。我建议使用最先进的模型架构进行狗和猫的分类),但除了这个第三类数据集之外,您还需要狗和猫的数据集。不幸的是,不可能使用预训练来在所有三个类别之间进行预测,只需在稍后的第三个类别上进行训练。
因此,简而言之,如果你想在这三个类别之间进行预测,你需要拥有所有三个数据集,并从头开始训练模型,否则使用预训练的,在第三个类别上训练后,它可以预测某个图像是否属于这第三个类别。
发布于 2020-08-18 01:29:57
你应该通过添加更多的类别来训练new_category,它包含了之前不在2个类别中的图像。我是说
--cat_dir
-*.jpg
--dog_dir
-*.jpg
--not_at_all_dir
-*.jpg所以..。你要训练的类别总共是3个类别。
(类别或类,不管它是什么)
然后添加最终密集全连接的输出(3个类别)
https://stackoverflow.com/questions/58850711
复制相似问题