【问题标题】:Object Detection: Training Requried or No Training Required?对象检测:需要训练还是不需要训练?
【发布时间】:2014-06-22 20:03:42
【问题描述】:

这个问题与对象检测有关,基本上,检测任何“已知”对象。例如,假设我有以下对象。

  1. 瓶子。
  2. 相机
  3. 汽车

我将从所有这些单独的对象中拍摄 4 张照片。左边一个,右边一个,上下两个。我最初认为可以通过每张 4 张照片来识别这些物体,因为您拥有所有 4 个角度的照片,无论您如何看到物体都可以检测到它。

但我对某人关于使用来自每个对象的数千个正面和负面图像来训练引擎的想法感到困惑。我真的不认为这是必需的。

所以简单来说,我的问题是,为了识别一个对象,我需要这数千个正负对象吗?还是说4个角度4张照片就够了?

我希望为此使用 OpenCV。

更新

实际上主要的事情是这样的。想象一下,我有 2 台笔记本电脑。一个是戴尔,另一个是惠普。两者都是笔记本电脑,但您知道,它们具有清晰可见的差异,包括徽标。我们可以使用Feature Description 做到这一点吗?如果不是,“训练”过程有多“辛苦”?需要多少张照片?

更新 2 我需要检测“特定”对象。不是所有的汽车,所有的瓶子等。例如,“Maruti Car Model 123”和“Ferrari Car Model 234”都是汽车,但不同。想象一下,我有上述车型的 Maruti 和 Ferrari 的照片,然后我需要检测它们。我不必担心其他汽车或车辆,甚至其他型号的马鲁蒂和法拉利。但上述“Maruti Car Model 123”应标识为“Maruti Car Model 123”,上述“Ferrari Car Model 234”应标识为“Ferrari Car Model 234”。我需要多少张照片?

【问题讨论】:

  • 取决于你要使用什么样的算法。
  • 您知道您正在拍摄 3D 物体的 2D 照片吗?因为不同的旋转发生在 3D 空间中,但识别必须发生在 2D 空间中。如果可以重建 3D 对象,在 3D 空间中识别会容易得多,但这是一个很大的 IF。
  • @user2079303:请查看我对问题的更新。
  • @MSalters:请查看我对问题的更新。
  • @HashMap 你想检测任何瓶子/桌子/相机/汽车还是一个特定的瓶子/桌子/相机/汽车?如果您想要检测一个特定的非变形对象,那么无需任何培训,该特定对象的几张图片就足够了。另一方面,如果你想检测保时捷卡雷拉,几张福特福克斯的照片可能无济于事;)

标签: c++ opencv image-processing computer-vision object-detection


【解决方案1】:

答案:

  1. 如果要检测特定对象并且不需要考虑视点变化,可以使用 2D 特征: http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html

  2. 要区分 2 个徽标,您可能需要为每个徽标构建一个检测器,该检测器将在一组图像上进行训练。例如,您可以训练一个 Haar 级联分类器。

  3. 要区分不同型号的汽车,您可能需要使用每辆汽车的训练图像来训练分类器。但是,我遇到了一个使用最近邻方法的应用程序——它只是从给定的测试图像中提取特征,并将其与一组已知的不同汽车模型的图像进行比较。

此外,如果您要对应用程序进行更多解释,我可以推荐一些方法和软件包。

【讨论】:

  • 您好,感谢您的回复。所以是的,正如我在问题中提到的那样,想象我已经有了“Maruti Car Model 123”和“Ferrary Car Model 234”的照片。因此,如果相机看到这个“Maruti Car Model 123”(实时),那么它应该识别它。它不应与 Ferrary 混淆。我们不必考虑其他汽车。 “稍后”在此应用程序中,我可能还必须识别这辆车的门、灯等。我期待您的回复。
  • 我会尝试使用 Decaf 功能:github.com/UCB-ICSI-Vision-Group/decaf-release
  • 谢谢。这些建议适用于实时情况,对吗?这意味着相机可以看到物体并实时识别它。
  • 也许实时检测,你应该试试 Caffe:caffe.berkeleyvision.org 比 Decaff 快
【解决方案2】:

要回答您在标题中提出的问题,如果您希望能够确定图片中的对象是什么,您需要一个有监督的算法(也就是经过训练的)。否则,在某些情况下,您将能够确定对象的边缘或存在,但不能确定它是什么类型的对象。为了分辨出对象是什么,您需要一个带标签的训练集。

关于问题的内容,一个物体的图片中可能的角度数是无限的。如果您的训练集中只有四张图片,则测试示例的拍摄角度可能介于训练示例 A 和训练示例 B 之间,从而难以识别您的算法。训练集越大,识别对象的概率就越高。请注意:您永远无法绝对确定您的算法将识别对象。它只是变得更有可能。

【讨论】:

  • 感谢您的回复。实际上主要的事情是这样的。想象一下,我有 2 台笔记本电脑。一个是戴尔,另一个是惠普。两者都是笔记本电脑,但您知道,它们具有清晰可见的差异,包括徽标。我们可以使用特征描述来做到这一点吗?(docs.opencv.org/doc/tutorials/features2d/feature_description/…)如果不能,“训练”过程有多“难”?需要多少张照片?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 2021-02-22
  • 2017-09-28
  • 1970-01-01
相关资源
最近更新 更多