OpenCV的级联分类器训练

这篇具有很好参考价值的文章主要介绍了OpenCV的级联分类器训练。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

目录

一、训练数据准备

1、负样本

2、正样本

3、命令行参数

4、标注工具

二、级联训练

1、通用参数

2、级联参数

3、增强分类器参数

4、Haar-like特征参数

三、可视化级联分类器

一、训练数据准备

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

1、负样本

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

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

目录结构:

/img
  img1.jpg
  img2.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、宽度、高度)的数字,描述文件如下。

目录结构:

/img
  img1.jpg
  img2.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:用于调整图像大小的因子;

命令行示例如下:文章来源地址https://www.toymoban.com/news/detail-536425.html

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的级联分类器训练的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV级联分类器识别车辆实践笔记

    基于Haar特征的级联分类器的目标检测是Paul Viola和Michael Jones在2001年的论文中提出的一种有效的目标检测方法。这是一种基于机器学习的方法,从大量的正面和负面图像中训练级联函数。然后用它来检测其他图像中的物体。 Haar特征是一种反映图像的灰度变化的,像素分模块求

    2024年02月06日
    浏览(27)
  • 使用opencv实现人脸检测:Haar级联分类器

    人脸检测的目标是确定图像或视频中是否存在人脸。如果存在多个面,则每个面都被一个边界框包围,因此我们知道这些面的位置。 人脸检测算法的主要目标是准确有效地确定图像或视频中人脸的存在和位置。这些算法分析数据的视觉内容,搜索与面部特征相对应的模式和特

    2024年04月29日
    浏览(14)
  • 【OpenCV】车辆识别 目标检测 级联分类器 C++ 案例实现

    前言 一、目标检测技术 二、样本采集工作原理 三、创建自己的级联分类器 Step1:准备好样本图像 Step2:环境配置(OpenCV win10) Step3:设置路径 Step4:实现样本数据采集  Step5:实现样本数据训练 Step6:生成级联分类器文件  四、案例实现 Step1:灰度处理 Step2:二次压缩 Ste

    2024年02月05日
    浏览(23)
  • OpenCV笔记整理【人脸检测之Harr级联分类器&&dlib库】

    1. 级联分类器: OpenCV提供的级联分类器有Harr、HOG、LBP这3种,这些分类器以XML文件保存,这里主要演示Harr检测人脸(OpenCV提供的分类器不仅限于检测人脸,还包括下表特征检测,当然OpenCV还支持训练自己的级联分类器,这里不做说明。。。)。 2. 函数介绍: object = cv2.Casca

    2024年01月22日
    浏览(26)
  • 基于机器学习和OpenCV的激光雷达数据分割和分类

    背景 目前,先进传感器的使用使得在自然资源监测方面能够以高效的方式进行创新,激光雷达技术就是这样一种情况。激光雷达技术是GPS技术、惯性测量单元和激光传感器的集成结果,用于通过收集以三维坐标(x、y、z)呈现的数据来测量可变距离的范围。 这些数据用于定

    2024年03月17日
    浏览(24)
  • 简易机器学习笔记(十一)opencv 简易使用-人脸识别、分类任务

    前段时间摸了下机器学习,然后我发现其实openCV还是一个很浩瀚的库的,现在也正在写一篇有关yolo的博客,不过感觉理论偏多,所以在学yolo之前先摸一下opencv,简单先写个项目感受感受opencv。 openCV实际上已经有一个比较完整的模型了,下载在haarcascades 这里我们下haarcascade

    2024年01月21日
    浏览(24)
  • OpenCV自带的HAAR级联分类器对脸部(人脸、猫脸等)的检测识别

    在计算机视觉领域,检测人脸等是一种很常见且非常重要的应用,我们可以先通过开放计算机视觉库OpenCV来熟悉这个人脸识别领域。另外OpenCV关于颜色的识别,可以查阅: OpenCV的HSV颜色空间在无人车中颜色识别的应用 HSV颜色识别的跟踪实践 https://blog.csdn.net/weixin_41896770/arti

    2024年02月16日
    浏览(21)
  • 基于opencv与机器学习的摄像头实时识别数字!附带完整的代码、数据集和训练模型!!

    使用摄像头实时识别数字算是目标检测任务,总体上分为两步,第一步是检测到数字卡片的位置,第二步是对检测到的数字卡片进行分类以确定其是哪个数字。在第一步中主要涉及opencv的相关功能,第二步则使用机器学习的方式进行分类。 重点操作是使用轮廓查找函数,获取

    2024年02月15日
    浏览(26)
  • OpenCV分类检测器训练

    OpenCV中有两个程序可以训练级联分类器: opencv_haartraining 和opencv_traincascade。opencv_traincascade 是一个新程序,使用OpenCV 2.x API 以C++ 编写。这二者主要的区别是 opencv_traincascade 支持 Haar、Hog和 LBP(Local Binary Patterns) 三种特征,并易于增加其他的特征。与Haar特征相比,LBP特征是整数

    2024年02月17日
    浏览(22)
  • opencv python 训练自己的分类器

    源码下载 1.样本准备 收集好你所需的正样本,和负样本,分别保存在不同文件夹     在pycharm新建项目,项目结构如下:has_mask文件夹放置正样本,no_mask文件夹放置负样本  安装opencv,把opencv包里的文件复制到项目mask文件夹下    2.样本制作 (1)图片重命名 方便对样本进行批

    2024年02月15日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包