OpenCV 级联分类器训练

Posted

技术标签:

【中文标题】OpenCV 级联分类器训练【英文标题】:OpenCV Cascade Classifier Training 【发布时间】:2017-11-21 14:50:27 【问题描述】:

我参考this tutorial 和this file 来训练我自己的分类器。但我遇到了一些问题。

    我使用 objectmarker.exe 来生成 info.txt。在 info.txt 中,每条记录都有不同的宽度和高度,但它们都保持矩形的比例。那么,02 haarTraining.bat中的width和height参数的值应该怎么设置呢?

    负样本的宽度和高度也应该跟随正样本?

2017 年 6 月 20 日更新

例如,我使用objectmarker.exe 标记了以下2 个图像(标记区域表示为绿色矩形)。但是这2个矩形的宽高是不一样的。

在 info.txt 中:

rawdata/IMG_20170616_170411.jpg 1 993 424 201 284 
rawdata/IMG_20170616_170544.jpg 1 895 994 69 95 

因此,我不知道如何在 02 haarTraining.bat 中配置宽度和高度参数。

【问题讨论】:

没看完整个视频,但是好像他们选择了所有的阳性样本作为numPos,不太好!每个阶段都会丢失一些正样本,因此正样本应该比 numPos 多。 我不明白为什么正样本> numPos。 numPos 用于告诉 haartraining.exe 有多少样本用于训练。因此,numPos 的值应该等于正样本的数量。我错了吗? numPos 是每个阶段的正样本数!如果您的 minHitrate ***.com/questions/44337461/… 【参考方案1】:

    所以你的阳性标记样本的纵横比是固定的吗?选择您仍想检测的物体的最小尺寸,但要足够大以拥有所有必要的特征(所以也许您必须多次训练并选择最好的——在原始人脸检测论文中就是这样完成的)。

    负样本只是不允许包含目标对象,大小无关紧要,每个负样本中的每个(调整大小的)图像(子)窗口都将用作负样本。

例如,如果您想在图像中检测样本大小为 28x24 的猫,您可以提供一张 8000x6000 的街景图像,其中没有任何猫,这将自动为训练提供大量大小为 28x24 的负样本。

【讨论】:

长宽比不固定。我更新了一个例子,你能给我一些建议吗? 您必须固定纵横比并调整标记区域(例如添加一些背景)以适应纵横比。但是,如果您可以稍微扭曲对象(例如,纵横比“几乎”固定),那么调整标记对象的大小可能对您来说是可以的。要选择样本大小,您可以使用平均/中值纵横比。

以上是关于OpenCV 级联分类器训练的主要内容,如果未能解决你的问题,请参考以下文章

如何利用opencv进行样本训练

opencv训练好的分类器都有哪些

OpenCV3.1.0级联分类器训练与使用

OpenCV 级联分类器训练

级联分类器训练-----OpenCV

OpenCV:良好的训练输出但级联分类器很差