没有标签/注释的对象检测

问题描述

假设我有 3 个图像(一个苹果、一个橙子、一个香蕉)和另外 1000 个任意图像。我想要做的是看看这 1000 张任意图像是否包含与前 3 张图像相似的对象,如果是,则绘制一个边界框来指示这些对象。但是,这 1003 个图像或对象都没有标记,也没有任何注释。

我在互联网上做了一些研究,并试图找到一些深度学习对象检测方法(例如 Faster R-CNN、YOlov3),但我想不出它们如何与我的任务相关联。

我也注意到有一个术语叫做模板匹配,但它似乎与深度学习没有太大关系。

所以我的问题是:

有什么好的方法或深度学习模型可以满足我的需求?

我会从任何预训练的 Faster R-CNN、YOlov3 模型中受益吗? (例如,如果他们通过汽车、人、狗、猫图像集进行训练,这些有意义的特征是否也适用于新领域?)

解决方法

我想做的是看看这 1000 张任意图像是否包含与前 3 张图像相似的对象

“相似”是什么意思?

如果您的意思是“我想查看 1000 张图像是否包含来自目标类的对象:橙色、苹果和香蕉”,那么答案如下:

  • 如果您的模型用您的目标类(橙色、 苹果和香蕉),然后你可以使用这些预先训练的模型来 检测您的 1003 个图像中的对象。你可以选择橙色, 苹果和香蕉作为配置中的类名。

  • 如果您的预训练模型没有针对您的目标类别进行训练,并且您只有 1003 张图像,您将需要进行所谓的微调, 正在训练模型的最后一层。 1003 张图像可能不足以训练模型,您可能需要执行数据增强来扩展数据。此外,请考虑使您的类平衡(意味着每个类具有相同数量的对象)。

对于接近“相似度得分”的东西,您可以考虑 类x置信度,即边界框包含对象x的可能性。但是,这个置信度主要取决于“有多好训练”模型在 x 类上。例如,不同模型对于相同图像的置信度分数可能不同。此外,同一模型对于同一对象在不同角度、光照和方向上可能具有不同的置信度分数。因此,无论如何对模型进行微调可能是一个更好的主意,以便它们对目标类的任何表示都更加“稳健”。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...