首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为OpenCV和EPS选择合适的值?

如何为OpenCV和EPS选择合适的值?
EN

Stack Overflow用户
提问于 2016-01-07 07:46:12
回答 1查看 479关注 0票数 0

我正在尝试使用OpenCV中的k均值函数将36000幅样本图像预分类为100+类(以减少我为监督学习准备训练数据的工作量)。在这个函数中,有两个我并不真正理解的参数:cv::TermCriteria::EPScv::TermCriteria::COUNT.

代码语言:javascript
复制
cv::kmeans(dataset.t(), K, kmean_labels, cv::TermCriteria( cv::TermCriteria::EPS + cv::TermCriteria::COUNT, 10, 1.0),
            3, cv::KMEANS_PP_CENTERS, kmean_centers);

cv::TermCriteria::EPS:文档中,它解释了:迭代算法停止时所需的精度或参数的更改。

cv::TermCriteria::COUNT:要计算的最大迭代数或元素数。

对我来说,上面的解释不太清楚。谁能帮助解释更多,并说明如何找到好的价值计数和每股收益?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-07 08:18:29

没有适用于所有应用程序的神奇数字(否则它们不会是参数)。

Kmeans是一种迭代算法,它将朝着最优方向移动,每次迭代都会变得更好,但是您需要告诉算法何时停止。

使用cv::TermCriteria::COUNT,,您告诉算法:您可以执行x迭代,然后停止。但这不能保证你的精确性。

使用cv::TermCriteria::EPS,,您告诉算法继续其迭代,直到两个连续迭代之间的差异变得足够小为止。参数EPS告诉算法这种差异应该变得多小。这当然取决于要输入算法的数据集。假设您将所有数据点乘以10,那么EPS应该相应地变化(我认为是二次变化,但不确定)。

当您使用两个参数时,您告诉算法在两个条件之一都已满时停止迭代;例如:当连续两次运行之间的差值小于0.1时停止迭代,在完成10次迭代时停止迭代或。

在结论:只有分析您的数据集,和试验和错误,可以给您体面的价值.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34649824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档