所提出系统的检测阶段主要是在输入图像上移动目标大小的窗口,并为图像的每个子部分计算类 Haar 特征。然后将此差异与将非对象与对象分开的学习阈值进行比较。
这种方法的最大优点是计算速度。由于使用 积分图像可以快速有效地生成网格的矩形子集中的值的总和,因此可以在恒定时间内计算出任何大小的类 Haar 特征(对于 2 个矩形特征大约需要 60 条微处理器指令) )。
图 1 显示了一个示例视频的单帧。该图像包含行人作为对象。图 2 是使用 MOG2 背景减法后的输出快照。行人下方的灰色部分代表人的影子。
图 1 视频样本帧
作为提高性能的预处理步骤,在 OpenCV 库函数的帮助下使用 MOG2 执行背景减法。用于行人检测的 MOG2 减法结果如图 2 所示。
图 2 背景扣除后的结果
接下来,我们创建要检测的各种对象(目标对象)的 XML 文件,即公共汽车、汽车、双轮车和行人各有一个 XML 文件。参与创建的步骤
XML文件如下所示
涉及的各种过程的流程图
为了实现上述步骤,我们使用了一种称为 Haar 训练工具的特殊工具。该工具由用于创建 XML 文件的各种文件和文件夹组成,如下图所示。
第 1 步:正负图像集的收集
对于正图像数据集,一些图像是从视频中手动裁剪出来的,其余图像是从互联网上下载的。负片图像通过 ImageNet 下载并进行灰度处理,因为与彩色图像相比,这些图像的处理速度和性能既高又简单。然后将所有负图像放置在名为负的文件夹中,然后将所有正图像放置在训练工具文件夹的正文件夹中名为 rawdata 的文件夹中。
公共汽车、汽车、行人和两轮车的正面形象
放置在负片文件夹中的灰度负片图像
正图像是包含目标对象的图像,负图像是没有目标对象的图像。
第 2 步:创建 info.txt、bg.txt 和 Vector 文件
在这一步中,我们转到否定文件夹并单击批处理文件-create_list.bat。这反过来会创建一个文件 bg.txt,其中包含如下所示的负面图像的名称列表
接下来,我们创建 info.txt 文件,该文件告诉我们正图像中对象的确切位置、对象的数量、其 x 坐标、y 坐标等。为此,我们使用一个工具
称为 objectmarker.exe
使用对象标记工具,我们在原始数据文件夹中给出的每个正图像中标记对象,方法是使用矩形框包围对象,然后按
在对 rawdata 文件夹中的所有图像执行上述过程后,objectmarker 工具将关闭并创建一个名为 info.txt 的文件,如下所示,其中提供了有关正图像和在其中检测到的对象的详细信息。
例如, info.txt 中的“rawdata/a1.bmp 1 32 97 236 236”行表示名为“a1.bmp”的正图像存储在路径“rawdata/a1.bmp”中 有1个对象它,放置在给定的位置:
x 坐标 = 32,y 坐标 = 97,宽度 = 236,高度 = 236。
接下来,我们为正图像创建了矢量文件。在 文件夹 ..\training\ 中有一个名为 samples_creation 的批处理文件。蝙蝠。Bath 文件的内容如下所示。createsamples.exe -info positive/info.txt
–vec 向量/objectvector.vec –num 200 -w 24 -h 24
主要参数:
-info positive/info.txt正信息文件的路径
-vec vector/objectvector.vec 输出矢量文件的路径
-num 200 要处理 的正文件数
打包成矢量文件
-w 24对象的宽度
-h 24对象的高度
这个批处理文件加载 info.txt 并将对象图像打包成一个矢量文件,名称为例如 objectvector.vec 。运行批处理文件后,我们将在文件夹..\training\vector 中得到文件objectvector.vec。
第 4 步:训练 Haar 分类器
在 这个 步骤中, 我们 点击 了 haartraining.exe 文件 ,其开始 的 哈尔 分类 培训。在 下面的 东西 已经在haarTraining.bat文件中设置。
bat 文件用于定义矢量文件的位置、负文件、使用的正负图像的数量 - 此处均为 200,分配给该训练程序的内存(以 MB 为单位)-此处为 4096MB、宽度和样本图像的高度 - 此处为 24,此处为 20 的训练阶段数。此处 - 数据级联表示路径并用于存储分类器的级联。
使用haartraining.exe 时会出现上述屏幕。这里
父节点: 定义当前训练过程中的阶段
N:本阶段使用的特征数
%SMP:样本百分比(用于此功能的样本百分比)
F:“+”如果翻转(应用对称时)和“-
” 如果不是
ST.THR: 阶段阈值
HR:基于阶段阈值的命中率
FA:基于阶段阈值的误报
经验值 ERR:强分类器的指数误差
训练师在第10阶段的图像如下所示。在这里,我们观察到整体错误检测/警报(FA)已经减少,使用的特征没有增加,训练所需的时间也随着阶段的增加而增加。
第 5 步:创建 XML 文件
上述过程结束后,cascades 文件夹加载了 0 到 N-1 个文件夹,其中 N 是我们在 haarTraining.bat 文件中输入的阶段数。每个文件夹都包含一个名为 AdaBoostCARTHaarClassifier.txt 的文件。现在我们将所有这些文件夹复制到cascade2xml/data文件夹,如下所示。
现在我们应该将所有创建的阶段(分类器)合并到一个 XML 文件中,这将是我们的最终文件,即“类 Haar 分类器的级联”。然后我们将convert.bat 文件设置为要创建的xml 文件的名称、宽度和高度。然后我们通过单击 haarconv.exe 创建 XML 文件。之后我们将得到如下所示的 myobjectdetector.xml 文件。
同样,我们为汽车、行人、两轮车等创建 XML 文件。
该 生成的XML文件,然后与级联分类器的命令处理的OpenCV,然后将每个帧被转换成灰度级作为彩色帧 降低了处理速度。
下一步涉及到 由detectMultiScale完成的物体检测,该命令的重要参数是比例因子,它在避免误检和漏检方面起着重要作用。尝试了各种比例因子的值,并为每个汽车、公共汽车、两轮车和行人检测选择最合适的一个,因此在检测到的对象上绘制矩形。
使用用于检测公共汽车、汽车、行人和两轮车等物体的各种 xml 文件后获得的结果示例图像如下所示。
总线检测
汽车检测
两轮车检测
行人检测