当前位置:网站首页>【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 33info字段填写正样本描述文件;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 ALLdata:指定保存训练结果的文件夹;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即为级联分类器最终文件
边栏推荐
- An动画基础之元件的图形动画与按钮动画
- AMS simulation
- Database basics one (MySQL) [easy to understand]
- An animation optimization of traditional guide layer animation
- 新评论接口——京东评论接口
- leetcode16 Sum of the closest three numbers (sort + double pointer)
- 链游NFT元宇宙游戏系统开发技术方案及源码
- An动画优化之遮罩层动画
- ECCV 2022 | AirDet: 无需微调的小样本目标检测方法
- Grafana 高可用部署最佳实践
猜你喜欢

(through page) ali time to upload the jar

Unsupervised learning KMeans notes and examples

YOLOv5 training data prompts No labels found, with_suffix is used, WARNING: Ignoring corrupted image and/or label appears during yolov5 training

Notepad++ 安装jsonview插件

欧曼自动挡、银河大马力、行星新产品 欧曼全新产品以燎原之势赢领市场

图像融合GAN-FM学习笔记

BOM系列之sessionStorage

setTimeout 、setInterval、requestAnimationFrame

An animation optimization of traditional guide layer animation

An工具介绍之骨骼工具
随机推荐
Byte's favorite puzzle questions, how many do you know?
GameFi 行业下滑但未出局| June Report
Golang 通道 channel
leetcode16 Sum of the closest three numbers (sort + double pointer)
[Blue Bridge Cup Trial Question 48] Scratch Dance Machine Game Children's Programming Scratch Blue Bridge Cup Trial Question Explanation
Database basics one (MySQL) [easy to understand]
Image fusion SDDGAN article learning
Nodejs 安装依赖cpnm时,install 出现Error: Cannot find module ‘fs/promises‘
使用工作队列管理器(三)
Comics: how do you prove that sleep does not release the lock, and wait to release lock?
使用 %Status 值
In order to counteract the drop in sales and explore the low-end market, Weilai's new brand products are priced as low as 100,000?
类和对象(中上)
安防监控必备的基础知识「建议收藏」
nacos app
Jmeter使用
How to disable software from running in the background in Windows 11?How to prevent apps from running in the background in Windows 11
什么是分布式锁?几种分布式锁分别是怎么实现的?
浅谈程序员的职业操守
An introduction to the camera