gpt4 book ai didi

c++ - 如何修复 opencv 的慢 kmeans

转载 作者:太空狗 更新时间:2023-10-29 23:03:49 25 4
gpt4 key购买 nike

我将 kmeans() 用于有关词袋的项目,这花费了很多时间我的意思是,如果我有 600 张图像,它需要 40-50 分钟。我查看源代码,这部分花费了大部分时间:

for( i = 0; i < N; i++ )///very very slow part because N*K is huge
{
sample = data.ptr<float>(i);
int k_best = 0;
double min_dist = DBL_MAX;


for( k = 0; k < K; k++ )
{
const float* center = centers.ptr<float>(k);
double dist = normL2Sqr_(sample, center, dims);

if( min_dist > dist )
{
min_dist = dist;
k_best = k;
}
}


compactness += min_dist;
labels[i] = k_best;

}

我尝试了,但我无法设法减少这部分,有没有办法让它更有效率它需要 22-23 秒的循环,它会导致长时间等待程序完成运行,如 40-50 分钟,这导致我不能在程序中尝试其他视频集或图像集。如果在 C++ 中有更好的 kmeans 代码也会有所帮助,如果有减少 N(# of features)的方法也会有所帮助,但 K 是字典大小我不能减少它。感谢现在的帮助。

最佳答案

OpenCV 中的 k-means 实现效率非常低,并且有许多他们不确定的提高性能的技巧。自己重写它会是相当大的工作量。

VLfeat 中的实现为 k-means 提供更好的算法,但我不知道实现的质量。

关于c++ - 如何修复 opencv 的慢 kmeans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24574956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com