问题标签 [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.
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...)。我尝试在用于训练样本的同一图像上测试我的分类器,但存在非常不合逻辑的行为:
- 分类器检测到几乎所有东西,但我从中提取的正样本(训练中的相同样本,HIT RATION EQUAL TO 1)。
- 分类器确实非常慢,单个输入图像需要一个多小时(下采样比例因子 1.1)。
我不明白如何在训练期间(通过所有阶段)将相同的样本分类为正样本,然后在图像上将其分类为正样本(周围有很多误报)。
我检查了所有内容一百万次(我以为我以某种方式混合了正面和负面,但我没有)。
有人可以帮我解决这个问题吗?
c++ - 使用 OpenCV CascadeClassifier 的内存泄漏
我正在编写一个使用 PCL kinfu 的程序,并且我正在使用 openCV 人脸检测。我遇到了一些堆问题,所以我隔离了 openCV 的代码来尝试检查问题是否在那里。在注释掉几乎所有内容后,我遇到了一些奇怪的事情。只有一个 'CascadeClassifier' 类的全局声明,它会导致 valgrind 对可能丢失但仍可访问的块发出警报。注释掉这个声明可以正常工作。我真的不确定发生了什么,并希望得到任何帮助。我附上了我有问题的代码(没有注释掉的部分)。谢谢!
matlab - Matlab 中级联训练“trainCascadeObjectDetector”中的错误
我正在尝试通过内置的 Matlab 函数“ trainCascadeObjectDetector ”训练级联分类器,但是当我调用此函数时,它总是显示以下错误消息:
样本数量为5000张正片和11000张负片。Matlab 版本是 2014a,在 Ubuntu 12.04 上运行。
我不确定是否需要增加更多的训练数据,因为错误信息是:
生成训练样本时出错。无法生成用于训练第一个级联阶段的样本。
你能看看这个吗?谢谢!
opencv - 我应该使用哪个函数在openCV中加载traincascade生成的xml文件?
我有 1300 多张正面图像和 20000 多张负面图像。我的正图像大小为 1080*1920,但我用它们创建了 45*45 的样本:
然后当我使用opencv_cascadetrain时,
然后我想使用 cascade.xml 文件来检测我的对象,我应该使用CascadeClassifier 还是 HOGDescriptor?有什么不同?我在哪里可以设置“nLevel”?
谢谢。
matlab - 将级联分类器从 Matlab 导入 OpenCV 3.0
我有一个用 Matlab 2014b 制作的级联分类器,但 XML 文件说它只与 OpenCV 2.4 兼容。我需要将它与 OpenCV 3.0 一起使用。有什么办法可以做到这一点?
谢谢
opencv - haar 分类器:从 haar cascade 获取的 XML 文件
我使用了 OpenCV 的典型 haar-cascade。并在训练过程中设置阶段为 5,但在 xml & cascade 文件夹中仅找到 3 个阶段。
为什么我的阶段比预期的少?有什么解决办法吗?
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);” “=”带有红色下划线,并给出问题标题中显示的错误消息
如果代码显示不正确,我很抱歉,这是我第一次提问。
opencv - 用openCV检测嘴巴
我正在尝试使用 openCV 检测图像中的嘴巴,所以我使用以下代码:
分类器是haarcascade_frontalface_alt.xml
和haarcascade_mcs_mouth.xml
。
面部被正确检测但嘴巴没有被检测到:我还获得了眼睛和其他一些部位,比如前额。有没有办法只检测嘴巴?
c++ - OpenCV 2.4.10 人脸检测适用于视频,但无法在静态图像中检测
我正在使用 OpenCV 的级联分类器来检测人脸。我按照网络摄像头教程进行操作,当它从笔记本电脑的网络摄像头流式传输视频时,我能够使用 detectMultiScale 来查找和跟踪我的脸。
但是当我从笔记本电脑的网络摄像头拍摄自己的照片时,我将该图像加载到 OpenCV 中,并在该图像上应用 detectMultiScale,由于某种原因,级联分类器无法检测到该静态图像上的任何人脸!
如果它是来自我的网络摄像头流的一帧,那么肯定会检测到该静态图像,但是当我只拍摄一张单独的图像时,什么都没有被检测到。
这是我使用的代码(刚刚挑选出相关行):
共同代码:
对于网络摄像头流式人脸检测:
对于我的静态图像人脸检测:
在我看来,这两个过程是相同的(唯一的区别是我获取原始图像的位置),但是视频流版本会定期检测人脸,而静态方法似乎永远无法找到人脸。
我在这里错过了什么吗?
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
我有两种错误:
- 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)进行强制性培训。有人有任何线索吗?
先感谢您。