cv :: TermCriteria()在OpenCV中究竟做了什么?

时间:2016-02-02 23:40:27

标签: c++ opencv svm

Official documentation表示TermCriteria(int Type, int MaxCount, double epsilon)用于定义迭代算法的终止标准。标准类型可以是以下之一:COUNTEPSCOUNT + EPS

但是,当我使用svm->setTermCriteria(const cv::TermCriteria & val)时,我无法理解SVM在每次迭代中的作用有何不同。

1 个答案:

答案 0 :(得分:0)

SVM训练可以被认为是一个大规模的二次规划问题,遗憾的是它不能用标准的QP技术轻易解决。这就是为什么在过去几年中,文献中引入了许多分解算法。

这些算法的基本思想是将大QP问题分解为一系列较小的QP子问题。也就是说,在每次迭代中,算法保持固定优化变量向量的最大维度,并改变维度的一小部分(即工作集),以最大限度地减少对象函数。

据我所知,OpenCV使用SVMlight或广义SMO算法,TermCriteria参数是迭代SVM训练过程的终止标准,它解决了上述部分情况约束QP问题。您可以指定容差和/或最大迭代次数。