问题标签 [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.
python - 级联分类器 HAAR LBP 建议
我正在使用 OpenCV 和 python 来训练 HAAR 和 LBP 分类器来检测视频帧中的白细胞。由于这个问题本质上是 2D 的,它应该比开发其他对象分类器更容易,并且视频帧之间有很好的一致性。
到目前为止,我一直在使用本教程:
http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html
这是视频中的一个示例帧,我正在尝试检测较小的明亮物体:
正图像:-> nubmer=60 -> filetype=JPG -> 宽度 = 50 -> 高度 = 80
负片: -> number= 600 -> filetype=JPG -> width = 50 -> height = 80
NB 负图像被提取为视频中所有帧的随机框,然后我简单地删除了任何我认为包含单元格的图像,即正图像。
为问题设置图像后,我继续按照编码 robin 的说明运行分类器:
这会引发错误:
无法填充临时阶段的训练数据集。分部培训终止。
但是,如果我尝试使用不同的参数,则会生成文件“cascade.xml”,同时使用 HAAR 和 LBP,更改 minHitRate 和 maxFalseAlarmRate。
为了在我的图像上测试分类器,我有一个 python 脚本
这不是找到我想要的对象,当我使用不同的参数运行它时,有时它会找到 67 个对象,有时是 0,但不是我试图检测的对象。谁能帮我调整代码以正确找到对象。非常感谢
opencv - 使用 OpenCV 二进制提高 Haar 训练的准确性
我一直在使用经过训练的 Haar Cascades 和 LBP 级联,这个opencv_traincascade
工具非常棒。
我想听听有关如何生成更大的数据库的一些目的,这实际上可以提高准确性。我的意思是:假设我们有 2,000 张正面图像和 10,000 张负面图像。对于 CNN(卷积神经网络),我已经旋转、翻译和缩放图片,以便将这 2,000 个图像乘以 8,000 个正样本,这确实改善了结果,但我真的不清楚我可以为级联训练做什么。
我的目的是:
- 生成带有噪声的正集的一部分。例如:
- 使用高光或混合器生成正集的一部分。
您是否使用过其他任何东西或尝试过可以提高准确性的东西?
先感谢您。
拉斐尔。
image-processing - 训练级联分类器
我有一些关于级联分类器训练的问题:
- 在我的一些照片上,物体的一半是可见的。我应该将可见部分标记为感兴趣区域,将图片用作负样本还是将其完全整理出来?
- 分类器是否能够检测到仅部分可见的对象(使用 Haar 特征)?
- 负样本和正样本的比例应该是多少?我经常读到你应该使用更多的负样本。但是例如在这个线程中提到该比率应该是 2:1(更多的正样本)。
- 我当前的分类器检测到很多误报。根据本教程,您可以增加阶段数或降低每个阶段的误报率。但是我不能在不增加误报率的情况下增加阶段数。如果我只是增加阶段的数量,训练会在某个时候停止,因为分类器的样本用完了。减少误报以增加样本数量的唯一方法是什么?
如果有人能回答我的一个问题会很高兴:)
c++ - 如何调整应裁剪和缩放面部以适合大小的图像大小?
我的网络摄像头拍摄图像。但是 opencv 性别分类需要图像与用于训练的图像大小相同。所以我需要我的网络摄像头图像为 300x300,其中网络摄像头图像中的人脸适合 300x300 的分辨率。
我已经使用 opencv 人脸级联分类器识别了网络摄像头图像中的人脸。
但是我怎样才能裁剪那张脸以适应 300x300 的大小呢?
请帮助一些代码行,因为我是opencv的新手。
opencv - OpenCV:良好的训练输出但级联分类器很差
对 OpenCV 来说非常新,我尝试训练一个可以从侧面检测狗图像的 haar 分类器。我已将本教程用作指南。作者建议可以使用数量惊人的样本图像来训练一个相对有效的分类器。按照他的指示,我收集了 40 个阳性和 600 个阴性,然后使用提供的脚本以 .vec 文件的形式生成更多样本。通过 20 个阶段的训练大约需要一周半的时间,参数如下:
在最后一个阶段,Neg Count Acceptance Ratio 下降到 0.000579——我认为这意味着 0.0579% 的负样本被错误地归类为正样本,即在它们没有的情况下有狗。换言之,99.942% 的样本被正确识别。这些对我来说似乎是相当不错的数字,但是当我将分类器 .xml 文件插入面部检测程序时,结果很糟糕。
这是用于分析全黑图像的分类器图片(设备的摄像头平放在工作台上,以防止任何光线进入):
(想象一个黑色的屏幕,有几个随机放置的绿色矩形边框,有些重叠。可悲的是,我似乎没有必要的声誉来发布真实的东西......)
我对修复分类器的最佳猜测是,我需要使用更大的负样本和正样本池进行重新训练。
我真正想知道的是:为什么分类器的接受率和真实世界的性能如此不同?我是否误解了接受率的含义?如果我对比率的理解是正确的,我应该期望什么样的数字会给我一个有效的分类器?
任何帮助将不胜感激。
opencv - 级联分类器无法训练。检查使用的训练参数
我需要检测扫描文档中的特殊图像(类似于符号 +)。我将使用 opencv_traincascade 程序(opencv 3.0)训练级联
这是我的文件结构:
这是我的 Bad.dat:
这是我的 Good.dat(每个好的文件都完全包含特殊图像,仅此而已)
我已经成功创建了 vec 文件。
这是 opencv_traincascade 的调用和结果
如您所见,有一些错误。你能帮我看看到底出了什么问题吗?“检查使用的训练参数”是一个非常笼统的短语。
(文件夹 C:\opencv\build\x64\vc12\bin\haarcascade 存在)
c++ - 为什么 OpenCV 的级联分类器和 HOGDescriptor 之间的 detectMultiScale 的尺度变化实现存在差异?
我知道 OpenCV 中的 detectMultiScale 是如何工作的要点,即你有一个图像和一个检测窗口;图像由检测窗口扫描,并在该特定实例上对窗口中的像素进行特定特征计算,以确定是否发生检测。
但是,从 OpenCV 的文档看来,无论您是否使用
级联分类器;代码可以在这里找到
或者如果您使用的是 HOGDescriptor;代码可以在这里找到
OpenCV 的文档指出,级联分类器 detectMultiScale 使用 scaleFactor 来减小检测发生的图像大小,直到它小于检测窗口,而 HOGDetector detectMultiScale 有一个比例因子(scale0),它增加检测窗口直到它是检查检测的图像的大小。
为什么两者有区别?一种实现是否比另一种更好?
目前,我已经在 OpenCV 2.4.8 中训练了具有 HOG 特征的级联分类器以及 SVM 和 HOG 特征 (HOGDescriptor)。
先感谢您
opencv - OpenCV:训练级联分类器
我正在尝试使用 OpenCV、教程和UIUC Image Database for Car Detection来训练级联分类器。但是,训练在第 0 阶段“挂起”并且永远不会生成任何文件;在本教程中,只需几分钟即可看到结果。
我在运行 Yosemite (10.10.5) 的 2015 MBP 上运行使用 conda 安装的 OpenCV 2.4.8
脚步:
- 下载数据集并将正图像保存在 pos 文件夹中,将负图像保存在 neg 文件夹中
为正图像生成一个 txt 文件
/li>为负片图像生成一个 txt 文件
/li>从 cars.txt 生成一个 vec 文件
/li>创建一个
/li>data
目录火车级联
/li>
输出:
我已经等了几个小时,但培训没有进展,也没有在我的data
目录中生成任何文件。是什么导致“挂起”?
android - 是否可以在 Android 上使用 OpenCV 进行缩放和聚焦?
我正在使用 OpenCV 在 Android 上进行一些图像检测。我注意到,如果试图将 OpenCV 相机放在一个小物体上,它会非常模糊。有没有办法缩放相机和/或自定义对焦模式?我熟悉在常规 android 相机类上实现触摸焦点,但不确定 OpenCV 的类有什么可能。我在网上找不到太多关于此的内容。
干杯,凯文
c++ - 错误 C2679:二进制“=”:未找到采用“IplImage *”类型的右侧操作数的运算符(或没有可接受的转换)OpenCV
您好我正在尝试使用此代码Cascade Classifier。我得到了标题错误。我正在使用 VS 2013 和 OpenCV 3.0。
我是新手,我不明白为什么这段代码适用于除我之外的所有人?修复它的方法是什么?
这里的错误行: