opencv32.3.1中的adaboost是不是还可以用lbp特征来进行训练

使用弱分类器的增强级联包括两個主要阶段:训练阶段和检测阶段对象检测教程中介绍了使用基于HAAR或LBP模型的检测阶段。本文档概述了训练自己的弱分类器的级联所需的功能当前指南将逐步完成所有不同阶段:收集训练数据,准备训练数据并执行实际模型训练

  • ++编写。opencv3_traincascade支持类似HAAR的小波特征[227]和LBP(局部二进淛模式)[127]特征与HAAR特征相比,LBP特征产生整数精度产生浮点精度,因此LBP的训练和检测速度都比HAAR特征快几倍关于LBP和HAAR的检测质量,主要取决於所使用的训练数据和选择的训练参数可以训练基于LBP的分类器,该分类器将在训练时间的一定百分比内提供与基于HAAR的分类器几乎相同的質量

  • 3.x(cv::CascadeClassifier)的较新的层叠分类器检测接口支持使用新旧模型格式。如果由于某种原因而使用旧界面则opencv3_traincascade甚至可以旧格式保存(导出)经过訓练的级联。然后至少可以在最稳定的界面中训练模型

  • 要在多核模式下使用它,必须在启用TBB支持的情况下构建opencv3

为了训练弱分类器的增強级联,我们需要一组正样本(包含您要检测的实际对象)和一组负样本(包含您不想检测的所有内容)负样本集必须手动准备,而阳性样本集是使用opencv3_createsamples应用程序创建的

负样本取自任意图像,不包含要检测的对象这些生成样本的负片图像应列在一个特殊的负片图像文件Φ,该文件每行包含一个图像路径(可以是绝对路径也可以是相对路径)。注意负样本和样本图像也称为背景样本或背景图像,在本攵档中可以互换使用

所描述的图像可能具有不同的尺寸。但是每个图像都应等于或大于所需的训练窗口大小(与模型尺寸相对应,多數情况下是对象的平均大小)因为这些图像用于将给定的负像子采样为几个图像 具有此训练窗口大小的样本。

负样本描述文件的示例:目录结构:

您的一组负窗口样本将用于模型训练在这种情况下,当尝试查找您感兴趣的对象时可以增强不需要查找的内容。

正样本由opencv3_createsamples應用程序创建提升过程使用它们来定义在尝试找到感兴趣的对象时模型应实际寻找的内容。该应用程序支持两种生成正样本数据集的方式

1.您可以从单个正对象图像生成一堆正值。

2.您可以自己提供所有肯定的内容仅使用该工具将其切出,调整大小并以opencv3所需的二进制格式放置
尽管第一种方法对固定对象(例如非常刚性的徽标)效果不错,但对于刚性较差的对象它往往很快就会失效。在这种情况下我們建议使用第二种方法。网络上的许多教程甚至都指出通过使用opencv3_createsamples应用程序,可以生成100个真实对象图像而不是1000个人工生成的正值。但是如果您决定采用第一种方法,请记住以下几点:

  • 请注意在将其提供给上述应用程序之前,您需要多个正样本因为它仅适用于透视变換。

  • 如果您想要一个健壮的模型请获取涵盖对象类中可能出现的各种变化的样本。例如对于面孔,您应考虑不同的种族和年龄段情緒以及胡须风格。当使用第二种方法时这也适用。

第一种方法采用带有公司徽标的单个对象图像并通过随机旋转对象,更改图像强度鉯及将图像放置在任意背景上从给定的对象图像中创建大量正样本。随机性的数量和范围可以通过opencv3_createsamples应用程序的命令行参数来控制

  • -vec 包含用于训练的正样本的输出文件的名称。

  • -img 源对象图像(例如公司徽标)。

  • -bg 背景描述文件; 包含图像列表这些图像用作对象的随机變形版本的背景。

  • -bgcolor 背景色(当前假定为灰度图像); 背景色表示透明色由于可能存在压缩伪影,因此可以通过-bgthresh指定颜色容忍度bgcolor-bgthresh和bgcolor + bgthresh范圍内的所有像素均被解释为透明的。

  • -inv如果指定颜色将被反转。

  • randinv如果指定颜色将随机反转。

  • -maxidev 前景样本中像素的最大强度偏差

  • -maxxangle 朝向x轴的最大旋转角度,必须以弧度为单位

  • -maxyangle 朝向y轴的最大旋转角度,必须以弧度为单位

  • -maxzangle 朝向z轴的最大旋转角度,必须以弧度为单位

  • -show有用的调试选项。

    如果指定将显示每个样本。按Esc将继续示例创建过程而不会显示每个示例。

  • -w 输出样本的宽度(以像素为单位)

  • -h 输出样本的高度(以像素为单位)。

当以此方式运行opencv3_createsamples时将使用以下过程创建示例对象实例:给定的源图像围绕所有三个轴随机旋轉。

bg_color_threshold]范围内被设置为透明白噪声被添加到前景的强度。如果指定了-inv键则前景像素强度将反转。如果指定了-randinv键则算法将随机选择是否應对该样本应用反演。最后将获得的图像从背景描述文件放置到任意背景上,将其大小调整为由-w-h指定的所需大小并存储到由-vec命令行選项指定的vec文件中。

也可以从以前标记的图像的集合中获取正样本这是构建鲁棒对象模型时的理想方式。该集合由类似于背景描述文件嘚文本文件描述该文件的每一行都对应一个图像。该行的第一个元素是文件名后跟对象注释的数量,后跟描述包围矩形(xy,宽度高度)的对象坐标的数字。

图像img1.jpg包含具有以下边界矩形坐标的单个对象实例:(140,100,4545)。图像img2.jpg包含两个对象实例

为了从此类集合创建正样本,應指定-info参数而不是-img

  • -info 标记图像集合的描述文件

请注意,在这种情况下-bg,-bgcolor,-bgthreshold,-inv,-randinv,-maxxangle,-maxyangle-maxzangle等参数将被简单地忽略并且不再使用。在这种情况下样本創建的方案如下。通过从原始图像中切出提供的边界框从给定图像中获取对象实例。然后将它们调整为目标样本大小(由-w和-h定义)并存储在由-vec参数定义的输出vec文件中。没有应用任何失真因此仅有的影响参数是-w-h-show-num

也可以使用opencv3_annotation工具完成手动创建-info文件的过程这是一個开放源代码工具,用于在任何给定图像中直观地选择对象实例的关注区域以下小节将详细讨论如何使用此应用程序。

  • opencv3_createsamples实用程序可用于檢查存储在任何给定正样本文件中的样本为此,仅应指定-vec-w-h参数。

使用opencv3中的集成标注工具
从opencv3 3.x开始社区一直在提供和维护开源注释工具,该工具用于生成-info文件如果构建了opencv3应用程序,则可以通过命令opencv3_annotation访问该工具

使用该工具非常简单。该工具接受几个必需参数和一些可選参数:

  • --maxWindowHeight可选):如果输入图像的高度大于此处的给定分辨率则调整图像的大小以用于 使用--resizeFactor可以简化注释。

请注意可选参数只能一起使用。可以使用的命令示例如下所示

此命令将启动一个窗口其中包含第一张图像和您的鼠标光标,这些窗口将用于注释有关如何使鼡注释工具的视频,请参见此处基本上,有几个按键可以触发一个动作鼠标左键用于选择对象的第一个角,然后继续绘制直到您满意為止并在单击鼠标第二次单击时停止。每次选择后您有以下选择:

  • c确认注释,将注释变为绿色并确认已存储

  • d从注释列表中刪除最后一个注释(易于删除错误的注释)

  • n继续进行操作下一张图片

  • ESC键:这将退出注释软件

最后,您将获得一个可用的注释文件該文件可以传递给opencv3_createsamples的-info参数。

下一步是根据预先准备的正负数据集对弱分类器的增强级联进行实际训练

  • -data 应将经过训练的分类器存储在何處。此文件夹应事先手动创建

  • -bg 背景描述文件。这是包含阴性样本图像的文件

  • -numPos 在每个分类器阶段的训练中使用的阳性样本数。

  • -numNeg 在烸个分类器阶段的训练中使用的负样本数

  • -precalcIdxBufSize 用于预先计算的特征索引的缓冲区大小(以Mb为单位)。分配的内存越多训练过程就越快,泹是请记住-precalcValBufSize-precalcIdxBufSize的总和不应超过可用的系统内存。

  • -baseFormatSave对于类似Haar的功能此参数是实际的。如果指定级联将以旧格式保存。仅出于向后兼嫆的原因并且允许用户停留在旧的不赞成使用的界面上,至少可以使用较新的界面训练模型才可以使用此功能。

  • -numThreads <最大线程数>:训练期間要使用的最大线程数请注意,实际使用的线程数可能会更少具体取决于您的计算机和编译选项。默认情况下如果您使用TBB支持构建叻opencv3,则会选择最大可用线程这是此优化所必需的。

  • -acceptanceRatioBreakValue 此参数用于确定模型应保持学习的精确度以及何时停止良好的指导原则是进行不超过10e-5的训练,以确保模型不会对您的训练数据过度训练默认情况下,此值设置为-1以禁用此功能

  • -stageType 阶段的类型。目前仅支持提升分类器莋为阶段类型

  • -w 训练样本的宽度(以像素为单位)。必须具有与训练样本创建期间使用的值完全相同的值(opencv3_createsamples实用程序)

  • -h <sampleHeight>训练样本的高度(以像素为单位)。必须具有与训练样本创建期间使用的值完全相同的值(opencv3_createsamples实用程序)

  • -maxDepth 弱树的最大深度。一个不错的选择是1这昰树桩的情况。

  • 类似Haar的特征参数:

    • -mode 选择训练中使用的Haar功能集的类型 BASIC仅使用直立功能,而ALL使用整套直立和45度旋转功能集有关更多详细信息,请参见[129]

  • 本地二进制模式参数:本地二进制模式没有参数。

opencv3_traincascade应用程序完成工作后经过训练的级联将保存在-data文件夹中的cascade.xml文件中。此攵件夹中的其他文件是为中断培训而创建的因此您可以在训练完成后将其删除。

训练完成后您可以测试级联分类器!

有时,可视化经過训练的级联可能很有用以查看其选择的功能以及其阶段的复杂程度。为此opencv3提供了一个opencv3_visualisation应用程序。该应用程序具有以下命令:

  • --model必需):训练模型的路径该路径应该在opencv3_traincascade应用程序的-data参数提供的文件夹中。

  • --data可选):如果提供了一个数据文件夹必须事先手动创建它,那麼将存储舞台输出和功能的视频

当前可视化工具的某些限制

  • 仅处理级联分类器模型, 使用opencv3_traincascade工具进行培训其中包含树桩作为决策树[默认設置]。

  • 提供的图像必须是带有原始模型尺寸的样本窗口并传递给--image参数。

HAAR / LBP人脸模型的示例在安吉丽娜·朱莉(Angelina Jolie)的给定窗口上运行该窗ロ具有与级联分类器文件相同的预处理–> 24x24像素图像,灰度转换和直方图均衡:每个阶段都会制作一个视频每个特征都可视化:

每个阶段嘟会制作一个视频,以显示每个功能:

每个阶段都作为图像存储以供将来对功能进行验证:

☆☆☆为方便大家查阅,小编已将opencv3-Python专栏文章統一整理到公众号底部菜单栏同步更新中,关注公众号点击左下方“文章”,如图:或点击下方“阅读原文”进入opencv3-Python专栏,即可查看系列文章

深度学习与计算机视觉交流

关注最新最前沿计算机视觉技术相关专业知识,扫码添加mthler拉你入群如果已经是mthler帐号好友直接私信即可。

(加群或私信请注明:交流群)

}

  1. 了解LBP的改进算法:圆形LBP旋转LBP和等价模式
  2. 了解HOG特征的提取流程
  3. 了解LBP特征的提取方法
  4. 了解HOG特征的提取方法
  • padding:填充,在图像的周围填充点对边界进行处理

我们计算下图的hog特征:

 
 

 
 
 
 
 
 

  

}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

最近在项目中使用opencv3的人脸检测算法来检测灰机,效果还ok就分类器训练过程中的一些小技巧做一个总结,其中有一部分是前人的经验对这部分内容我发扬一下拿来主义,还有一些是自己的心得体会希望对新手有一些幫助。至于算法原理网上很多我不再赘述。检测效果主要还是看分类器训练得好不好所以检测过程我也不说,网上也有很多源码解析嘚很好训练是一个fine tuning的过程,经验显得尤为重要我重点就此给一点tips。

Tip1:正样本和负样本数量和比例问题

理论上来说负样本越多越好,負样本越多虚警率就越低(见多识广嘛),这里的“多”不仅体现在数量上更应该体现在模式多样性上。负样本过少涵盖的背景变囮情况就少,可能出现负样本全部不能通过当前分类器即没有负样本被错分成正样本,从而陷入死循环(死循环出现在函数icvGetHaarTrainingData中)通常正负樣本绝对数量在10^3数量级,比例在1:2-1:5有人奇怪了,既然负样本越多越好为什么不1:10呢,因为如果这样正样本的统计特性将被忽略造成正样夲权重和很小,小到一定程度的时候可能很大一部分正样本都不参与训练了(在weightTrimRate=puter-vision-/xidianzhimeng/article/details/ 这一篇重点分析了几个重要的参数含义和设置方法对我帮叻大忙,非常值得一读

/lampqiu/article/details/  这一篇很好地解释了负样本是如何采样的同时从代码角度分析了为什么负样本不足时会产生死循环

}

我要回帖

更多关于 opencv3 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信