【发布时间】:2012-06-20 22:28:12
【问题描述】:
我正在处理 BOW 对象检测,并且正在编码阶段。我已经看到一些在编码阶段使用kd-Tree 的实现,但大多数著作都建议K-means 集群是要走的路。
两者有什么区别?
【问题讨论】:
标签: algorithm computer-vision cluster-analysis k-means kdtree
我正在处理 BOW 对象检测,并且正在编码阶段。我已经看到一些在编码阶段使用kd-Tree 的实现,但大多数著作都建议K-means 集群是要走的路。
两者有什么区别?
【问题讨论】:
标签: algorithm computer-vision cluster-analysis k-means kdtree
在目标检测中,k-means 用于量化描述符。 kd-tree 可用于搜索带或不带量化的描述符。每种方法都有其优点和缺点。具体来说,当描述符维数超过 20 时,kd-trees 并不比暴力搜索好多少。
【讨论】:
k-means 的 OpenCV。其余的都是我自己用 C++ 完成的。
kd-tree AFAIK 用于标记阶段,它的速度要快得多,当聚类大量组时,如果不是数千组,数百甚至数千组,然后简单地取每个组的所有距离的 argmin,k -意思是http://en.wikipedia.org/wiki/K-means_clustering 是实际的聚类算法,虽然并不总是很精确,但它的速度很快,一些实现返回组,而另一些实现返回组和训练数据集的标签,这就是我通常使用的http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.cKDTree.html 与http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.kmeans2.html
【讨论】:
Then you would make a kdtree out of those descriptors 差不多,我已经完成了一些基准测试,并且当与大量组一起工作时,kdtree 将我所有的优化都从水中吹了出来......我建议你简单地运行一些测试:)
kd-Tree和K-means算法是两种不同的聚类方法。
这里有几种聚类方法如下:
kd-Tree 是 hierarchical-clustering 方法(基于中位数)。K-means 是一种基于均值的聚类方法。GMM(高斯混合模型)是一种基于概率的聚类方法(软聚类)。[更新]:
一般有两种聚类方法,软聚类和硬聚类。像 GMM 这样的概率聚类是软聚类类型,将对象分配给具有概率的聚类,而其他的则是硬聚类,将对象绝对分配给聚类。
【讨论】: