哈尔特征级联分类器训练

介绍

使用级联分类器包括两个主要阶段:训练和检测阶段。使用HAAS或LBP模型的检测阶段,在对象检测教程中描述。本文档概述了训练自己增强的级联分类器所需的功能。目前的指南将f所有不同的阶段:收集训练数据,准备训练数据和执行实际的模型训练。
为了支持这教程,OpenCV官方将几个应用程序:opencv_createsamples,opencv_annotation,opencv_traincascade和opencv_visualisation。

训练数据的准备

为了训练一个增强的弱分类器级联,我们需要一组正样本(包含想要检测的实际对象)和一组负图像(包含您不想检测的所有内容)。负样本集必须手动编写的,而设置的正样品用opencv_createsamples创建的应用程序。

负样本

负样本是从任意的图像,不包含你想要检测对象。生成这些样本的这些负面图像应该列在一个特殊的负图像文件中,每行包含一个图像路径(可以是绝对的或相对的)。注意,负样本和示例图像也被称为背景样本或背景图像,并在本文档中交替使用。
描述的图像可能大小不同。然而,每个图像应等于或大于所需的培训窗口大小(对应的模型尺寸,大部分的时间是你的对象的平均大小),因为这些图像被用于一个给定的负面形象成几个图像样本训练样本有这个窗口的大小。
这种负面的描述文件的一个例子:

QQ20171006-134438@2x

您的一组负窗口样本将用于告诉机器学习步骤,在这种情况下,当您试图找到您感兴趣的对象时,不需要查找什么。

正样本

正样本由opencv_createsamples应用程序创建的。它们被增强过程用来定义当您试图发现您感兴趣的对象时,模型应该实际寻找什么。应用程序支持生成两种正样本数据的方法。

  1. 你能从一个正样本从一个单独正样本图片。
  2. 您可以自己提供所有的正样本信息,使用工具将它们剪切出来,调整大小,然后将它们放在opencv所需的二进制格式中。

虽然第一种方法工作体面的固定物体,如非常刚性的标志,它往往不能很快就不那么坚强的对象。在这种情况下,我们建议使用第二种方法。网上很多教程甚至国家100实物图片,可以导致一个更好的模型比1000人为阳性,用opencv_createsamples应用。不过如果你真的决定采取第一种方法,注意如下问题:

  • 请注意,在您把它提交给前面提到的应用程序之前,您需要的不仅仅是一个正样本,因为它只适用于透视转换。
  • 如果您想要一个健壮的模型,那么您可以选择包含在对象类中可能出现的各种各样的变体的样本。例如,在面对面的情况下,你应该考虑不同的种族和年龄组,情绪,也许胡子风格。这也适用于使用第二种方法时。

第一种方法是利用一个单一的对象图像,例如一个公司徽标,通过随机旋转对象,改变图像的强度,以及将图像放置在任意背景下,从给定对象图像中创建大量的正样本。的数量和范围的随机性可以通过opencv_createsamples应用命令行参数控制。

命令行参数:

QQ20171006-135819@2x

当运行opencv_createsamples这样,下面的程序是用来创建一个对象实例:给定的源图像是随机在所有三个轴旋转。选择的角度是有限的- maxxangle – maxyangle和maxzangle。然后从[ bg_color-bg_color_threshold像素的强度;bg_color + bg_color_threshold ]范围解释为透明。白噪声添加到前台的强度。如果IT关键然后指定前景像素强度倒。如果randinv键然后指定算法随机选择是否应适用于该样品反演。最后,得到的图像放置到任意背景从背景描述文件,调整到所需的大小指定的W和H和存储到VEC文件,通过命令行选项指定的VEC。
也可以从先前标记的图像集合获得正样本,这是构建健壮对象模型的理想方法。此集合由类似于背景描述文件的文本文件描述。此文件的每一行对应一个图像。该行的第一个元素是文件名,后面是对象注释的数量,后面是描述边框矩形(x、y、宽度、高度)的对象坐标的数字。

一个描述文件例子:

QQ20171006-140239@2x

为了从这样的集合建立正样品,信息应该是指定的而非IMG:
QQ20171006-140429@2x请注意,在这种情况下,参数如-bg, -bgcolor, -bgthreshold, -inv, -randinv, -maxxangle, -maxyangle, -maxzangle完全被忽视,不再使用。在这种情况下,样品的创作方案如下。对象实例取自给定的图像,从原始图像中裁剪出所提供的包围盒。然后调整到目标样本大小(定义的W和H)和存储在输出矢量文件,由VEC参数定义。应用不变形,所以唯一的影响参数w,h,显示和数
创建信息文件也可以被利用opencv_annotation工具做的手工工艺。这是一个开源工具,可以直观地选择任何给定图像中对象实例的感兴趣区域。下面的小节将详细讨论如何使用这个应用程序。

Using OpenCV’s integrated annotation tool

QQ20171006-140716@2x

Cascade Training

下一步是根据预先准备好的正、负样本集对增强的弱级联分类器进行实际训练。
opencv_traincascade应用按用途的命令行参数:

QQ20171006-141008@2x

QQ20171006-141030@2x

在opencv_traincascade应用已完成工作,训练好的级联将保存在数据文件夹cascade.xml文件。此文件夹中的其他文件是为中断训练而创建的,因此您可以在培训完成后删除它们。
培训结束后,你可以测试你的级联分类器!

Visualising Cascade Classifiers

从时间到时间它可以是有用的可视化训练好的级联分类器工具,看看哪些特征选取和多么复杂的阶段。这opencv_visualisation OpenCV提供的应用。此应用程序具有以下命令:

QQ20171006-141450@2x

推荐文章

沪公网安备 31010702002009号