这是我第一次使用OpenCV的Haartraining功能。
只是为了练习,我使用了35张正样本图片和45张负样本图片。
但当我尝试从数据中进行训练时,它永远无法完成,
即使参数已经极端调整。
(最小命中率 = 0.001,最大误报率 = 0.999
我认为由于这些极端值,它不会花费太多时间)
我的实验中哪里出了问题?
这是我的命令和参数。
$opencv_haartraining -data Training -vec samples.vec -bg negatives.dat -nstages 2 -nsplits 2 -minhitrate 0.001 -maxfalsealarm 0.999 -npos 30 -nneg 40 -w 20 -h 20 -nonsym -mem 512 -mode ALL -minpos 10
以及结果。
Data dir name: TrainingVec file name: samples.vecBG file name: negatives.dat, is a vecfile: noNum pos: 30Num neg: 40Num stages: 2Num splits: 2 (tree as weak classifier)Mem: 512 MBSymmetric: FALSEMin hit rate: 0.001000Max false alarm rate: 0.999000Weight trimming: 0.950000Equal weights: FALSEMode: ALLWidth: 20Height: 20Applied boosting algorithm: GABError (valid only for Discrete and Real AdaBoost): misclassMax number of splits in tree cascade: 0Min number of positive samples per cluster: 10Required leaf false alarm rate: 0.998001Stage 0 loadedStage 1 loadedStage 2 loadedStage 3 loadedStage 4 loadedTree ClassifierStage+---+---+---+---+---+| 0| 1| 2| 3| 4|+---+---+---+---+---+ 0---1---2---3---4Number of features used : 125199Parent node: 4*** 1 cluster ***POS: 30 32 0.937500
回答:
你是在使用OpenCV_Haartraining吗?
如果是的话,这是一个已废弃的应用程序,你应该使用opencv_traincascades。
这样做将
- A. 加快分类所需的时间 - B. 获得更好的支持
请参阅这些链接以获取更多信息 训练与TrainCascade对比 和 TrainCascade Wiki。
编辑:
另外,请更改你的最小命中率和最大误报率。
我建议使用类似0.4和0.95的数值来开始。
这样做的原因是,如果你设定为0.999和0.0001,它可能永远也达不到这个目标。