第一次尝试opencv级联分类器训练,过程全记载
发布日期:2021-06-29 13:43:36
浏览次数:3
分类:技术文章
本文共 2706 字,大约阅读时间需要 9 分钟。
0.预先准备
我们需要用到的是opencv自带的级联分类器:
主要是opencv_traincascade.exe和opencv_createsamples.exe; 位置类似:opencv/build/x64/vc15/bin; 只需要设置好opencv的环境变量即可; 在控制台直接输出函数:1.准备样本:
准备的格式为存放正负样本的两个文件夹,以及2个txt文本描述:
这里负样本放在bg文件夹,文本描述在bg.txt;
这里正样本放在new_samples文件夹,文本描述在info.txt; 正样本图像大小已统一; 文本格式类似(记录图片的地址): 正样本的格式为: 例如1: 数字1表示图中一个目标,标示其在图像中的位置和大小的矩形为(140, 100, 45, 45) 在准备样本的过程中可能需要把大量文件夹的图片整合到一个文件夹并同意命名: 可参考:https://blog.csdn.net/sazass/article/details/92832942 代码输出指定内容txt描述文件, 可参考:https://blog.csdn.net/sazass/article/details/928331462.使用opencv_createsamples创建正样本vec格式
打开控制台,输出opencv_createsamples:
下面是各个参数的详解。 一般主要用到:-info 正样本描述文件的地址-vec 输出的vec文件地址-w 正样本的宽-h 正样本的高-num 正样本数量(越少越快,一般不超过正样本库的数目)
其他参数可查看
https://blog.csdn.net/sean_xyz/article/details/80002266开始创建(时间大约几分钟):
第二阶段结束。注意:最开始opencv_createsamples创建的时候陷入到了无穷等待中:后来发现正样本的尺寸很乱,后来是直接统一了所有正样本的尺寸大小,规范了一下正样本描述文件的地址(格式可参考上步);然后再次创建就很快的成功了!
3.使用opencv_traincascade训练模型
打开控制台:
这里主要需要用到的参数详细说明: https://blog.csdn.net/sazass/article/details/89196350遇到问题:
这个问题应该是描述文件的地址问题,控制台若是在当前文件夹内则可用相对地址,否则需要用绝对地址。 正样本若整个图片都是一个目标,最好中描述文件中加入参数(坐标尺寸):1 0 0 24 36还有一些是x64与x86的问题,灵活处理。
关于opencv_traincascade具体参数:
1.通用参数:
-stageType <BOOST(default)>-data目录名,如不存在训练程序会创建它,用于存放训练好的分类器。vec 包含正样本的vec文件名(由 opencv_createsamples 程序生成)。-bg 背景描述文件,也就是包含负样本文件名的那个描述文件。-numPos 每级分类器训练时所用的正样本数目。-numNeg 每级分类器训练时所用的负样本数目,可以大于 -bg 指定的图片数目。-numStages 训练的分类器的级数。-precalcValBufSize 缓存大小,用于存储预先计算的特征值(feature values),单位为MB。-precalcIdxBufSize 缓存大小,用于存储预先计算的特征索引(feature indices),单位为MB。内存越大,训练时间越短。-baseFormatSave 这个参数仅在使用Haar特征时有效。如果指定这个参数,那么级联分类器将以老的格式存储。
2.级联参数:
-stageType级别(stage)参数。目前只支持将BOOST分类器作为级别的类型。-featureType<{HAAR(default), LBP}> 特征的类型: HAAR - 类Haar特征; LBP - 局部纹理模式特征。-w -h 训练样本的尺寸(单位为像素)。必须跟训练样本创建(使用 opencv_createsamples 程序创建)时的尺寸保持一致。
3.Boosted分类器参数:
-bt <{DAB, RAB, LB, GAB(default)}> Boosted分类器的类型: DAB - Discrete AdaBoost, RAB - Real AdaBoost, LB - LogitBoost, GAB - Gentle AdaBoost。-minHitRate分类器的每一级希望得到的最小检测率。总的检测率大约为 min_hit_rate^number_of_stages。-maxFalseAlarmRate 分类器的每一级希望得到的最大误检率。总的误检率大约为 max_false_alarm_rate^number_of_stages.-weightTrimRate Specifies whether trimming should be used and its weight. 一个还不错的数值是0.95。-maxDepth 弱分类器树最大的深度。一个还不错的数值是1,是二叉树(stumps)。-maxWeakCount 每一级中的弱分类器的最大数目。The boosted classifier (stage) will have so many weak trees (<=maxWeakCount), as needed to achieve the given -maxFalseAlarmRate.
4.类Haar特征参数:
-mode择训练过程中使用的Haar特征的类型。 BASIC 只使用右上特征, ALL 使用所有右上特征和45度旋转特征
5.LBP特征参数:
LBP特征无参数。开始训练:
转载地址:https://chenlinwei.blog.csdn.net/article/details/93073840 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月04日 00时23分25秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
网络爬虫初涉——用python爬取网络小说
2019-04-29
Pycharm+tensorflow dropout 学习(三)
2019-04-29
Pycharm+tensorflow CNN 学习(四)
2019-04-29
用python暴力破解压缩包密码
2019-04-29
基于OpenCV 将图片进行预处理,转变为MNIST图片格式
2019-04-29
PyCharm+Tensorflow CNN调用训练好的模型进行预测 (五)
2019-04-29
物联网平台Node-red初涉——访问搭建的简易服务器
2019-04-29
2020-10-27
2019-04-29
OpenCV+python识别并打印HSV颜色
2019-04-29
2021-03-29
2019-04-29
网络攻击与防御--引言
2019-04-29
网络攻击与防御--网络协议漏洞
2019-04-29
sql注入: 判断注入点类型
2019-04-29
千人千面Elasticsearch实战学习笔记
2019-04-29
最大子数组问题(递归)(java)
2019-04-29
2021年第十二届蓝桥杯软件赛省赛第二场 C/C++ 大学 A 组
2019-04-29
2020年哨兵数据批量下载(USGS)
2019-04-29
简单3步快速生成千万级别mysql测试数据库,模拟电商数据
2019-04-29
EasyDSS平台接入设备量过多的情况下如何进行批量推流测试?
2019-04-29
mysql数据库操作基础
2019-04-29