我很感激在思考这个过程中提供了一些帮助。我有一个分类器,可以成功地将图像分类成狗或猫,准确度很高。我有一个很好的数据集来训练分类器。到目前为止没问题。
我有大约20,000只狗和20,000只猫图像。
然而,当我尝试展示其他图像,如汽车,建筑物或没有狗或猫的老虎时,我希望分类器的输出为" Niether"。现在很明显,分类器试图将所有东西分类为狗或猫,这是不正确的。
问题1:
我怎样才能做到这一点?我是否需要拥有一组不包含狗或猫的3组图像,并在这些附加图像上训练分类器以识别其他所有内容为"不是"?
在高水平附近,我需要多少只非狗/猫类别的图像才能获得良好的准确度?自从非狗/猫图像领域如此庞大以来,大约会有50,000张图像吗?或者我需要更多图像?
问题2:
我可以使用Imagenet训练的VGG16 Keras模型作为初始图层,而不是使用我自己的图像数据训练自己的分类器,并将DOG / CAT / Neither分类器添加到顶部作为完全连接的图层吗?
See this example to load a pre-traied imagenet model
非常感谢你的帮助。
答案 0 :(得分:2)
问题2
我将首先采用“杀手”启发式方法。是的,使用现有的训练模型。简单地将所有的狗类分类整合到你的1级,猫进入2级,其他一切都归入0级。这几乎可以解决你的所有问题。
问题1
问题是您的初始模型已经过训练,世界上所有(所有40,000张图片)都是狗或猫。是的,您必须训练第三组,除非您的训练方法是自限制算法,例如单类SVM(在每个分类上运行一次)。即使在那时,我也希望你在排除ly or或狼时遇到一些麻烦。
考虑到输入空间的高维度,你需要大量的“不”类的例子,这是非常正确的:它不是图像的数量,而是它们的位置只是“在边界上”从猫或狗。我对一个项目很感兴趣,以确定如何以最少的额外输入来完成这项工作。
简而言之,不要只是从世界上的ImageNet类型中获取50K图像;选择那些能给你的模型带来最佳鉴别的东西:其他猫科动物和犬科动物的例子,你在类似环境中找到的其他物体(终点表,野外啮齿动物等)。