我在训练一个级联分类器以便在图像中检测动物。不幸的是,我的误报率相当高(使用Haar和LBP时极高,使用HOG时尚可)。我想知道我如何能改进我的分类器。
以下是我的问题:
- 对于稳健检测,需要多少训练样本?我在某处读到需要4000个正样本和800个负样本。这是合理的估计吗?
- 训练样本的差异性应该有多大?有没有办法量化图像差异,以便包含或排除可能的“重复”数据?
- 如何处理遮挡的物体?我应该只训练可见部分的动物,还是应该选择我的感兴趣区域(ROI),以便平均ROI保持相当恒定?
- 关于遮挡的物体:动物有腿、臂、尾巴、头等。由于某些身体部位经常被遮挡,选择“躯干”作为ROI是否有意义?
- 我应该尝试缩小我的图像并在较小的图像尺寸上训练吗?这可能会改善情况吗?
我在这里欢迎任何建议!
回答:
- 4000正样本 – 800负样本的比例不好。负样本的问题在于,你需要尽可能多地训练它们,因为Adaboost机器学习算法——所有haar特征选择过程的核心算法——高度依赖它们。使用4000 / 10000将是一个很好的改进。
- 检测“动物”是一个难题。由于你的问题是一个决策过程,已经是NP难题,你的分类范围增加了复杂性。从猫开始吧。先建立一个检测猫的系统。然后将同样的方法应用到狗上。假设有40个系统,检测不同种类的动物,并在以后用于你的目的。
- 在训练时,不要将遮挡的物体用作正样本。即,如果你想检测正脸,那么只训练正脸,仅应用位置和方向的变化,不包括任何其他物体在前面。
- 缩放并不重要,因为haar分类器本身会将一切缩放到24×24。当你有足够的时间时,观看整个Viola-Jones演示。
- 祝你好运。