zoukankan      html  css  js  c++  java
  • Opencv haar training-特征训练器

    1.正样本文件采集:

    需要使用到的工具:objectmarker

    用于待识别对象的标注,并生成标注文件。需要注意的是,生成完标注文件之后(通常是info.txt文件),用编辑器打开文件,将所有路径信息删除,只保留文件名和其对应的标注信息,修改完成之后,将文件保存为sample_pos.dat(注意,文件名字不要改变,否则以后会很坑,这个具体还没去研究源码,应该是程序的问题);

    ps:如果已经有了图像的标注信息,那就可以跳过这一步了。

    2.正样本vec文件生成(sample文件)

    工具:opencv_createsamples.exe

    在工具所在目录创建文件夹:pos,将采集到的正样本,以及标注文件放入pos文件夹;

    使用cmd进入工具所在目录,执行命令:

    opencv_createsamples.exe -info ./pos/sample_pos.dat -vec ./pos/sample_pos.vec -num 17 -w 20 -h 20 -show YES

    ps:-num:正样本个数

    3.负样本采集

    建议正负样本比例在1:3(具体还不知道,参考网上提供的数据)。负样本在采集的时候尤其需要注意,尽量保持和正样本环境相似,比如,正样本图像中包含要检测的对象,负样本图像中最好剔除要检测的对象,只保留背景。有条件的同学可以直接写程序,对负样本图片进行切割,标准是40*40(因为我们的正样本采用的是20*20)。

    负样本采集完成之后,在pos目录的统计目录创建文件夹:neg,将负样本拷贝至neg目录,然后使用命令行进入neg目录,执行命令:

    dir /b > sample_neg.dat

    用文本编辑器打开dat文件,删除最后一行:sample_neg.dat,保存文件;

    ps:文件名字不要改变,否则会出错

    4.训练样本

    到此为止,我们要准备的文件都已经准备好,可以进行训练了。

    使用的工具:opencv_haartraining.exe

    进入工具所在目录,先创建目录:cascade,然后执行命令:

    opencv_haartraining.exe -data ./cascade -vec ./pos/sample_pos.vec -bg ./neg/sample_neg.dat -nstage 20 -npos 100 -nneg 300 -mem 256 -mode ALL -w 20 -h 20
    -nstage:要训练多少层
    -npos:每层的正样本个数
    -nneg:每层的负样本个数

    ps:在这一步经常会抛异常,通常都是负样本文件不对,同时dat文件的名字一定要按照上面说的命名,否则会出错;

    5.合并xml文件

    样本训练完成之后,cascade目录下会生成多个子目录,需要将这些目录合并生成xml文件才能使用:

    工具:c-example-convert_cascade.exe(ps:根据opencv的版本不同,这个工具的名字也可能不同)

    执行命令:

    c-example-convert_cascade.exe --size=20x20 ./cascade haar_adaboost.xml

    到此,会在目录中生成haar_adaboost.xml文件!

    done!

    说明:

    1.所有的工具及其依赖文件建议统一放置在一个目录中(比如:build);

    2.除了负样本描述文件的生成命令需要在neg目录中执行,其他命令全部在build(假设你也有这个目录,以各自的实际目录为准)目录中执行;

    3.good luck!

    参考:

    1.http://www.cnblogs.com/wengzilin/p/3845271.html

    2.http://blog.csdn.net/xuejiren/article/details/39493537

    (Opencv Error: Assertion failed (elements_read==1))

  • 相关阅读:
    并不对劲的loj3124:uoj477:p5405:[CTS2019]氪金手游
    并不对劲的loj6498. 「雅礼集训 2018 Day2」农民
    并不对劲的loj2251:p3688[ZJOI2017]树状数组
    并不对劲的loj2050:p3248:[HNOI2016]树
    并不对劲的BJOI2020
    并不对劲的loj3110:p5358:[SDOI2019]快速查询
    并不对劲的loj3111:p5359:[SDOI2019]染色
    (困难) CF 484E Sign on Fence,整体二分+线段树
    算法录 之 拓扑排序和欧拉路径。
    数据结构录 之 BST的高级应用。
  • 原文地址:https://www.cnblogs.com/Pure-Land/p/5006993.html
Copyright © 2011-2022 走看看