当前位置:网站首页>【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即为级联分类器最终文件
边栏推荐
猜你喜欢
基于php志愿者服务平台管理系统获取(php毕业设计)
Comics: how do you prove that sleep does not release the lock, and wait to release lock?
图像融合GAN-FM学习笔记
PyTorch框架训练线性回归模型(CPU与GPU环境)
[Blue Bridge Cup Trial Question 48] Scratch Dance Machine Game Children's Programming Scratch Blue Bridge Cup Trial Question Explanation
GameFi 行业下滑但未出局| June Report
The common problems in the futures account summary
YOLOv5 training data prompts No labels found, with_suffix is used, WARNING: Ignoring corrupted image and/or label appears during yolov5 training
Win11怎么禁止软件后台运行?Win11系统禁止应用在后台运行的方法
An动画基础之散件动画原理与形状提示点
随机推荐
便携烙铁开源系统IronOS,支持多款便携DC, QC, PD供电烙铁,支持所有智能烙铁标准功能
An动画基础之按钮动画与基础代码相结合
HCIP 第十六天笔记(SVI、生成树协议)
安防监控必备的基础知识「建议收藏」
力扣刷题 每日两题(一)
An工具介绍之形状工具及渐变变形工具
An动画优化之补间形状与传统补间的优化
新评论接口——京东评论接口
期货开户中常见问题汇总
【深度学习】高效轻量级语义分割综述
论文理解:“Gradient-enhanced physics-informed neural networks for forwardand inverse PDE problems“
层次分析法
Classes and objects (upper)
GameFi 行业下滑但未出局| June Report
When Nodejs installation depends on cpnm, the install shows Error: Cannot find module 'fs/promises'
Tinymce plugins [Tinymce扩展插件集合]
Feature dimensionality reduction study notes (pca and lda) (1)
The Yangtze river commercial Banks to the interview
Classes and Objects (lower middle)
An基本工具介绍之选择线条工具(包教会)