问题标签 [cascade-classifier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1049 浏览

opencv - opencv级联分类器检测背景

我一直在使用级联分类器来训练某种植物。这是我要检测的示例图像

小绿植物样品

我对小绿色植物进行了采样以获得正面效果,并从具有相似背景且没有绿色植物的图像中制作了底片(正如许多来源所建议的那样)。使用了许多与此类似的图像进行采样。

我没有很多训练数据,所以我当然没想到会有一些理想化的分类结果。

我已经设置了常用参数 min_hit_rate 0.95 max_false_alarm 0.5 等。我尝试过 5、6、7、8、9 和 10 个阶段的训练。发生在我身上的奇怪事情是,在训练过程中,我在所有阶段的命中率都是 1,而在 5 个阶段之后,我得到了很好的接受率 0.004(类似于后面的阶段 6、7、8...)。我尝试在用于训练样本的同一图像上测试我的分类器,但存在非常不合逻辑的行为:

  1. 分类器检测到几乎所有东西,但我从中提取的正样本(训练中的相同样本,HIT RATION EQUAL TO 1)。
  2. 分类器确实非常慢,单个输入图像需要一个多小时(下采样比例因子 1.1)。

我不明白如何在训练期间(通过所有阶段)将相同的样本分类为正样本,然后在图像上将其分类为正样本(周围有很多误报)。

我检查了所有内容一百万次(我以为我以某种方式混合了正面和负面,但我没有)。

有人可以帮我解决这个问题吗?

0 投票
2 回答
582 浏览

c++ - 使用 OpenCV CascadeClassifier 的内存泄漏

我正在编写一个使用 PCL kinfu 的程序,并且我正在使用 openCV 人脸检测。我遇到了一些堆问题,所以我隔离了 openCV 的代码来尝试检查问题是否在那里。在注释掉几乎所有内容后,我遇到了一些奇怪的事情。只有一个 'CascadeClassifier' 类的全局声明,它会导致 valgrind 对可能丢失但仍可访问的块发出警报。注释掉这个声明可以正常工作。我真的不确定发生了什么,并希望得到任何帮助。我附上了我有问题的代码(没有注释掉的部分)。谢谢!

0 投票
1 回答
997 浏览

matlab - Matlab 中级联训练“trainCascadeObjectDetector”中的错误

我正在尝试通过内置的 Matlab 函数“ trainCascadeObjectDetector ”训练级联分类器,但是当我调用此函数时,它总是显示以下错误消息:

样本数量为5000张正片和11000张负片。Matlab 版本是 2014a,在 Ubuntu 12.04 上运行。

我不确定是否需要增加更多的训练数据,因为错误信息是:

生成训练样本时出错。无法生成用于训练第一个级联阶段的样本。

你能看看这个吗?谢谢!

0 投票
1 回答
194 浏览

opencv - 我应该使用哪个函数在openCV中加载traincascade生成的xml文件?

我有 1300 多张正面图像和 20000 多张负面图像。我的正图像大小为 1080*1920,但我用它们创建了 45*45 的样本:

然后当我使用opencv_cascadetrain时,

然后我想使用 cascade.xml 文件来检测我的对象,我应该使用CascadeClassifier 还是 HOGDescriptor?有什么不同?我在哪里可以设置“nLevel”?

谢谢。

0 投票
1 回答
258 浏览

matlab - 将级联分类器从 Matlab 导入 OpenCV 3.0

我有一个用 Matlab 2014b 制作的级联分类器,但 XML 文件说它只与 OpenCV 2.4 兼容。我需要将它与 OpenCV 3.0 一起使用。有什么办法可以做到这一点?

谢谢

0 投票
2 回答
572 浏览

opencv - haar 分类器:从 haar cascade 获取的 XML 文件

我使用了 OpenCV 的典型 haar-cascade。并在训练过程中设置阶段为 5,但在 xml & cascade 文件夹中仅找到 3 个阶段。

为什么我的阶段比预期的少?有什么解决办法吗?

0 投票
1 回答
6759 浏览

c++ - OpenCV 帮助 - 错误:没有运算符“=”匹配这些操作数。操作数类型为 cv::Mat = IplImage*

我最近开始学习如何使用 OpenCV,并且一直在关注他们网站上的教程。我使用的是 OpenCV 3.0,但是,有些教程信息似乎已经过时了。

我和教程“级联分类器”链接: http: //www.docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html

他们提供的示例代码没有为我运行,我不明白为什么。我提供了下面的代码示例:

我的错误出现在第 38 行“frame = cvQueryFrame(capture);” “=”带有红色下划线,并给出问题标题中显示的错误消息

如果代码显示不正确,我很抱歉,这是我第一次提问。

0 投票
2 回答
8317 浏览

opencv - 用openCV检测嘴巴

我正在尝试使用 openCV 检测图像中的嘴巴,所以我使用以下代码:

分类器是haarcascade_frontalface_alt.xmlhaarcascade_mcs_mouth.xml

面部被正确检测但嘴巴没有被检测到:我还获得了眼睛和其他一些部位,比如前额。有没有办法只检测嘴巴?

0 投票
2 回答
1911 浏览

c++ - OpenCV 2.4.10 人脸检测适用于视频,但无法在静态图像中检测

我正在使用 OpenCV 的级联分类器来检测人脸。我按照网络摄像头教程进行操作,当它从笔记本电脑的网络摄像头流式传输视频时,我能够使用 detectMultiScale 来查找和跟踪我的脸。

但是当我从笔记本电脑的网络摄像头拍摄自己的照片时,我将该图像加载到 OpenCV 中,并在该图像上应用 detectMultiScale,由于某种原因,级联分类器无法检测到该静态图像上的任何人脸!

如果它是来自我的网络摄像头流的一帧,那么肯定会检测到该静态图像,但是当我只拍摄一张单独的图像时,什么都没有被检测到。

这是我使用的代码(刚刚挑选出相关行):

共同代码:

对于网络摄像头流式人脸检测:

对于我的静态图像人脸检测:

在我看来,这两个过程是相同的(唯一的区别是我获取原始图像的位置),但是视频流版本会定期检测人脸,而静态方法似乎永远无法找到人脸。

我在这里错过了什么吗?

0 投票
1 回答
496 浏览

c++ - 使用 LBP 训练 Haar 级联的问题

我正在尝试使用 haar_cascade 训练一些分支徽标。我所做的是,我拍摄了 2500 张 500 x 500 的平方图片来填充opencv_createsamples. 然后我将它们生成为:

opencv_createsamples -info 'logo.info' -vec '../logo.vec' -bg '../Negatives/bg.txt' -w 24 -h 24 -num 2500

在我的中,logo.info我有与每张图片的相对路径相对应的线条,其1 0 0 500 500含义是“在 (0,0) 和 (500, 500) 之间有一个对象”

然后我将级联训练为:

opencv_traincascade -data 'cascade/' -vec '../logo.vec' -bg '../Negatives/bg.txt' -numPos 2500 -numNeg 3019 -numStages 25 -featureType LBP -w 24 -h 24

使用这些参数:

参数:

cascadeDirName:级联/

vecFileName: ../logo.vec

bgFileName: ../Negatives/bg.txt

数量:2500

numNeg: 3019

阶段数:25

precalcValBufSize[Mb]:256

precalcIdxBufSize[Mb]:256

舞台类型:BOOST

特征类型:LBP

样本宽度:24

样品高度:24

升压类型:GAB

最低命中率:0.995

最大假警报率:0.5

重量修剪率:0.95

最大深度:1

最大弱计数:100

我有两种错误:

  1. OpenCV 错误:在 cvPreprocessIndexArray,文件 /tmp/buildd/opencv-2.3.1/modules/ml/src/inner_functions.cpp,第 432 行终止调用中的参数值之一超出范围(未选择组件/输入变量!)抛出'cv :: Exception'实例后what():/tmp/buildd/opencv-2.3.1/modules/ml/src/inner_functions.cpp:432:错误:(-211)未选择组件/输入变量!在函数 cvPreprocessIndexArray

在此处输入图像描述

...

在此处输入图像描述

当您在图像数量-num参数之间没有显着差异时,通常会发生此错误。所以,让我们尽量少给100!

好吧,当我将参数调整为不从数组中输出时,我得到与图像相同类型的输出,但出现此错误:

OpenCV 错误:写入中的断言失败(tempNode->left),文件 /tmp/buildd/opencv-2.3.1/modules/traincascade/boost.cpp,第 628 行终止在抛出“cv::Exception”实例后调用什么(): /tmp/buildd/opencv-2.3.1/modules/traincascade/boost.cpp:628: 错误: (-215) tempNode->left in function write

中止

我试过了:

  • 更改图像的命运尺寸(24x24、36x36...)
  • 更改-mode参数。
  • 尝试放置 #positiveSamples < #negativeSamples 和 #positiveSamples > #negativeSamples

我必须做的是用 LBP(不是 HAAR)进行强制性培训。有人有任何线索吗?

先感谢您。