级联分类器训练(OpenCV教程)

2023-09-09 2132阅读

训练过程分为多个阶段,每个阶段都会对图像进行一系列的特征提取和分类器训练操作。值得注意的是,由于级联分类器的训练是一个复杂且计算密集的过程,因此该工具使用了一些优化策略来提高训练效率。###答案2:OpenCV级联分类器快速训练工具是训练级联分类器的工具,可用于检测人脸、车辆、物体等。总的来说,OpenCV级联分类器快速训练工具是一种功能强大且易于使用的工具,可用于快速训练目标检测模型,广泛应用于人机交互、智能安防、自动驾驶等领域。总体而言,OpenCV级联分类器快速训练工具为用户定制和训练级联分类器以实现特定物体的快速检测和识别提供了便捷高效的方式。

###答案1:OpenCV级联分类器快速训练工具是用来训练级联分类器的工具。 级联分类器是一种用于目标检测的机器学习算法,可以快速识别和定位图像中的特定目标物体。 该工具提供了一种简单有效的方法,通过输入一系列正负图像来训练级联分类器。 正样本图像是包含待检测目标的图像,负样本是不包含目标的图像。 训练过程分为多个阶段,每个阶段都会对图像进行一系列的特征提取和分类器训练操作。 在每个阶段,分类器都会根据当前的分类精度和错误率进行更新和优化,从而逐步提高检测的精度和速度。 值得注意的是,由于级联分类器的训练是一个复杂且计算密集的过程,因此该工具使用了一些优化策略来提高训练效率。 例如,它会自动选择最佳特征子集,使用图像金字塔方法处理不同尺度的目标对象等。使用该工具,我们可以快速训练一个高效的级联分类器来检测图像中的特定目标对象。 该工具在计算机视觉领域有着广泛的应用,例如人脸检测、车牌识别、物体识别等。 ###答案2:OpenCV级联分类器快速训练工具是训练级联分类器的工具,可用于检测人脸、车辆、物体等。它是一种基于机器学习的技术,通过训练大量正负样本,自动生成用于图像或视频中目标检测的分类器模型。

级联分类器训练(OpenCV教程)

该工具提供了简单、快速、高效的培训过程。 首先,需要准备一组正样本和一组负样本图像。 正样本包含待检测的目标,负样本不包含待检测的目标。 通过提取图像特征,例如Haar-like特征,计算每个样本的特征向量。 接下来,使用AdaBoost算法训练强分类器。 该算法通过选择最佳特征来构建强大的分类器以最小化错误检测率。 AdaBoost 还对错误分类的样本进行加权,以更好地处理难以分类的样本。 训练完成后,通过级联分类器级联强分类器,形成多级分类系统。 级联分类器可以高效过滤掉大量负样本,从而减少计算量,提高检测速度。 使用该工具,可以根据不同的应用需求对参数进行调整和优化,例如调整级联层数、每层分类器的阈值等,这样可以在保证检测精度的同时进一步提高检测速度。 总的来说,OpenCV级联分类器快速训练工具是一种功能强大且易于使用的工具,可用于快速训练目标检测模型,广泛应用于人机交互、智能安防、自动驾驶等领域。 ###答案3:OpenCV级联分类器快速训练工具是用于训练级联分类器以检测和识别特定物体的工具。 级联分类器是一种基于机器学习的目标检测算法,通过组合多个弱分类器实现高效的目标检测。

识别器的作用_级联分类器识别整个人_识别器原理

该工具可帮助用户快速训练自定义级联分类器以检测特定对象。 训练过程主要分为两个步骤:正样本收集和训练器训练。 在正样本采集阶段,用户需要准备一组包含待检测物体的正样本图像。 该工具收集这些正样本图像中的对象特征,并基于这些特征构建级联分类器。 在训练器训练阶段,该工具使用正样本图像和一定数量的负样本图像,通过对这些图像进行分析和训练,逐步构建级联分类器模型。 该工具将根据正负样本的差异进行迭代训练,不断优化分类器的准确性和鲁棒性。 通过这种快速训练工具,用户可以有效地训练级联分类器并将其应用于目标检测任务。 级联分类器广泛应用于图像处理领域,如人脸检测、车辆检测等,可以快速、准确地识别感兴趣的物体,为图像分析和识别提供强有力的支持。 总体而言,OpenCV级联分类器快速训练工具为用户定制和训练级联分类器以实现特定物体的快速检测和识别提供了便捷高效的方式。

在学习人脸识别时,我们经常会用到各种分类器,比如haarcascade_frontalface_default.xml。 但我们可能想知道这个分类器是从哪里来的。 为此,我写了这篇文章来解答大家的疑惑。

首先我们需要安装OpenCV,官网地址是。 我们可以将它安装在任何位置。 在opencv\build\etc\haarcascades目录下,我们可以看到有很多OpenCV训练好的分类器。

分类识别技术_级联分类器识别整个人_识别器原理

图片.png

在互联网上其他地方下载的分类器文件和这里没有区别。 在这里,我不想使用别人训练的分类器,我想自己制作一个。

官方教程中的描述如下,

我们可以知道,OpenCV有两个程序可以训练级联分类器: opencv_haartraining 和
opencv_traincascade。这二者主要的区别是opencv_traincascade 支持 Haar 和 
LBP(Local Binary Patterns)  两种特征,并易于增加其他的特征。与Haar特征相比,
LBP特征是整数特征,因此训练和检测过程都会比Haar特征快几倍。LBP和Haar特征
用于检测的准确率,是依赖训练过程中的训练数据的质量和训练参数。训练一个与基
于Haar特征同样准确度的LBP的分类器是可能的。
opencv_traincascade and opencv_haartraining 所输出的分类器文件格式并不相同。
注意,新的级联检测接口(参考 objdetect 模块中的 CascadeClassifier 类)支持这两
种格式。 opencv_traincascade 可以旧格式导出选练好的级联分类器。但是在训练过
程被中断后再重启训练过程, opencv_traincascade and opencv_haartraining 不能
装载与中断前不同的文件格式。
opencv_traincascade 程序使用TBB来处理多线程。如果希望使用多核并行运算加
速,请使用TBB来编译OpenCV。

一般来说,正负样本比例为1:3时训练效果较好,但也不是绝对的。 由于每个样本的差异性和其他因素不同,不存在绝对的比例关系。 但是负样本需要比正样本更多,因为原则上负样本的多样性越大越好,这样我们才能有效降低误检率,而不仅仅是通过正样本的训练来让它来识别物体。 在本次训练中,我选择了63个正样本和200个负样本,全部都是灰度图像。

进入采样的目录,输入以下命令:

dir /b/s/p/w *.jpg > positives.txt

替换目录中的路径名,仅保留文件名:

分类识别技术_级联分类器识别整个人_识别器原理

图片.png

注意:负样本的图像大小不需要归一化为统一大小,因为训练时可以指定大小,训练时会进行图像resize操作。

接下来是正样本的生成,这个比较重要。 阳性样本的采集有两种方法:

A.只使用一张正样本图片,与负样本结合生成其他正样本。 这种方法比较适合刚性物体,即正样本目标不会变形,所以采样起来比较困难,比如交通LOGO,就不能变形。 这种情况下,可以通过图像手段对其进行一些图像预处理操作,生成样本。 使用的指令是:

它使用[-img]参数指定单个正样本,其中[num]指的是通过这个正样本要生成的样本数量,它是通过组合负样本生成的。 负样本主要用于旋转。 手术后的阳性样本提供了背景。 他在生成样本的同时会直接生成vec文件。

注:比较好的生成样本的工具代码是:opencv-haar-classifier-training。 它使用脚本调用opencv_createsamples.exe来生成样本,并且还可以一路生成vec文件,确实很方便。

B. 手动收集所有训练样本。 正样本的txt文件格式如下,命令生成后手动替换文件路径后面的格式:

其指令如下:

分类识别技术_级联分类器识别整个人_识别器原理

图片.png

此时提供的是一个包含所有正样本路径的txt文件,其生成可以参考上面的方法。 此时,此处设置的x、y、z轴旋转角度等一些数据增城参数将不会被使用。 只有上面的单个示例 A 使用这些参数。 其中,[-num]必须小于或等于正样本的索引,否则会报错。

注意:这是一种裁剪所有目标的方法,需要样本标准化。 另一种方式是使用工具在整张图像上标记正样本,可以使用ObjectMarker工具。具体流程参考博客:基于级联分类器的多目标检测

3.级联分类器的训练:

但样本准备好后,训练指令是:

opencv_traincascade -data classifier -vec pos.vec -bg negatives.txt   -numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 14000   -numNeg 10000 -w 20 -h 20 -mode ALL -precalcValBufSize 1024   -precalcIdxBufSize 1024 -featureType LBP
pause

常用参数:

-数据

目录名,如果训练程序不存在,则会创建它来存储训练好的分类器。

-向量

包含正样本的 vec 文件的名称(由 opencv_createsamples 程序生成)。

-bg

后台描述文件,即包含负样本文件名的描述文件。

-numPos

每个分类器训练使用的正样本数量。 设置为阳性样本数的85%(这是一个保守值)。 具体还取决于级联的层数。 因为每个阶段都会增加用于分类的图片数量。

-numNeg

每级分类器训练使用的负样本数量可以大于-bg指定的图片数量。

-numStages

经过训练的分类器的阶段数。

-precalcValBufSize

用于存储预先计算的特征值的缓存大小,以 MB 为单位。

-precalcIdxBufSize

用于存储预先计算的特征索引的缓存大小,以 MB 为单位。 内存越大,训练时间越短。

-baseFormatSave

该参数仅在使用 Haar 特征时有效。 如果指定该参数,则级联分类器将以旧格式存储。

级联参数:

-阶段类型

阶段参数。 目前仅支持以 BOOST 分类器作为级别的类型。

-特征类型

特征类型:HAAR - 类 Haar 特征; LBP - 局部纹理图案特征。

-w

-H

训练样本的大小(以像素为单位)。 必须与创建的训练样本的大小一致(使用 opencv_createsamples 程序创建)。

增强分类器参数:

-bt

Boosted 分类器的类型:DAB - 离散 AdaBoost、RAB - Real AdaBoost、LB - LogitBoost、GAB - Gentle AdaBoost。

-最小命中率

分类器每个阶段所需的最小检测率。 总体检测率约为min_hit_rate^number_of_stages。 总检测率是整个级联的检测召回率,

-最大误报率

分类器每个阶段所需的最大误报率。总误检率约为 max_false_alarm_rate^number_of_stages。 是整个级联的误检率

-weightTrimRate

指定是否应使用修剪及其重量。 较好的值为 0.95。

-最大深度

弱分类器树的最大深度。 一个好的值是 1,它是二叉树(树桩)。

-maxWeakCount

每个级别中弱分类器的最大数量。 增强的分类器(阶段)将有很多弱树(

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]