opencv ---- opencv_haartraining 训练目标检测模型

opencv ---- opencv_haartraining 训练目标检测模型

1 样本整理
2 训练参数解读
3 测试demo书写

一 目标检测样本整理

1 使用labelimg 标注目标图像的label文件(附labelimg配置文件及教程网址:https://blog.csdn.net/mzpmzk/article/details/78287099)
2 裁剪只包含目标的图片作为正样本,通过计算iou>0.65确定为正样本(可参考mtcnn中 样本生成的方法得到正负局部样本集),还通过调整iou阈值得到一组更准确的训练样本。 两组样本分别进行训练比较结果。
3 正样本vec文件生成:先生成只包含 图像名+1+0+0+size_w+size_h的pos.txt文件 使用opencv_createsamples.exe生成正样本描述vec文件,(详细教程:https://blog.csdn.net/ding977921830/article/details/45914137)
4 负样本只需要neg.txt (绝对路径或者相对路径均可)

opencv_haartraining.exe一定要放在负样本目录下,才能正常开始训练

二 训练参数解读

Usage: opencv_haartraining.exe
-data <dir_name>
-vec <vec_file_name>
-bg <background_file_name>
[-bg-vecfile]
[-npos <number_of_positive_samples = 2000>]
[-nneg <number_of_negative_samples = 2000>]
[-nstages <number_of_stages = 14>]
[-nsplits <number_of_splits = 1>]
[-mem <memory_in_MB = 200>]
[-sym (default)] [-nonsym]
[-minhitrate <min_hit_rate = 0.995000>]
[-maxfalsealarm <max_false_alarm_rate = 0.500000>]
[-weighttrimming <weight_trimming = 0.950000>]
[-eqw]
[-mode <BASIC (default) | CORE | ALL>]
[-w <sample_width = 24>]
[-h <sample_height = 24>]
[-bt <DAB | RAB | LB | GAB (default)>]
[-err <misclass (default) | gini | entropy>]
[-maxtreesplits <max_number_of_splits_in_tree_cascade = 0>]
[-minpos <min_number_of_positive_samples_per_cluster = 500>]
我指定的参数如下:
-data 生成模型的存放地址,训练完成后有同名的xml文件和对应文件夹,文件夹为训练中途突然断掉,后重启继续训练提供之前的训练文件
-vec 正样本vec 文件的路径
-bg 负样本文件的路径
-npos 正样本个数(少于准备的正样本数,最好为全样本数的2/3,训练过程中会剔除不合格的样本,使样本数量逐渐减少)
-nneg 负样本个数 (之前的训练让我觉得 正:负=1:4时比较好,避免模型过拟合)
-nstages 训练层数定义 默认14,(我没有gpu用16层训了一次,,慢到你怀疑人生)
-mem 内存设置,我设置了2048
-w -h 为样本宽高。(不定义参数按默认值进行训练)

三 测试demo及结果分析

首先用小样本(pos 150,neg 250)训了一版目标检测的模型,然后就是调试测试demo了,,,由于变成能力一般,我还是先从网上down了一个基本的检测源码:(http://www.cnblogs.com/mengdd/archive/2012/08/01/2619043.html)
1 出现了无数次模型导入错误的问题,按上文方式没有问题。
2 cvHaarDetectObjects中参数设置问题,我主要修改了待检测的最小尺寸,上模型检测过拟合,只有一个目标的图片会检测出40多个框,后改size之后约束了一下,只检测到四五个,只是为了测试demo结果,后续还应等剩下两组训练完成后测试。组a(pos:300,neg:5000) 组b(pos:2000,neg:10000)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值