使用增强级联的弱分类器包括两个主要阶段:训练和检测阶段。对象检测教程中有描述使用基于 HAAR 或 LBP 模型的检测阶段。这里主要介绍训练增强分类器级联所需的功能,包括:准备训练数据、执行实际模型训练、可视化训练。

目录

一、训练数据准备

1、负样本

2、正样本

3、命令行参数

4、标注工具

二、级联训练

1、通用参数

2、级联参数

3、增强分类器参数

4、Haar-like特征参数

三、可视化级联分类器

一、训练数据准备

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

1、负样本

负样本取自任意图像,不包含要检测的对象。这些从中生成样本的图像应该放置于独立的文件中,每行包含一个图像路径。负样本图像也称为背景样本或背景图像。

所描述的图像可能具有不同的大小。但是,每个图像都应该等于或大于所需的训练窗口大小。

目录结构:

/imgimg1.jpgimg2.jpg
bg.txt

bg.txt主要是指定图像路径:

img/img1.jpg
img/img2.jpg

2、正样本

正样本由 opencv_createsamples 应用程序创建。增强过程使用它们来定义模型在尝试查找我们感兴趣的对象内容。支持两种生成正样本数据集的方法,建议采用第二种方法。

  1. 从单个正样本图像生成一系列正样本图像。
  2. 自己提供所有正样本,只使用该工具将它们剪切出来,调整它们的大小并将它们放入 opencv 所需的二进制格式。

3、命令行参数

命令行包括正样本路径、负样本路径、输出路径、样本宽高等,具体如下:

  • -vec <vec_file_name>: 训练结果输出路径;
  • -img <image_file_name>: 正样本路径;
  • -bg <background_file_name>: 负样本路径;
  • -num <number_of_samples>: 要生成的正样本数;
  • -bgcolor <background_color>: 背景色,即透明色;
  • -inv: 如果指定,颜色将反转;
  • -randinv: 如果指定,颜色将随机反转;
  • -maxxangle <max_x_rotation_angle>: 朝向 x 轴的最大旋转角度,单位弧度;
  • -maxxangle <max_y_rotation_angle>: 朝向 y 轴的最大旋转角度,单位弧度;
  • -maxxangle <max_z_rotation_angle>: 朝向 z 轴的最大旋转角度,单位弧度;
  • -show: 调试选项;
  • -w: 输出样本的宽度;
  • -h: 输出样本的高度;

当以这种方式运行 opencv_createsamples 时,以下过程用于创建样本对象实例:给定的源图像围绕所有三个轴随机旋转。所选角度受-maxxangle,-maxyangle-maxzangle限制。白噪声被添加到前景的强度中。如果指定-inv,则前景像素强度会反转。最后,将获得的图像放置到背景描述文件中的任意背景上,调整宽高为-w-h,并存储到由命令行指定路径-vec

正样本也可以从先前标记的图像集合中获得,这是构建稳定对象模型时所需的方式。这个集合是由一个类似于背景描述文件的文本文件来描述的。该文件的每一行对应一个图像。该行的第一个元素是文件名,然后是对象注释的数量,然后是描述对象边界矩形坐标(x、y、宽度、高度)的数字,描述文件如下。

目录结构:

/imgimg1.jpgimg2.jpg
info.dat

info.dat中图像1包含一个矩形坐标,图像2包含2个矩形坐标,具体如下:

img/img1.jpg 1 140 100 45 45
img/img2.jpg 2 100 200 50 50 50 30 25 25

4、标注工具

OpenCV3.x以后,提供用于生成文件的开源注释工具-info,相关参数如下:

  • --annotations(必选): txt文件注释的路径,在里面存储注释;
  • --images(必选): 包含图像文件夹的路径;
  • --maxWindowHeight: 如果输入图像的高度大于这里限制的高度,会调整图像大小;
  • --resizeFactor:用于调整图像大小的因子;

命令行示例如下:

opencv_annotation --annotations=/xxx/annotations/file.txt --images=/xxx/image/

二、级联训练

在准备好正样本和负样本后,对弱分类器进行级联训练。opencv_traincascade命令按照功能用途划分。

1、通用参数

通用参数包括正负样本路径、正负样本数量、分类器输出路径、训练的级联阶段数,具体如下:

  • -data <cascade_dir_name>: 分类器的输出路径,文件夹需要提前创建;
  • -vec <vec_file_name>: 正样本文件路径;
  • -bg <background_file_name>: 负样本文件路径;
  • -numStages <number_of_stages>: 级联训练的阶段数;
  • -precalcValBufSize:预先计算的特征值的缓冲区大小(以 Mb 为单位);
  • -precalcIdxBufSize:预先计算的特征索引的缓冲区大小(以 Mb 为单位);
  • -numThreads <max_number_of_threads>:训练使用的最大线程数;
  • -acceptanceRatioBreakValue:用于确定模型应保持学习的精度以及何时停止。默认为-1,禁用此功能。

2、级联参数

级联参数包括阶段类型、特征类型、样本宽高,具体如下:

  • -stageType <BOOST(默认)>: 阶段类型;
  • -featureType<{HAAR(默认), LBP}>: 特征类型:HAAR(Haar-like 特征),LBP(局部二进制模式);
  • -w <sampleWidth>:训练样本的宽度(以像素为单位);
  • -h <sampleHeight>:训练样本的高度(以像素为单位);

3、增强分类器参数

增强分类器参数包括分类器类型、最小命中率、最大误差率,具体如下:

  • -bt <{DAB, RAB, LB, GAB(默认)}>:增强分类器的类型:DAB(Discrete AdaBoost),RAB (Real AdaBoost),LB(LogitBoost),GAB(Gentle AdaBoost);
  • -minHitRate:分类器每个阶段的最小期望命中率;
  • -maxFalseAlarmRate:分类器每个阶段的最大期望误差率;
  • -weightTrimRate:是否使用修正权重,建议值为 0.95;
  • -maxDepth <max_depth_of_weak_tree>:弱树的最大深度,建议值为1;
  • -maxWeakCount <max_weak_tree_count>:每个级联阶段的弱树的最大数量;

4、Haar-like特征参数

Haar-like特征参数主要是指定特征集类型,具体如下:

  • -mode <BASIC(默认) | CORE | ALL>:选择训练中使用的 Haar 特征集的类型。其中BASIC 仅使用直立功能,而 ALL 使用直立和 45 度旋转功能集;

三、可视化级联分类器

可视化级联分类器用于在训练过程中,看到实时训练数据视图。OpenCV提供opencv_visualisation应用程序,相关命令如下:

  • --image(必选): 图像模型的路径;
  • --model(必选): 训练模型的路径;
  • --data(可选): 如果提供提前创建的数据文件夹,将存储每个阶段结果;

命令行示例如下:

opencv_visualisation --image=/data/object.png --model=/data/model.xml --data=/data/result/

OpenCV的级联分类器训练相关推荐

  1. Qt +opencv 通过级联分类器训练的模型进行识别(车辆识别+人脸识别)

    有不对的或更好的方法欢迎交流 一些内容可参照这篇文章:https://blog.csdn.net/m0_64596200/article/details/126748697?spm=1001.2014 ...

  2. OpenCV级联分类器训练与使用实战教程-贾志刚-专题视频课程

    OpenCV级联分类器训练与使用实战教程-1012人已学习 课程介绍         基于OpenCV新版本3.1.0详细讲述了HAAR与LBP级联分类器的基本原理与使用技巧,通过视频中人脸实时检测与 ...

  3. 级联分类器训练及其参数的含义

    转载自:级联分类器训练 - OpenCV 2.3.2 documentation http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/user_guid ...

  4. 【OpenCV3】级联分类器训练——traincascade快速使用详解

    上一篇(OpenCV3中的级联分类器目标检测--cv::CascadeClassifier简介)介绍了如何使用级联分类器进行目标检测.这里,我们介绍一下如何训练自己的级联分类器. 至于原理这里就不再进 ...

  5. Python+OpenCV:级联分类器(Cascade Classifier)

    Python+OpenCV:级联分类器(Cascade Classifier) 目标 We will learn how the Haar cascade object detection works ...

  6. 如何利用OpenCV自带的级联分类器训练程序训练分类器

    介绍 使用级联分类器工作包括两个阶段:训练和检测. 检测部分在OpenCVobjdetect 模块的文档中有介绍,在那个文档中给出了一些级联分类器的基本介绍.当前的指南描述了如何训练分类器:准备训练数 ...

  7. OpenCV系列之级联分类器训练 | 六十二

    简介 使用弱分类器的增强级联包括两个主要阶段:训练阶段和检测阶段.对象检测教程中介绍了使用基于HAAR或LBP模型的检测阶段.本文档概述了训练自己的弱分类器的级联所需的功能.当前指南将逐步完成所有不同 ...

  8. 利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测

    级联分类器是将若干个分类器进行连接,从而构成一种多项式级的强分类器.级联分类器使用前要先进行训练,怎么训练呢?用目标的特征值去训练,对于人脸来说,通常使用Haar特征进行训练. Haar特征是由M.O ...

  9. OpenCV-Python 级联分类器训练 | 六十三

    作者|OpenCV-Python Tutorials 编译|Vincent 来源|OpenCV-Python Tutorials 简介 使用弱分类器的增强级联包括两个主要阶段:训练阶段和检测阶段.对象 ...

最新文章

  1. Windows XP下vs2010中配置OpenCV2.4.3
  2. c# winforms TextBox的记忆功能
  3. 学python需要什么文化基础-中国文化走的是()的路线。
  4. python如何连续打印_Python实现批量打印功能
  5. Qt学习笔记之常用控件QTreeWidget
  6. 小程序素材抓取软件_如何抓取微信小程序的数据?
  7. 两张图告诉你tnsnames.ora 的配置详解
  8. T-SQL中的透视和逆透视
  9. 0-1 背包实际应用
  10. 查询SQLServer 服务器,执行过的SQL语句耗时!
  11. BZOJ 1146 网络管理Network(树链剖分+BST)
  12. (转载的)C#using的用法
  13. VMware虚拟机安装ghost win7系统方法
  14. 禁止收录与跟踪-- Robots 文件优化和Nofollow 优化
  15. Python利用xpath和正则re爬取新浪新闻
  16. android窗口变化事件,android ViewPager滑动事件讲解
  17. OllyDbg的基本使用
  18. 沪指暴跌200点 两市超过四分之一股票跌停
  19. 12-11 网易实习一面
  20. duilib底层机制剖析:窗体类与窗体句柄的关联

热门文章

  1. 打开 McAfee VirusScan v8.5i 的“访问保护”时请慎重
  2. 问题解决 docker stack 部署后 REPLICAS 为 0
  3. 苹果手机能编辑php文件的软件,手机软件名称随便改,还能一键换图标!包教包会!...
  4. MT4 EA编程入门,自带移动平均线策略,代码解析与回测
  5. LAMP+DISCUZ论坛
  6. 复杂的生活简单过,简单的事情重复做
  7. RPA学习天地:艺赛旗RPA培训产品解读(2021年7月)
  8. 华南农业大学c语言测试,华南农业大学《C语言程序设计》考卷(8份)
  9. 数字化仓储管理系统:实现物料入库、出库、库存的高效管理
  10. “千言”开源数据集项目全面升级:数据驱动AI技术进步