opencv提高之cascade分类器训练人脸检测模型

本文介绍了如何使用opencv_traincascade训练cascade分类器,特别是用于人脸识别。内容包括样本准备,如正负样本的创建,以及使用opencv_createsamples生成描述文件。最后,详细阐述了训练过程和命令行参数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

首先澄清一个概念:人脸检测是要检测图像中有没有人脸,人脸识别是要检测出图像中的人脸是谁

在opencv中有两个类型的分类器:opencv_haartraining和opencv_traincascade,后者是2.x版本中基于C++写的新版本的分类器。二者最主要的区别是opencv_traincascade支持Haar和LBP。LBP在训练和检测方面要比Haar特征快数倍。Haar和LBP的检测质量取决于要训练的数据和训练的参数设置。
opencv_traincascade与opencv_haartraining以不同的文件类型存储训练分类器。新的cascade检测接口支持者两种格式。opencv_traincascade可以保存(输出)旧格式的级联器,但是opencv_traincascade和opencv_haartraining不能在训练中断后加载另一种格式的分类器。
需要注意的是opencv_traincascade可使TBB用于多线程,而使用多核心的opencv一定是基于TBB。

opencv_createsamples:用于准备训练数据的正样本和测试样本。opencv_createsamples可以生成支持opencv_haartraining和opencv_traincascade分类器的正样本数据。输出文件是以.vec为后缀的包含图像信息的二进制数据类型。

opencv_performance:可以用来评估分类器的质量。但仅对opencv_haartraining生成的分类器有效。它需要一个被标记的图像集合,运行分类器,报告运行过程中找到目标的数量、丢失目标数量、误报警数量和其他信息。
在其官方文档中提到opencv_haartraining已经是一个过时的应用,而opencv_traincascade将会得到进一步发展。

Windows中两个.exe文件位于..\opencv\build\x64\vc12\bin中,如果是32位则把路径中x64改为x86即可;Linux版本两个应用程序位于/usr/local/bin文件夹中。找到两个应用拷贝到样本所在的文件夹。

2.样本

2.1样本准备

样本训练需要正负样本。负样本和目标图像没有任何关系,正样本是与检测目标相关的图像。

2.2负样本

负样本是不包含检测目标的任意图像。负样本在一个特殊的文件中被枚举,每一行包含一张图片的名称。这个文件必须手动生成。应该注意到负样本和样本图片也被称为背景样本或背景样本图片。这些描述图片尺寸大小可以不同,单是一定要大于训练窗口尺寸,因为这些图片会按照训练尺寸进行二次抽样。

描述文件例子:

/img
    img1.jpg
    img2.jpg
bg.txt

也就是说在

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值