我花了几个星期的时间试图创建一个好的级联分类器,但这个过程似乎充满了神秘感。我有很多问题:
1) 为什么opencv给我们的信息这么少?
2) 它需要更多的正面图像还是负面图像?
3) 正面图像的大小应该是多少?负面图像呢?它们一定都一样大?
4) 如果我想为一个路标创建一个分类器,像这样的一个正面图像就足以用opencv_createsamples创建样本吗?
5) 创建一个在安卓应用程序上使用的分类器是Haar还是LBP更好?
6) 阶段的正确数量是多少?
7) minHitRate和maxFalseAlarmRate的正确值是多少?
- 它提供信息,读取它只是有点麻烦http://docs.opencv.org/doc/user_guide/ug_traincascade.html
- 出于几个原因,你需要更多的负面图像。首先,当有更多的正面图像而不是负面图像时,它有时会崩溃,其次,大多数时间的训练都集中在从负面图像中寻找被检测为你的物体的东西,并纠正错误
- 据我所知,这并不重要,但相关的是他们自己的负面形象。它们应该接近你物体的真实背景,我的意思是,如果是交通标志,不要把在办公室点击的照片作为背景,而是在外面点击的照片
- 对我来说,有一张我的对象的照片,用opencv_createsamples生成1500个样本就足够了,但最好有几个图像10、20,每个图像生成100200个样本,然后将它们组合成一个训练集
- Haar的训练和运行速度较慢,但有时它更精确,所以我选择LBP
- 你可以一个阶段一个阶段地训练,一开始做10-15个阶段,然后一个接一个地添加。所有阶段都已记录,您不必每次都从第一阶段开始
7.我没有玩这个参数,我总是把它们留给默认值,但你可以在这里查看有关traincascade参数、样本和其他。。。以供解释。
也检查这个问题和答案如何正确训练级联和常见问题解答-HAARTraining