Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Image processing 将多个Haar分类器与OpenCV相结合_Image Processing_Opencv_Computer Vision_Cascade_Classification - Fatal编程技术网

Image processing 将多个Haar分类器与OpenCV相结合

Image processing 将多个Haar分类器与OpenCV相结合,image-processing,opencv,computer-vision,cascade,classification,Image Processing,Opencv,Computer Vision,Cascade,Classification,我想知道是否有一种方法可以组合来自不同训练级联的Haar分类器? 我有一个场景,我检测到一个物体,它根据物体的角度而不同。所以我分离了我的训练样本来训练多个分类器。他们在课堂上表现良好。现在我按顺序运行它们,这花费了我很多计算时间 我认为OpenCV可能每次都在计算所有的特性,因此每次都会进行新的迭代。我想,如果我可以通过OR操作组合分类器,那么OpenCV可能只需要使用一个级联,因此只需迭代一次,只需计算一次所需的特征,以此类推。这可能会显著提高我的性能。然而,我不确定是否(以及如何)可以做到

我想知道是否有一种方法可以组合来自不同训练级联的Haar分类器? 我有一个场景,我检测到一个物体,它根据物体的角度而不同。所以我分离了我的训练样本来训练多个分类器。他们在课堂上表现良好。现在我按顺序运行它们,这花费了我很多计算时间

我认为OpenCV可能每次都在计算所有的特性,因此每次都会进行新的迭代。我想,如果我可以通过OR操作组合分类器,那么OpenCV可能只需要使用一个级联,因此只需迭代一次,只需计算一次所需的特征,以此类推。这可能会显著提高我的性能。然而,我不确定是否(以及如何)可以做到这一点。也许其他人以前也尝试过类似的东西

干杯!
--artur

我将我的每一个任务作为一个单独的并行任务运行。

我不会等待所有任务,而是通过引发事件来处理每一个任务。

好吧,当你训练一个特定的分类器时,AdaBoost算法(在每个阶段)会选择不同的功能来最小化训练错误。该程序适用于级联的每个阶段

不幸的是,对于每个对象,这些特征都不相同(虽然特征形状的数量固定,但大小不同),因此特征空间也不相同。
因此,即使有一种方法可以组合这些分类器,其好处也是微乎其微的,因为对于不同的对象,您可能没有相同的功能,因此您需要重新评估几乎所有的功能。

这确实没有给我带来太多的加速。我不确定我是否做错了。我使用boost::thread_group运行6个经过训练的haar级联。在我将它们添加到组中之后,我调用join_all()来运行它们并等待它们全部完成。相比之下,虽然我得到了这个结果(核心2四核,3 GHz和4 Gb Ram):6个级联:并行:1,16s,正常:1,45s | 9个级联:并行:1,4s,正常:1,85s | 12个级联:并行:1,68s,正常:2,14S |我使用高分辨率图像(1920x1080)通过预处理来限制我使用级联的区域。但是你正在做的是等待所有线程结束,所以不会提供太多的加速。您应该做的是在每个线程结束时处理它们-这将为您加快速度。另外,试着计算哪个线程占用的时间最长,然后首先运行那个线程。