利用adaboost训练的分类器做了几个项目(当然在实际应用过程中,我对adaboos的源码做了优化和改善,同时我也用了深度学习--caffe做了类似的工作,综合权衡算法检测率、算法效率,在项目中采用的还是adaboost,后期我会花大量时间对caffe改进、优化), 以下纯为训练前要注意的事项。
0、训练前,正样本尺寸的选择很重要。
1、训练时正样本的设置:越多越好,但是要考虑训练机器的内存。在训练前,正样本设置的通用公式为:posNum+numStages*[(1-minHitRate)*posNum +50~300]<total_posNum,.因此要引起注意。
A、原因:每完成训练一层后,即将开始的那一层将从numStages*[(1-minHitRate)*posNum +300~600]个正样本中选取设定的(训练前就设定)正样本中数量。
B、后果:如果不注意正样本的的设定公式,分类器很可能训练不到你设定的阶数。
C、举例: 训练时屏幕会有该层的信息行:POS cout :consumed 110000:123188,意即是从123188个正样本中选取110000个正样本来训练。如果想训练到30层,但总正样本个数是150000,而训练开始前参数设定为130000,minHitRate为0.99,那铁定训练不到20层。因