我希望能得到一些帮助来思考这个问题。我有一个分类器,可以成功地将图像分类为狗或猫,并且精度很好。我有一组很好的数据集来训练这个分类器。目前为止没有问题。
我有大约20,000张狗的图片和20,000张猫的图片。
然而,当我尝试展示其他图像,比如汽车、建筑物或老虎,这些图像不包含狗或猫时,我希望分类器的输出结果是“其他”。目前显然,分类器试图将所有东西都分类为狗或猫,这是不正确的。
问题1:
我该如何实现这一点?我是否需要有一组第三类不包含狗或猫的图像,并用这些额外的图像训练分类器,以识别其他所有东西为“其他”?
从高层次上大致来说,我需要多少张非狗/猫类别的图像才能获得良好的准确性?大约50,000张图像是否足够,因为非狗/猫图像的领域如此庞大?还是我需要更多图像?
问题2:
我是否可以不使用自己的图像数据来训练自己的分类器,而是使用Imagenet训练的VGG16 Keras模型作为初始层,并在其上添加DOG/CAT/Neither分类器作为全连接层?
非常感谢你的帮助。
回答:
问题2
我先讨论“杀手级”启发式方法。是的,使用现有的训练模型。简单地将所有狗的分类合并到你的类别1中,将猫合并到类别2中,其余所有都归入类别0。这将解决你几乎所有的问题。
问题1
问题在于你的初始模型被训练成认为世界上所有东西(所有40,000张图像)都是狗或猫。是的,你必须训练第三组,除非你的训练方法是自我限制的算法,比如单类SVM(对每个分类运行一次)。即便如此,我预计你也会遇到一些麻烦,比如排除猞猁或狼的问题。
你很正确地指出,你需要为“其他”类提供大量的例子,考虑到输入空间的高维度:这不仅仅是图像的数量,而是它们的位置刚好在猫或狗的“边界”之外。我对一个项目感兴趣,该项目旨在确定如何以最少的额外输入来做到这一点。
简而言之,不要简单地从ImageNet类型的世界中抓取50K张图像;选择那些能给你的模型带来最佳区分度的图像:其他猫科和犬科的例子,其他你在类似环境中发现的物体(如茶几、田鼠等)。