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

49 篇文章 32 订阅
38 篇文章 16 订阅

上一篇(OpenCV3中的级联分类器目标检测——cv::CascadeClassifier简介)介绍了如何使用级联分类器进行目标检测。这里,我们介绍一下如何训练自己的级联分类器。

至于原理这里就不再进行详细介绍了,直接说明如何进行训练。在opencv的安装目录中的bin文件夹下有两个可执行文件opencv_createsamples.exe和opencv_traincascade.exe。将这两个文件拷贝到训练文件夹下,并将正、负样本的文件夹和描述文件——positive_samples.txt和negative_samples.txt也拷贝到这个文件夹下。同时,新建两个.bat文件——create_positive_samples.bat和traincascade.bat,新建一个文件夹data。这样,训练目录如下:




1、制作正样本

首先是制作和收集正样本图片,并将正样本图像的大小进行统一缩放(如40*40),然后在正样本描述文件中,添加对正样本的描述,形式如下:


然后在create_positive_samples.bat文件中添加如下内容:


其中,-info字段填写正样本描述文件;-vec用于保存制作的正样本;-num制定正样本的数目;-w和-h分别指定正样本的宽和高。

保存,双击这个文件,开始制作正样本:


这样,正样本制作完成。


2、级联分类器训练

下面进行级联分类器的训练,在traincascade.bat中输入如下内容


字段说明如下:

-data:指定保存训练结果的文件夹;

-vec:指定正样本集;

-bg:指定负样本的描述文件夹;

-numPos:指定每一级参与训练的正样本的数目(要小于正样本总数);

-numNeg:指定每一级参与训练的负样本的数目(可以大于负样本图片的总数);

-numStage:训练的级数;

-w:正样本的宽;

-h:正样本的高;

-minHitRate:每一级需要达到的命中率(一般取值0.95-0.995);

-maxFalseAlarmRate:每一级所允许的最大误检率;

-mode:使用Haar-like特征时使用,可选BASIC、CORE或者ALL;

另外,还可指定以下字段:

-featureType:可选HAAR或LBP,默认为HAAR;

其他字段将不再说明。


保存,双击执行,开始漫长的训练过程(训练可中断,中断后再执行,会继续中断前的训练)


训练结束后,data文件夹下会生成如下训练结果:


cascade.xml文件即为最终的训练结果,即可拿来进行目标检测,参考OpenCV3中的级联分类器目标检测——cv::CascadeClassifier简介


2017.04.15

  • 22
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 86
    评论
### 回答1: Python对于OpenCV级联分类器训练非常方便,可以通过几个简单的步骤,轻松地完成自己的XML文件训练。 第一步是准备训练数据集。训练集应该包括正面和负面的例子,正面的例子是要识别的目标,负面的例子则是不包含目标的图像。 第二步是进行数据预处理。这包括将图像转换为灰度图像,以及对其进行缩小和正规化。这样有助于提高分类器的准确性和效率。 第三步是使用OpenCV提供的Cascade Trainer GUI工具进行分类器训练。这个工具可以通过交互式界面来设置训练参数,例如正负样本的路径、级联深度、检测窗口大小等等。训练完成后,级联分类器就会在指定的.xml文件中保存。 第四步是使用训练好的分类器进行目标检测。可以使用OpenCV提供的Cascade Classifier类来加载分类器文件,并应用于图像或视频数据。这个类可以方便地进行级联分类器的检测和识别。 总的来说,Python对于OpenCV级联分类器训练和应用非常方便和灵活,可以应用于许多实际场景中,如人脸识别、车辆检测等。需要注意的是,训练过程需要耗费大量的计算资源和时间,因此应该选择适当的硬件设备和训练数据集,以获得更好的效果。 ### 回答2: Python对OpenCV级联分类器训练可以实现自己的XML文件。级联分类器是一种基于机器学习的图像识别技术,主要用于目标分类、物体检测等。OpenCV是一个开源的计算机视觉库,提供了丰富的图像和视频处理功能。Python是一种高级编程语言,通常用于数据分析和人工智能领域。 Python对OpenCV级联分类器训练可以通过以下步骤实现: 1. 收集样本数据:首先需要收集足够多的正负样本数据,正样本用于训练模型,负样本用于补充训练,提高模型准确率。 2. 特征提取:使用OpenCV中的Haar特征进行图像特征提取,以此确定图像中是否存在目标物体。Haar特征是基于图像亮度和对比度变化的一种特征表示方法。 3. 训练模型:使用Python对OpenCV中的级联分类器进行训练,根据样本数据和特征提取结果,训练模型,并反复迭代优化。 4. 测试模型:完成模型训练后,需要对模型进行测试,验证其在测试数据集中的准确率。 5. 生成XML文件:当训练好了模型后,需要将其保存为XML文件。XML文件包含了训练好的模型参数,可以通过OpenCVCascadeClassifier类进行加载和应用。 总的来说,Python对OpenCV级联分类器训练可以帮助用户创建自己的图像识别模型,并将其保存为XML文件,以便后续应用。该技术具有广泛的应用场景,例如人脸识别、车牌识别、物体检测等。 ### 回答3: Python对OpenCV级联分类器训练,可以通过利用分类器训练工具Cascade Trainer GUI和HaarTraining.exe,在windows或者Linux/Mac OS系统下进行相关操作,实现自己的级联分类器训练,生成属于自己的xml文件。 通过一系列的步骤操作,可以在OpenCV中准确地训练一个线性分类器。首先,需要进行正样本的收集,这些正样本应该是需要被检测的目标,比如人脸等等。其次,需要进行负样本的收集,这些负样本应该是和目标无关的固定的图像。然后,需要根据正负样本进行训练,选择合适的参数和特征,应用级联分类器,并进行训练,最终训练出一个能够准确判断图像中是否包含目标的级联分类器。最后,生成与自己训练级联分类器相匹配的XML文件,该XML文件中包含了训练好的特征和参数,可以被导入到其他项目中进行相似的目标检测。 利用级联分类器进行图像检测,可以帮助我们提高检测的准确度和效率。它在训练时,能够自动选择极具区分性的特征来提高处置速度,达到更好的检测效果。 总之,Python对OpenCV级联分类器训练,可以根据需要的检测目标,利用相应的工具和步骤,进行训练和生成相应的XML文件。这种方法能够有效地解决图像目标检测的问题,提高识别的准确度和效率,并具有广泛的应用价值。
评论 86
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值