第一次尝试opencv级联分类器训练,过程全记载
发布日期:2021-06-29 13:43:36
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月24日 20时57分40秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
华为重磅反击,鸿蒙来了!
2019-04-29
常用电子接口大全,遇到不认识的,就翻出来对照辨认!
2019-04-29
芯片IC附近为啥要放0.1uF的电容?
2019-04-29
电赛 | 19年全国一等奖,北航学子回忆录。
2019-04-29
电赛 | 19年全国一等奖,北航学子回忆录(上)
2019-04-29
电赛 | 19年全国一等奖,北航学子回忆录(下)
2019-04-29
突破!台积电1nm芯片,有了新进展。
2019-04-29
一文读懂全系列树莓派!
2019-04-29
自制一个害羞的口罩,见人就闭嘴,戴着可以喝奶茶
2019-04-29
聊聊我是如何编程入门的
2019-04-29
J-Link该如何升级固件?
2019-04-29
485通信自动收发电路,历史上最详细的解释
2019-04-29
【视觉盛宴三】不好意思,这些线材接口的横截面真的没见过
2019-04-29
一位头发发白的神人教你怎么写程序,运维,买电脑,写文章,平面设计!
2019-04-29
【第二期】那些设计漂亮、有创意的电路板!
2019-04-29
【第三期】那些设计漂亮、有创意的电路板!
2019-04-29
继续推荐公众号~
2019-04-29
「第二篇」全国一等奖,经验帖。
2019-04-29
「第三篇」全国电子设计竞赛,这些你必须知道的比赛细节,文末附上近十年电赛题目下载...
2019-04-29
5G小科普(漫画版,So easy!)
2019-04-29