OpenCV级联分类器
概览
- OpenCV: 一个计算机视觉库, 提供了一种称级联分类器的方法检测对象
- 级联分类器:一种基于AdaBoost算法的多级分类器, 用于在图像中检测目标对象. 它通过不断学习组合多个特征来识别目标对象. 每一级中, 级联分类器先检测出可能是目标对象的部分, 然后再这些部分进行更细粒度的检测, 有效减少检测所需计算量, 提高检测速度.
概念
样本
- 正样本: 要检测的目标对象的样本(人脸图像, 车辆图像等)
- 学习目标对象的特征
- 负样本: 不要检测的目标对象样本(背景图像)
- 学习非目标对象的特征
- 通过对比正样本和负样本的特征, 分类器可以学习如何识别目标对象
- 正负样本比例影响训练效果, 通常正样本比负样本少
AdaBoost
- Adaptive Boosting, 自适应增强算法, 集成学习算法, 通过构建一系列弱分类器, 组合起来形成一个强分类器
- 原理: 对训练集中的每一个样本, 根据分类错误率来调整权值, 对权值大的样本施加更大影响, 每轮迭代中, AdaBoost会选择一个弱分类器最小化分类错误率, 加入强分类器中
- 优点: 简单, 易于理解, 实现, 容易并行化, 在大量机器学习问题中表现良好, 可与各种分类器配合使用
- 缺点: 对异常值敏感, 容易过拟合, 使用时需要调参与结合其他算法才能得到较好结果
训练方法
- 准备训练数据, 需要大量正样本图像和对应标注信息, 负样本图像
- 提取特征, 使用Haar-like特征, LBP等特征提取器提取图像特征
- 训练第一级分类器, 使用AdaBoost算法训练, 得到第一级分类器权值和特征
- 第一级基础上继续训练下一级分类器, 直到满足训练精度要求为止
- 测试集上评估, 检查检测率和误报率来评估训练出来的分类器
- 重复3-5, 优化模型
项目实例
OpenCV人脸识别