当前位置:网站首页>【OpenCV】 级联分类器训练模型
【OpenCV】 级联分类器训练模型
2022-08-03 12:49:00 【我今年十六岁】
目录
一:OpenCV级联分类器概念
目前常用的实用性目标检测与跟踪的方式方法有以下两种
二:OpenCV级联分类器操作步骤
三:样本采集工作原理分析一
使用基于Haar特征的级联分类器的对象检测这是一种基于机器学习的方法,其中从许多正负图像中训练级联函数。然后用于检测其他图像中的对象。
在这里,我们将进行人脸检测举例说明。最初,该算法需要大量正图像(面部图像)和负图像(无面部图像)来训练分类器。 然后,我们需要从中提取特征。为此,使用下图所示的Haar功能。 它们就像我们的卷积核一样。 每个特征都是通过从黑色矩形下的像素总和中减去白色矩形下的像素总和而获得的单个值。
四:样本采集工作原理分析二
现在,每个内核的所有可能大小和位置都用于计算许多功能。(试想一下它产生多少计算?即使是一个24x24的窗口也会产生超过160000个特征)。对于每个特征计算,我们需要找到白色和黑色矩形下的像素总和。为了解决这个问题,他们引入了整体图像。无论你的图像有多大,它都会将给定像素的计算减少到仅涉及四个像素的操作。很好,不是吗?它使事情变得更快。
但是在我们计算的所有这些特征中,大多数都不相关。例如,考虑下图。第一行显示了两个良好的特征。选择的第一个特征似乎着眼于眼睛区域通常比鼻子和脸颊区域更暗的性质。选择的第二个特征依赖于眼睛比鼻梁更黑的属性。但是,将相同的窗口应用于脸颊或其他任何地方都是无关紧要的。那么,我们如何从16万多个功能中选择最佳特征?它是由Adaboost算法实现的。
为此,我们将所有特征应用于所有训练图像。对于每个特征,它会找到最佳的阈值,该阈值会将人脸分为正面和负面。显然,会出现错误或分类错误。我们选择错误率最低的特征,这意味着它们是对人脸和非人脸图像进行最准确分类的特征。 (此过程并非如此简单。在开始时,每个图像的权重均相等。在每次分类后,错误分类的图像的权重都会增加。然后执行相同的过程。将计算新的错误率。还要计算新的权重。继续进行此过程,直到达到所需的精度或错误率或找到所需的功能数量为止。
最终分类器是这些弱分类器的加权和。之所以称为弱分类,是因为仅凭它不能对图像进行分类,而是与其他分类一起形成强分类器。该论文说,甚至200个功能都可以提供95%的准确度检测。他们的最终设置具有大约6000个功能。 (想象一下,从160000多个功能减少到6000个功能。这是很大的收获)。
五:创建自己的级联分类器
5.1 创建自己的级联分类器第一步
5.2 创建自己的级联分类器第二步
将以上文件拷贝到正负样本文件路径下
5.3 创建自己的级联分类器第三步
创建正负样本的图像路径的txt文件
5.4 创建自己的级联分类器第四步
通过命令行执行命令进行样本采集生成car_samples.vec正样本矢量集文件
opencv_createsamples.exe -info car_list.txt -vec car_samples.vec -num 80 -w 33 -h 33
info字段填写正样本描述文件;vec用于保存制作的正样本;num制定正样本的数目;w和-h分别指定正样本的宽和高
5.5 创建自己的级联分类器第五步
通过命令行执行命令进行训练生成
opencv_traincascade.exe -data data -vec car_samples.vec -bg ng_data.txt -numPos 80 -numNeg 240
-numStages 7 -w 33 -h 33 -minHitRate 0.995 -maxFalseAlarmRate 0.45 -mode ALL
data:指定保存训练结果的文件夹;vec:指定正样本集;bg:指定负样本的描述文件夹;numPos:指定每一级参与训练的正样本的数目(要小于正样本总数);numNeg:指定每一级参与训练的负样本的数目(可以大于负样本图片的总数);numStage:训练的级数;w:正样本的宽;h:正样本的高;minHitRate:每一级需要达到的命中率(一般取值0.95-0.995);maxFalseAlarmRate:每一级所允许的最大误检率;mode:使用Haar-like特征时使用,可选BASIC、CORE或者ALL;另外,还可指定以下字段:featureType:可选HAAR或LBP,默认为HAAR;
创建自己的级联分类器第五步 效果展示如下:
最终得到的cascade.xml即为级联分类器最终文件
边栏推荐
- PolarFormer: Multi-camera 3D Object Detection with Polar Transformers 论文笔记
- An introduction to the skeleton tool
- Using the Work Queue Manager (4)
- [Blue Bridge Cup Trial Question 48] Scratch Dance Machine Game Children's Programming Scratch Blue Bridge Cup Trial Question Explanation
- 期货公司开户关注的关键点
- Yahoo!Answers - data set
- shell编程条件语句
- Redis connection pool tool class
- An introduction to basic tools for selecting line tools (package church)
- PyTorch框架训练线性回归模型(CPU与GPU环境)
猜你喜欢
层次分析法
云计算服务主要安全风险及应对措施初探
Feature dimensionality reduction study notes (pca and lda) (1)
How to disable software from running in the background in Windows 11?How to prevent apps from running in the background in Windows 11
Comics: how do you prove that sleep does not release the lock, and wait to release lock?
基于php旅游网站管理系统获取(php毕业设计)
HCIP 第十六天笔记(SVI、生成树协议)
An动画优化之补间形状与传统补间的优化
An introduction to basic tools for selecting line tools (package church)
Kubernetes 网络入门
随机推荐
Key points for account opening of futures companies
欧曼自动挡、银河大马力、行星新产品 欧曼全新产品以燎原之势赢领市场
图像融合GAN-FM学习笔记
Use %Status value
通过点击CheckBox实现背景变换小案例
YOLOv5 training data prompts No labels found, with_suffix is used, WARNING: Ignoring corrupted image and/or label appears during yolov5 training
可重入锁详解(什么是可重入)
类和对象(中上)
Blog records life
Oracle is installed (system disk) and transferred from the system disk to the data disk
长江商业银行面试
PolarFormer: Multi-camera 3D Object Detection with Polar Transformers 论文笔记
免费的网络传真平台_发传真不显示发送号码
Image fusion GAN-FM study notes
Autumn recruitment work
An introduction to basic tools for selecting line tools (package church)
[数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念「建议收藏」
基于php校园医院门诊管理系统获取(php毕业设计)
期货公司开户关注的关键点
Jmeter use