opencv训练自己的级联分类器

环境

硬件

硬件环境:Intel 9700F、8G内存

软件及驱动

操作系统:Windows10企业版(HyperV虚拟机)

Opencv:opencv3.4.0

C++动态链接库支持:VS2019社区版

数据集准备

本章节主要参考CSDN博客

正样本数据(缺陷:破损)

(1)将所有图像转换为统一格式如jpg或bmp,本文档使用jpg图像进行训练

(2)编写数据统计脚本,并从json中读取标记框,写入txt文档,下图为截取的写好的pos.txt文档

以第一行数据为例:

0.jpg::图像名称

4:json文件中标记框的个数

525:第一个框的左上角坐标点x

602:第一个框的左上角左边掉y

291:框的长

68:框的宽

后续数字则表示其他两个框的坐标点和长宽。

负样本数据(正常)

(1)将所有图像转换为统一格式如jpg或bmp,本文档使用jpg图像进行训练

(2)编写脚本,将负样本文件名写入neg.txt中,下图为写好的neg.txt文件

这里要注意,相较于pos.txt中的内容,neg.txt的图像文件名需要加入neg/,确保使用后续命令时保持与本文档一致

级联分类器训练

训练准备

1.新建文件夹cascade(可自定义)

2.进入cascade文件夹,新建neg和pos文件夹,将准备好的图像数据和对应的txt文件放入

3.进入cascade文件夹新建xml文件夹,用于存放训练好的xml文件

4.进入opencv安装目录,拷贝opencv_createsamples.exe、opencv_traincascade.exe、opencv_world340.dll文件放入建好的cascade文件夹中,三个文件在opencv的目录为\opencv\build\x64\vc15\bin

开始训练

1.在cascade中打开cmd窗口

2.执行指令opencv_createsamples -info pos\pos.txt -vec pos.vec -bg neg\neg.txt -num 1624 -w 24 -h 24,运行命令后,会在cascade文件夹下生成pos.vec文件,命令解释如下图所示

3.生成pos.vec文件后,执行指令opencv_traincascade -data xml -vec pos.vec -bg neg\neg.txt -numPos 1400 -numNeg 1254 -numStages 20 -featureType HAAR -w 24 -h 24,执行后等待训练结束即可,指令解释如下图所示:

4.xml文件夹下生成的cascade.xml即为训练后的级联分类器文件

采坑指南

1.生成pos.txt文档时一定要注意写入的图像文件名中不能有空格,否则无法正确生成pos.vec文件

2.生成pos.txt文档时一定要注意标记框的范围,不能超出图像的长宽,否则无法正确生成pos.vec文件,在根据json文件中的左上和右下坐标计算标记框时可向下取整,不要四舍五入,同时,生成pos.txt后可编写脚本,剔除标记框超出图像长宽的图像

3.执行生成pos.vec文件的命令时,确保-num为图像数量,如本文档中使用的1624张图像

4.此条需格外注意,执行训练命令时,-numPos一定要小于训练图像数量,如本文档中使用1624张图像进行训练,但-numPos写了1400,根据查阅的相关资料,-numPos后写的数字为正样本数量的90%即可

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值