注意:使用opencv自带的build\x64\vc15\bin里面的opencv_createsamples.exe和opencv_traincascade.exe(opencv_createsamples.exe生成vec文件,opencv_traincascade.exe训练生成xml文件)

大体步骤:收集样本(正、负样本)——制作标签文件——训练样本——获得xml数据集
下面开始方法步骤:

  1. 在安装的opencv的bin文件夹里创建三个空白文件夹,分别是negative、positive、xml

  2. 收集正样本图片放入positive文件夹中,正样本图片就是我们需要检测的目标图片,这个图片越多越好,对图片的要求是:1、只包含要检测的图片,2、图片应尽量保持相同的大小(也可以不用保持相同大小),3、如果有能力那么建议对检测的图片进行二值化处理(也可以不用处理),以上要求都是为了提高正样本(即目标图片)训练的准确度。

  3. 收集负样本图片放入negative文件夹中,负样本是没有包含我们需要检测的目标图片,图片越多越好,应大于等于正样本图片数,对图片的要求:1、图片内没有任何与检测目标相同的部分,2、任何图片都可以作为负样本图片,以上要求都是为了提高正样本的抗环境复杂度。

  4. 制作正样本标签:1.在positive文件夹里(即放正样本图片的文件夹),新建一个名为posdata.txt文本文件,2.打开文件输入dir /b/s/p/w *.jpg > posdata.txt,退出保存,3.重命名posdata.txt为posdata.bat,4.双击运行文件生成posdata.txt文件(即我们需要的标签文件),5.打开标签文件把正样本图片的绝对路径修改为相对路径(在文件内建议使用CTRL+H批量修改),6、并且在相对路径后面加上1 0 0 40 40
    修改如图:
    最详细!!!使用opencv的级联分类器训练样本获得xml数据的方法(opencv、xml数据集)

最详细!!!使用opencv的级联分类器训练样本获得xml数据的方法(opencv、xml数据集)

  1. 制作负样本的标签:1.在negative文件夹里(即放负样本图片的文件夹),2.新建一个名为negdata.txt文本文件,3.打开文件输入dir /b/s/p/w *.jpg > negdata.txt,退出保存,4.重命名negdata.txt为negdata.bat,5.双击运行文件生成posdata.txt文件(即我们需要的标签文件),6.打开标签文件把正样本图片的绝对路径修改为相对路径(在文件内建议使用CTRL+H批量修改),7.负样本不需要添加1 0 0 40 40

  2. 使用opencv_createsamples.exe生成vec文件操作:在bin文件夹空白处按住shift+鼠标右键点开windows power shell ,在打开的控制台窗口里输入命令:
    .\opencv_createsamples.exe -vec pos.vec -info posdata.txt -num 200 -w 40 -h 40
    (这里的W和H对应的数值必须是正样本标签里一样的数值),运行完命令后会在bin文件夹里生成一个pos.vec的文件

  3. 训练操作:继续在控制台里输入训练命令,这里给出2个常用训练命令:
    .\opencv_traincascade.exe -data xml -vec pos.vec -bg negdata.txt -numPos
    16 -numNeg 50 -numStages 16 -w 40 -h 40 -mode ALL -mem 3000

.\opencv_traincascade.exe -data dt -vec pos.vec -bg negdata.txt -numPos
16 -numNeg 50 -numStages 16 -precalcValbufSize 4048 -precalcdxBufSize 4048 -featureType LBP -w 40 -h 40 -numThreads 24

其中自己要调整bumpos和numneg对应的数值,他们的满足关系为:
numneg (负样本)数设置为总数的一半,或者其他值,
numpos (正样本)数设置为负样本数的3分1

关于opencv_traincascade.exe和opencv_createsamples.exe的命令参数详解网址https://docs.opencv.org/3.4.1/dc/d88/tutorial_traincascade.html

  1. 训练生成数据集将会放在我们创建的xml文件夹里,每次训练都必须保证xml文件夹是空, -numStages 16 这里的训练次数不是越多越好,要根据正样本数调整(太大会一直卡在某个阶段训练,太小会导致训练的数据精度不够),因此需要根据经验调整stages数

  2. 训练结果如图:
    最详细!!!使用opencv的级联分类器训练样本获得xml数据的方法(opencv、xml数据集)

  3. 我本人的一些脑洞:现在我们可以为某个单一目标进行样本训练,并获得xml数据集,那么我们是否可以这样在无人机或者火箭弹上部署我们的目标检测功能,让后对其跟踪或者对其进行…………

  4. 欢迎大家加QQ群109530331细谈,哈哈哈

相关文章:

  • 2021-11-23
  • 2021-11-23
  • 2021-11-23
  • 2021-11-23
  • 2021-11-14
  • 2021-11-22
  • 2021-11-23
  • 2021-10-19
猜你喜欢
  • 2021-11-30
  • 2022-12-23
  • 2021-11-23
  • 2021-07-01
  • 2021-11-23
  • 2022-12-23
  • 2021-11-23
相关资源
相似解决方案