问题标签 [mean-shift]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
301 浏览

opencv - 为什么 MEAN SHIFT + ORB 没有检测到(所有)多个对象?

我必须在图像中找到一种类型的多个对象,为此,我正在使用 OpenCV (Python)。首先,我从模板匹配开始,如果图像的方向改变,它就不能很好地工作。

所以,我使用了这里描述的方法。但是,不幸的是,它没有按预期工作,而且每次我重新运行我的代码时,输​​出(即检测到的对象周围的边界框)都会不断变化。

这是我的输出:

输出(运行 1)

输出(运行 2)

输出(运行 3)

输出(运行 4)

输出(运行 5)

输出(运行 6)

我已经调整了这些值,但仍然没有得到想要的输出。为什么检测到 2/5 相同类型的对象,而其余的则没有?几个星期以来,我一直在想办法解决它。我还尝试了 bf.knnMatch 而不是 flann.knnMatch 和 SURF/SIFT 而不是 ORB,但仍然没有运气。

你们对我该如何解决这个问题有任何想法吗?任何建议将不胜感激。

注意:我没有对链接中给出的代码进行任何更改

0 投票
0 回答
1910 浏览

python - Scikit Learn 用于聚类混合数据(数字和分类)

有人可以帮助修改下面的工作示例以从共享数据创建集群吗?

该示例使用来自 Scikit-Learn 的 Mean Shift 聚类来识别农艺设施中相似/位于同一地点的植物物种的斑块。

这类问题中除了数值外还使用分类值的类似问题之前也有人问过,但我认为这个例子不同,原因如下:这个问题中的非数值不能简单地用一和零编码虚拟值。例如,我们不能对“Aristolochia macrophylla”“Aristolochia durior”之类的值进行 One-Hot 编码,因为名称中具有这种相似性的物种除了给定的地理邻近性之外,还需要根据它们的家庭聚集在一起通过 X 和 Y 值。创建集群时,名称的相似性与位置一样重要。

我尝试了两件事:为物种名称中的字母分配任意数值,以表明具有相似拼写的名称在数轴上会更靠近。我打算对值应用自动缩放并使用 X 和 Y 坐标插入脚本。这不起作用,因为不同的名称最终在数字上非常相似。

我合并分类值的另一个尝试是使用 Levenstein 距离。但是距离的输出仅基于比较两个值。如果您输出显示每个字符串与所有其他字符串的距离,您如何将该结果实现为 Meanshift 算法的输入?

无论如何,这里是目前仅使用数值的数据和工作脚本。我真的很感激任何关于如何使用分类值的相似性对这些数据进行聚类的例子。

谢谢

0 投票
2 回答
538 浏览

machine-learning - MeanShift 估计器的无分数方法 - scikit-learn

我试图使用 GridSearch 来迭代 MeanShift 算法的不同带宽值,它显示了这个错误;你们有谁知道我该如何解决这个问题?非常感谢!

这是我得到的错误:

0 投票
2 回答
2860 浏览

c++ - 如何在 C++ 中使用 OpenCV 检测多个对象?

我从这个答案here中得到灵感,这是一个Python实现,但我需要C++,这个答案非常有效,我的想法是:detectAndCompute获取keypoints,使用kmeans将它们分割成集群,然后为每个集群做每个集群matcher->knnMatchdescriptors然后做其他的东西,比如常见的单一检测方法。主要的问题是,如何descriptors为每个集群提供matcher->knnMatch进程?我认为我们应该将另一个keypoints对应的值设置descriptor为 0(无用),对吗?在我的尝试中遇到了一些问题:

  1. 如何估计集群数量kmeans
  2. 为什么可以为这样的集群创建 Mat 数组Mat descriptors_scene_clusters[3] = { Mat(descriptors_scene.rows, descriptors_scene.cols, CV_8U, Scalar(0)) };

非常感谢任何帮助,请!


输出

0 投票
1 回答
1699 浏览

python-3.x - 复数numpy数组的Python均值移位聚类

我继承了大约一年前编写的一些代码,所以我猜当时它使用的是numpy 1.13(现在是 v1.15.2)、scipy 1.00rc(现在是 v1.1.0)和sklearn 0.19(现在是 v.0.20。 0)。

它实现了Fisher 的 LDA以将n维空间减少到 1…<em>n-1 维空间,从而产生一个 numpy 复数数组作为其结果(由于浮点不精确)。然后该数组被愉快地挑选并馈入sklearn.cluster.MeanShift其中立即引发异常:

我仍在学习这里发生的数学细节,但令我感到奇怪的是,这段代码被宣布为“可运行”。

我在这里错过了什么吗?是版本变化带来了这种回归,还是存在更根本的代码缺陷?我将如何解决这个问题?

0 投票
1 回答
326 浏览

python - 如何在 sklearn.cluster.MeanShift 中获取特定集群的中心

我有一个训练有素的 MeanShift 对象 ( ms)。它有一个简单的中心列表。如何确定一个中心所属的标签?我知道labels_,但我没有看到 和 之间的labels_联系cluster_centers_

0 投票
1 回答
424 浏览

r - R中不同包的均值漂移聚类中的不同带宽规范

我想在 R 中执行均值偏移聚类,发现至少有两个包具有此功能:MeanShiftmeanShiftR. 如此处所示,后者要快得多,并且当我尝试第一个并且执行聚类需要很长时间时,我热衷于选择meanShiftR. 但是meanShiftR::meanShift功能具有相当不常见的带宽规范方式,请参阅文档的一部分:

queryData 要由均值移位算法分类的点的矩阵或向量。值必须是有限且非缺失的。

带宽 长度等于 queryData 矩阵中的列数的向量,或者当 queryData 是向量时长度为 1。该值将用于最速上升分类的核密度估计。默认值为每个维度一个。

我不是均值漂移聚类方面的专家,但我在文献中发现的唯一带宽规范是带宽是标量或正定对称矩阵,而不是向量。那么这是表示带宽的技术技巧吗?每个维度的带宽值都必须相同吗?或者它可能会有所不同?

另一个问题是,即使在 meanShiftR 包中设置与 MeanShift::msClustering 中相同的带宽值,但只是复制以匹配列数,我得到了完全不同的结果,尤其是更大数量的集群。此外,这些模式非常相似,并不代表数据集。这让我想知道这个包是否工作正常。有人用过meanShiftR吗?如果是这样,也许您可​​以提供任何示例,因为文档对我来说不够清楚?

0 投票
1 回答
184 浏览

python-3.x - 如何使用质心网格实现均值偏移?

这是一堂课,非常感谢您的帮助!我根据收到的评论进行了一些更改,但现在又出现了一个错误。我需要修改一个实现均值偏移算法的现有函数,但不是将所有点初始化为第一组质心,而是函数使用基于半径的网格创建一个质心网格。我还需要删除不包含任何数据点的质心。我的问题是我不明白如何解决我得到的错误!

我尝试使用输入数据集的范围作为网格的边界,点由半径分隔。

该函数需要返回最终质心的数量。我还没有走得足够远,不知道mean-shift的整个实现如何与这个函数一起工作..

0 投票
1 回答
214 浏览

cluster-analysis - 基于质心的均值偏移算法用于聚类的距离度量是什么?

我有一个 810 * 74 维度的稀疏截断SVD 矩阵。我正在尝试使用 sklearn api 与基于质心的 MeanShift 算法进行聚类。但是,我在 sklearn 文档和在线博客中都找不到有关 meanshift 默认使用的距离度量的信息。也没有提供预先计算的距离矩阵的选项。在进行基于质心的计算之前,Meanshift 是否默认计算欧几里得距离?

浏览 sklearn 文档 - https://scikit-learn.org/stable/modules/generated/sklearn.cluster.MeanShift.html

也在网上搜索过,但没有运气

0 投票
1 回答
523 浏览

scikit-learn - 集群算法的标签输出是否按特定顺序排序?(python、scikit 学习)

我正在使用 Shift-means 聚类(https://scikit-learn.org/stable/modules/clustering.html#mean-shift),其中集群的标签是从以下来源获得的:https://scikit-learn .org/stable/modules/generated/sklearn.neighbors.NearestNeighbors.html

然而,目前尚不清楚簇 (0,1,...) 的标签是如何生成的。显然,标签 0 似乎是具有更多元素的集群。这是一般规则吗?

其他算法如何工作?这是“随机”的意思吗?还是背后的算法检测到 0 集群的更大集群?

谢谢!

PS:根据这条规则很容易订购标签,我的问题更具理论性。