Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 目标检测:需要培训还是不需要培训?_C++_Opencv_Image Processing_Computer Vision_Object Detection - Fatal编程技术网

C++ 目标检测:需要培训还是不需要培训?

C++ 目标检测:需要培训还是不需要培训?,c++,opencv,image-processing,computer-vision,object-detection,C++,Opencv,Image Processing,Computer Vision,Object Detection,这个问题与目标检测有关,基本上是检测任何“已知”目标。例如,假设我有以下对象 桌子 瓶子 摄像机 汽车 我将从所有这些单独的物体上拍摄4张照片。一个从左,一个从右,另外两个从上到下。我最初认为,通过每一张4张照片来识别这些物体是可能的,因为你有4个角度的照片,无论你如何看到物体,你都可以检测到它 但是我被一些人的想法弄糊涂了,他们想用每个物体上成千上万的正面和负面图像来训练引擎。我真的不认为这是必要的 所以简单地说,我的问题是,为了识别一个物体,我需要这成千上万的积极和消极的物体吗?或者仅仅从4

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

  • 桌子
  • 瓶子
  • 摄像机
  • 汽车
  • 我将从所有这些单独的物体上拍摄4张照片。一个从左,一个从右,另外两个从上到下。我最初认为,通过每一张4张照片来识别这些物体是可能的,因为你有4个角度的照片,无论你如何看到物体,你都可以检测到它

    但是我被一些人的想法弄糊涂了,他们想用每个物体上成千上万的正面和负面图像来训练引擎。我真的不认为这是必要的

    所以简单地说,我的问题是,为了识别一个物体,我需要这成千上万的积极和消极的物体吗?或者仅仅从4个角度拍摄4张照片就足够了

    我希望使用OpenCV来实现这一点

    更新

    实际上主要是这样的。。假设我有两台笔记本电脑。一个是戴尔,另一个是惠普。两者都是笔记本电脑,但你知道,它们有明显的区别,包括标志。我们能用电脑做这个吗?如果没有,那么“培训”过程的“难度”有多大?需要多少张照片

    更新2
    我需要检测“特定”对象。不是所有的车,所有的瓶子等等。例如,“马鲁蒂123型车”和“法拉利234型车”都是车,但不同。假设我有上述车型的马鲁蒂和法拉利的照片,那么我需要检测它们。我不必担心其他汽车或车辆,甚至马鲁蒂和法拉利的其他车型。但上述“马鲁蒂123型车”应标识为“马鲁蒂123型车”,上述“法拉利234型车”应标识为“法拉利234型车”。我需要多少张图片?要回答你在标题中提出的问题,如果你想确定图片中的对象是什么,你需要一个监督算法(也称为训练算法)。否则,在某些情况下,您将能够确定对象的边缘或存在,但无法确定对象的类型。为了知道对象是什么,您需要一个带标签的训练集

    关于问题的内容,物体图片中可能的角度数量是无限的。如果您的训练集中只有四张图片,则测试示例的拍摄角度可能介于训练示例A和训练示例B之间,因此很难识别您的算法。训练集越大,识别目标的概率越高。小心:你永远不会达到你的算法将识别对象的绝对确定性。它只是变得更有可能。

    回答:

  • 如果要检测特定对象,而不需要考虑视点更改,则可以使用二维特征:

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

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


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

    取决于你将使用哪种算法。你知道你正在拍摄3D对象的2D照片吗?因为不同的旋转发生在三维空间,但识别必须发生在二维空间。如果可以重建3D对象,在3D空间中识别会容易得多,但这是一个很大的“如果”。@user2079303:请看我对问题的更新。@mAlters:请看我对问题的更新。@HashMap是否要检测任何瓶子/桌子/相机/汽车或一个特定的瓶子/桌子/相机/汽车?如果您想要检测的是一个特定的非变形对象,那么无需任何培训,该特定对象的几张图片就足够了。另一方面,如果你想检测一辆保时捷卡雷拉,几张福特福克斯的照片可能没有帮助;)谢谢你的回复。实际上主要是这样的。。假设我有两台笔记本电脑。一个是戴尔,另一个是惠普。两者都是笔记本电脑,但你知道,它们有明显的区别,包括标志。我们可以使用特征描述来实现这一点吗?()如果不能,那么“培训”过程的“难度”有多大?需要多少张照片?嗨,谢谢你的回复。所以是的,正如我在问题中提到的,想象一下我已经有了“马鲁蒂123型车”和“法拉利234型车”的照片。因此,如果相机看到这个“马鲁蒂123型汽车”(实时),那么它应该能够识别它是什么。它不应该把它和法拉利混淆。我们不必考虑其他汽车。“稍后”在这个应用程序中,我可能还需要识别这辆车的门、灯等。我期待您的回复。我会尝试使用无咖啡因的功能:谢谢!这是什么?谢谢。这些建议适用于实时情况,对吗?这意味着摄像机可以看到物体并实时识别它。也许为了实时检测,你应该试试Caffe:它比衰减快