opencv - Haar Classifier 正像集澄清

标签 opencv image-processing dlib haar-classifier cascade-classifier

您能否帮助了解与 Haar 分类器培训相关的几点:

1)正图像应该只包含训练对象还是可以包含其他一些对象?就像我想识别一些交通标志一样,正面图像应该只包含交通标志还是也可以包含高速公路?
2)创建样本矢量文件的方法有两种,一种是使用信息文件,其中包含检测到的正图像中的对象坐标,另一种只是给出正负列表。哪一个更好?
3)您通常如何创建信息文件,其中包含检测到的正图像中的对象坐标?图像剪辑器可以生成对象坐标吗?

自适应梯度的 dlib 直方图是否提供比 Haar 分类器更好的结果?
我的目标是树莓派中的交通标志检测。

谢谢

最佳答案

正样本(不一定是图像)应该只包含对象。有时无法为每个正样本获得正确的纵横比,然后您将添加一些背景或裁剪一些对象边界。最终检测器将检测正样本纵横比的区域,因此如果您在所有正样本周围使用大量背景,则最终检测器可能不会检测到交通标志的区域,而是具有大量背景的区域在你的交通标志周围。

Afaik,阳性样本必须由使用 opencv_createsamples.exe 创建的 .vec 文件提供,您需要一个带有描述的文件(图像中的阳性样本在哪里?)。我通常采用预处理标记的训练样本的方式,裁剪掉所有背景,以便只有中间图像,其中正样本填充整个图像并且图像已经是正确的纵横比。我为每个中间图像填充了一个基本上为“文件夹/文件名.png 0 0 宽度高度”的文本文件,然后从该中间图像创建一个 .vec 文件。但另一方面,使用全尺寸图像中的真实 roi 信息应该具有相同的质量。

请注意,如果您不为每个正样本固定相同的纵横比,您将拉伸(stretch)您的对象,这可能是您的任务中的问题,也可能不是问题。

请记住,您可以通过扭曲/转换图像来创建额外的正样本。 opencv_createsamples 可以为你做到这一点,但我从来没有真正使用过它,所以我不确定使用这些样本是否会受益于训练。

关于opencv - Haar Classifier 正像集澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45954957/

相关文章:

image - 从RGB到YCbCr的转换公式

c++ - 如何在不使用 cmake 的情况下在 visual studio 2015 中编译 dlib 19.2

python - Python 3.6 的 boost 和 dlib 安装期间出错

python - 遍历列表时跳过了一些值

c# - 如何从形状或点集合中检索外部点?

python - dlib人脸检测错误: Unsupported image type,必须是8位灰度或RGB图像

opencv - 将图像转换为矩阵,反之亦然?

android - 如何使用 Android Native OpenCV 在纵向 View 中使用前置摄像头

c++ - createButton OpenCV 新 Qt 功能

python - 如何从内存中解码jpg图像?