我正在使用 BOW 对象检测,并且正在编码阶段。我已经看到了一些kd-Tree
在编码阶段使用的实现,但大多数著作都表明K-means
集群是要走的路。
两者有什么区别?
我正在使用 BOW 对象检测,并且正在编码阶段。我已经看到了一些kd-Tree
在编码阶段使用的实现,但大多数著作都表明K-means
集群是要走的路。
两者有什么区别?
在目标检测中,k-means 用于量化描述符。kd-tree 可用于搜索带或不带量化的描述符。每种方法都有其优点和缺点。具体来说,当描述符维度的数量超过 20 时,kd-trees 并不比暴力搜索好多少。
kd-tree
AFAIK 用于标记阶段,它的速度要快得多,当对大量组进行聚类时,数百甚至数千组,然后简单地采用到每个组的所有距离的 argmin 的简单方法,k-meanshttp://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
kd-Tree
和K-means
算法是两种不同类型的聚类方法。
这里有几种聚类方法如下:
kd-Tree
是一种层次聚类方法(基于中值)。K-means
是一种基于均值的聚类方法。GMM
(高斯混合模型)是一种基于概率的聚类方法(软聚类)。[更新]:
通常,有两种聚类方法,软聚类和硬聚类。像 GMM 这样的概率聚类是软聚类类型,将对象分配给具有概率的聚类,而其他聚类是硬聚类,将对象绝对分配给聚类。