这个问题与对象检测有关,基本上是检测任何"已知"对象。例如,假设我有以下对象:
- 表
- 。 相机汽车
我将从所有这些单独的对象中拍摄4张照片。一个在左边,一个在右边,另外两个在上下。我原本以为可以用这4张照片来识别这些物体,因为你有4个角度的照片,不管你怎么看,你都可以发现它。
但是我对某人关于用每个对象的数千个正面和负面图像来训练引擎的想法感到困惑。我真的不认为这是必要的。
所以简单地说,我的问题是,为了识别一个物体,我是否需要这数千个积极和消极的物体?或者仅仅从4个角度拍4张照片就足够了?我希望使用OpenCV。
实际上主要的事情是这样的…假设我有两台笔记本电脑。一个是戴尔,另一个是惠普。两者都是笔记本电脑,但你知道,它们有明显的区别,包括徽标。我们可以使用功能描述来做到这一点吗?如果不是,"训练"过程有多"艰难"?需要多少张照片?
更新2 我需要检测"特定"的物体。不是所有的汽车,所有的瓶子等等。例如,"马鲁蒂汽车123型"one_answers"法拉利汽车234型"都是汽车,但不同。假设我有上述车型的Maruti和Ferrari的图片,那么我需要检测它们。我不需要担心其他汽车或车辆,甚至其他型号的马鲁蒂和法拉利。但上述"马鲁蒂汽车123型"应识别为"马鲁蒂汽车123型",上述"法拉利汽车234型"应识别为"法拉利汽车234型"。我需要拍多少张照片?
答案:
-
如果你想检测一个特定的对象,你不需要考虑视点的变化,你可以使用2D特征:http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html
-
为了区分两个徽标,您可能需要为每个徽标构建一个检测器,该检测器将在一组图像上进行训练。例如,你可以训练一个Haar级联分类器
-
为了区分不同型号的汽车,您可能需要使用每辆车的训练图像来训练分类器。然而,我遇到了一个使用最近邻方法的应用程序-它只是从给定的测试图像中提取特征,并将其与一组已知的不同汽车模型的图像进行比较。
另外,如果您对应用程序有更多的解释,我可以推荐一些方法和包。
要回答你在标题中提出的问题,如果你想要能够确定图片中的对象是什么,你需要一个监督算法(又名训练算法)。否则,在某些情况下,你将能够确定一个物体的边缘或存在,但不确定它是什么样的物体。为了告诉对象是什么,你需要一个标记的训练集。
关于问题的内容,一个物体的图片中可能的角度的数量是无限的。如果你的训练集中只有四张图片,那么测试样例的角度可能介于训练样例A和训练样例B之间,这使得你的算法很难识别。训练集越大,识别目标的概率越高。注意:你永远无法达到绝对的确定性,你的算法将识别对象。