【cascades训练】 使用Cascade Trainer GUI进行级联分类器训练

Cascade Trainer GUI

一、简介
Cascade Trainer GUI 是一个可用于训练、测试和改进级联分类器模型的程序。 它使用图形界面来设置参数,并且可以轻松使用 OpenCV 工具来训练和测试分类器。

如果您不熟悉对象检测和分类器的概念,请考虑访问 http://opencv.org 了解更多信息。

2.安装
2.1。 先决条件
目前 Cascade Trainer GUI 可以在 Windows(7 或更高版本)上使用。 安装过程非常简单,只需按下几个“下一步”按钮。

3. 如何使用
本节介绍 Cascade Trainer GUI 的不同部分和功能。请注意,通过将鼠标移到图形界面上的每个元素上,您将在底部状态栏中获得对其的简短描述。

当 Cascade Trainer GUI 首次启动时,您将看到以下屏幕。这是起始屏幕,可用于训练分类器。要训​​练分类器,您通常需要为实用程序提供数千个正负图像样本,但在某些情况下,您可以用更少的样本实现相同的目标。

要开始训练,您需要为分类器创建一个文件夹。在里面创建两个文件夹。一个应该是“p”(用于正图像),另一个应该是“n”(用于负图像)。

例如,您应该有一个名为“Car”的文件夹,其中包含提到的文件夹。

正图像样本是您要训练分类器和检测的对象的图像。

例如,如果你想训练和检测汽车,那么你需要有很多汽车图像。

你也应该有很多negative images。Negative images绝非汽车。

重要说明 1:Negative images must NEVER include any positive images. Not even partially.。

重要说明 2:理论上,负样本图像可以是任何不是正图像的图像,但实际上,负样本图像应该与正样本图像相关。例如,使用天空图像作为负样本图像对于训练一个好的汽车分类器来说是一个糟糕的选择,即使它对整体准确率没有坏影响:

首先按“train”选项卡中的“浏览”按钮。选择您为分类器创建的文件夹。

Common、Cascade 和 Boost 选项卡可用于设置大量参数以自定义分类器训练。 Cascade Trainer GUI 默认为这些参数设置了最优化和推荐的设置,但每次训练仍需要修改一些参数。 请注意,所有这些参数的详细描述超出了本帮助页面的范围,需要深入了解级联分类技术。

您可以设置预计算缓冲区大小以帮助提高训练过程的速度。 您可以为这些分配尽可能多的内存,但请注意不要分配太多或太低。 例如,如果您的计算机上有 8 GB 的 RAM,那么您可以安全地将以下两个缓冲区大小设置为 2048。

接下来,您需要设置样本的宽度和高度。 确保不要将其设置为非常大的尺寸,因为它会使您的检测非常缓慢。 实际上,始终为此设置一个较小的值是非常安全的。 样本宽度和高度的推荐设置是您将一个方面保持在 24,并相应地设置另一个方面。 例如,如果您有 320×240 的样本图像,则首先计算宽高比,在这种情况下为 1.33:1,然后将较大的数字乘以 24。样本宽度和高度将得到 32×24。

您还可以将特征类型设置为 HAAR 或 LBP。 确保仅当您拥有 OpenCV 3.1 或更高版本时才使用 HOG。 HAAR 分类器非常准确,但需要更多时间来训练,因此如果您可以为分类器提供许多样本图像,则使用 LBP 会更明智。 另一方面,LBP 分类器不太准确,但训练速度更快,检测速度快 3 倍。

至于 Boost 选项卡中的参数,建议保留默认值,除非您非常确定自己在做什么。

设置好所有参数后,按底部的 Start 按钮开始训练您的级联分类器。 训练进行时,您将看到以下日志屏幕。

等待训练完成。

现在,如果您退出 Cascade Trainer GUI 并转到分类器文件夹,您会注意到在此文件夹中创建了新文件和文件夹。

“n”和“p”是熟悉的,但其余的是新的。 “分类器”文件夹包含在不同训练阶段创建的 XML 文件。 如果您检查“分类器”文件夹中的内容,您会注意到类似于以下内容的内容。

“stage#.xml”文件是不再需要的临时文件。

“params.xml”包含您用于训练的参数。 (只是一个提醒文件)

“cascade.xml”是实际的级联分类器,如果训练成功完成,那么您应该在分类器文件夹中有这个文件。

“neg.lst”、“pos.lst”和“pos_samples.vec”是为训练分类器而创建的临时文件,也可以删除它们而不会产生任何影响。

 

要测试您的分类器,请从顶部的选项卡栏中转到“测试”选项卡,并按如下所述设置选项,最后按“开始”。

使用顶部的浏览按钮选择您的级联分类器。您也可以在 Cascade Classifier XML 字段中手动输入级联 XML 文件的路径。这个级联分类器将用于图像和/或视频中的检测。

输入设置可以选择以下其中一项,需要根据该选项设置路径:

• 单幅图像:将使用单幅图像作为进行检测的场景。在这种情况下,路径应指向单个图像文件。 (只能选择支持的图像。)

• 文件夹中的图像:包含许多图像的文件夹将用于测试。在这种情况下,路径应设置为包含一个或多个场景图像的文件夹。

• 视频:视频文件将用于测试分类器。在这种情况下,路径应该指向将用作输入的视频文件。

设置输入设置后,是时候进行输出设置了。输出类型和路径应根据输入设置中选择的内容进行设置。见下文:

• 文件夹中的图像:检测到的对象将保存到文件夹内的多个图像中。在这种情况下,路径应设置为文件夹。请注意,此选项可以与输入中的所有可能选项一起使用。

• 视频:将创建一个视频文件,其中检测到的对象以红色矩形突出显示。在这种情况下,路径应该指向将在测试完成后创建的视频文件。请注意,只有在输入设置中选择了视频时,此选项才有效。

单击开始按钮后,测试将开始。 您将看到一个进度条和以下带有结果的预览屏幕。

您还可以使用裁剪工具从要检测的对象中裁剪图像。 它提供了非常简单的工具来实现这一点。 尝试使用相关的负样本像,并始终单独训练 too much visually different.视觉差异太大的对象。 您可以从视频文件中的帧或充满图像的文件夹中裁剪图像。

4. 下载
更新:2017 年 7 月 5 日(错误修复和裁剪器改进 - 版本 3.3.1)

更新时间:2017 年 3 月 13 日(将 Windows 版本更新至 3.1.1.0,其中包括固定裁剪工具)

更新时间:2016 年 11 月 9 日(将 Ubuntu 版本更新到 2.1.10)

更新日期:2016 年 11 月 7 日(对裁剪器、训练和测试实用程序进行了许多增强。适用于 Windows 的 x64 版使用英特尔 TBB 构建,现在用于训练的速度更快。它也是目前推荐的版本。)

更新日期:2016 年 10 月 27 日(向 UI 添加了另外两个参数。Neg 计数和 Pos 使用百分比。)

更新:2016 年 10 月 19 日(修复了正片和负片图像文件夹中的文件名问题。)

https://amin-ahmadi.com/downloadfiles/cascadetrainergui/CascadeTrainerGUI_3.3.1_x86_Setup.exeicon-default.png?t=M4ADhttps://amin-ahmadi.com/downloadfiles/cascadetrainergui/CascadeTrainerGUI_3.3.1_x86_Setup.exe

Cascade Trainer GUI 3.3.1 (Windows x86)

https://amin-ahmadi.com/downloadfiles/cascadetrainergui/CascadeTrainerGUI_3.3.1_x64_Setup.exeicon-default.png?t=M4ADhttps://amin-ahmadi.com/downloadfiles/cascadetrainergui/CascadeTrainerGUI_3.3.1_x64_Setup.exe

Cascade Trainer GUI 3.3.1 (Windows x64)

使用“Contact Me ”页面让我了解问题或您的建议。

参考:

Cascade Trainer GUI - Amin (amin-ahmadi.com)icon-default.png?t=M4ADhttps://amin-ahmadi.com/cascade-trainer-gui/

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用OpenCV库可以很方便地实现基于Haar Cascades的人脸检测。以下是一个Python示例代码,演示如何使用“haarcascade_frontalface_default.xml”分类器来检测图像中的人脸: ```python import cv2 # 加载分类器 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 读取图像 img = cv2.imread('test.jpg') # 转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 检测人脸 faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5) # 绘制人脸框 for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) # 显示结果 cv2.imshow('img', img) cv2.waitKey() ``` 在上面的代码中,我们首先加载了“haarcascade_frontalface_default.xml”分类器,并读取了一张测试图像。然后我们将图像转换为灰度图像,因为在灰度图像中进行人脸检测更加准确。接着,我们调用detectMultiScale函数来检测人脸。该函数返回一个由人脸坐标组成的列表。最后,我们遍历人脸列表并在图像中绘制矩形框来表示检测到的人脸。最后,我们使用OpenCV的imshow函数将结果显示出来。 需要注意的是,detectMultiScale函数有两个重要的参数:scaleFactor和minNeighbors。scaleFactor控制图像缩放比例,minNeighbors控制人脸检测器在多少个相邻矩形框内检测到人脸才认为该矩形框中存在人脸。这些参数的值需要根据具体情况进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值