利用OpenCV自带的haartraining程序训练分类器并测试

xiaoxiao2021-02-28  37

OpenCV提供了两个程序可以训练自己的级联分类器opencv_haartraining与opencv_traincascade,opencv_haartraining是一个将被弃用的程序,opencv_traincascade是一个新程序,使用opencv 2.x API 以C++编写。这二者主要的区别是opencv_traincascade支持 Haar和 LBP (Local Binary Patterns)两种特征,并易于增加其他的特征。 opencv_haartraining程序训练一个分类器模型,方法与opencv_traincascade相似(样本准备可参考另一篇博文利用OpenCV自带的traincascade程序训练分类器)。 opencv_haartraining程序的.bat批处理文件的格式如下:

@echo opencv_cascade\opencv_haartraining.exe -data cascades -vec positivesamples/possamples.vec -bg negativesamples/negsamples.txt -npos 2000 -nneg 10000 -nstages 20 -nsplits 2 -mem 1024 -minhitrate 0.995 -maxfalsealarm 0.5 weighttrimming 0.95 -mode ALL -w 28 -h 28 Pause

opencv_haartraining 的命令行参数如下: -data 存放训练好的分类器的路径名 -vec 正样本文件名(由trainingssamples程序或者由其他的方法创建的) -bg 背景描述文件 -npos, -nneg 用来训练每一个分类器阶段的正/负样本。合理的值是:nPos = 7000;nNeg= 3000 -nstages 训练的阶段数。 -nsplits 决定用于阶段分类器的弱分类器。如果1,则一个简单的stump classifier被使用。如果是2或者更多,则带有number_of_splits个内部节点的CART分类器被使用。 -mem 预先计算的以MB为单位的可用内存。内存越大则训练的速度越快。 -sym(default) -nonsym 指定训练的目标对象是否垂直对称。垂直对称提高目标的训练速度。例如,正面部是垂直对称的。 -minhitrate 每个阶段分类器需要的最小的命中率。总的命中率为min_hit_rate的number_of_stages次方。 -maxfalsealarm 没有阶段分类器的最大错误报警率。总的错误警告率为max_false_alarm_rate的number_of_stages次方。 -weighttrimming 指定是否使用权修正和使用多大的权修正。一个基本的选择是0.9 -eqw -mode< basic(default)|core|all > 选择用来训练的haar特征集的种类。basic仅仅使用垂直特征。all使用垂直和45度角旋转特征。 -w -h 训练样本的尺寸,(以像素为单位)。必须和训练样本创建的尺寸相同。

opencv_performance测试分类器模型 opencv_performance 可以用来评估分类器的质量,但只能评估 opencv_haartraining 输出的分类器。它读入一组标注好的图像,运行分类器并报告性能,如检测到物体的数目,漏检的数目,误检的数目,以及其他信息。同样准备测试数据集test,生成图像列表文件,格式与训练者正样本图像列表相同,需要标注目标文件的个数与位置。 opencv_performance程序的.bat批处理文件的格式如下:

@echo opencv_cascade\opencv_performance.exe -data cascade/cascade.xml -info test/test.txt -w 28 -h 28 -rs 30 Pause

opencv_performance 的命令行参数如下所示: -data 训练好的分类器 -info 描述物体所在图像以及大小位置的描述文件 -maxSizeDiff< max_size_difference =1.500000 > -maxPosDiff< max_position_difference =0.300000 > -sf< scale_factor = 1.200000 > -ni 选项抑制创建的图像文件的检测 -nos< number_of_stages = -1 > -rs< roc_size = 40 > -w< sample_width = 24 > -h< sample_height = 24 >

关于OpenCV分类器训练的文章可参考博客。

转载请注明原文地址: https://www.6miu.com/read-37137.html

最新回复(0)