Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 功能包是如何工作的?_C++_Algorithm_Computer Vision_K Means - Fatal编程技术网

C++ 功能包是如何工作的?

C++ 功能包是如何工作的?,c++,algorithm,computer-vision,k-means,C++,Algorithm,Computer Vision,K Means,我不确定这是否是这个问题的正确论坛,否则我很抱歉 我对这个模型非常陌生,我正在尝试实现通过向量表示图像(对于CBIR项目) 据我所知,给定一组n图像的S,并假设我们希望通过大小k的向量来表示图像,以下是实现BoF的步骤: 对于每个图像i,计算关键点集,并从中计算描述符集i-D 将所有图像中的描述符集合放在一起,现在我们有了D 在D上运行kmeans(上面定义了k)算法,因此现在我们有了k簇,每个描述符向量恰好属于一个簇 将iv定义为相对于图像i的结果BoF向量(大小k)。每个维度都初始化为0 对

我不确定这是否是这个问题的正确论坛,否则我很抱歉

我对这个模型非常陌生,我正在尝试实现通过向量表示图像(对于CBIR项目)

据我所知,给定一组
n
图像的
S
,并假设我们希望通过大小
k
的向量来表示图像,以下是实现BoF的步骤:

  • 对于每个图像
    i
    ,计算关键点集,并从中计算描述符集
    i-D
  • 将所有图像中的描述符集合放在一起,现在我们有了
    D
  • D
    上运行
    k
    means(上面定义了
    k
    )算法,因此现在我们有了
    k
    簇,每个描述符向量恰好属于一个簇
  • iv
    定义为相对于图像
    i
    的结果BoF向量(大小
    k
    )。每个维度都初始化为0
  • 对于每个图像
    i
    ,以及属于
    i-d
    的每个描述符
    d
    ,找出所有
    k
    簇之间的
    d
    簇。假设
    d
    属于
    j
    -th集群,则
    vi[j]++
  • 我不清楚的是如何实现第5点,那么我们如何理解描述符属于哪个集群,特别是如果我们试图计算BoF向量的图像是查询图像(因此不属于初始数据集)?为了了解查询描述符属于哪个集群,我们应该找到最近邻(1-NN)吗

    我为什么需要它-应用程序:

    我实现BoF模型是为了实现CBIR:给定一个查询图像
    q
    ,在图像数据集中找到与
    q
    最相似的图像
    I
    。为了做到这一点,我们需要解决1-近似最近邻问题,例如使用。问题是,LSH中的每个图像的输入都表示为一个向量,因此我们需要BoF来实现这一点!我希望现在我需要它的原因更清楚了:)


    如果我在上述过程中犯了错误,请告诉我。

    您的算法所做的是为图像生成等价的单词。这组“单词”并不意味着是最终的结果,而只是使其与其他机器学习技术一起使用变得简单的东西

    在此设置中,将从初始特征(点1的关键点)生成一组k簇。 然后根据每个簇中的关键点数量来描述每个图像(就像有一个由长度为k的字典中的单词组成的文本一样)

    第3点说,从训练集图像中获取所有关键点,然后运行,以确定这些点之间的合理间隔。这基本上确定了单词的含义

    因此,对于一个新图像,你需要像对训练集那样计算关键点,然后使用你在训练中已经计算出的聚类,计算出新图像的特征向量。也就是说,您可以从自己创建的词典中将图像转换为单词


    这是一种从图像中生成合理特征向量的方法(如果需要,可以是部分结果)。这不是一个完整的机器学习算法。要完成它,你需要知道你想做什么。如果您只想找到最相似的图像,那么是的,最近邻搜索应该可以做到这一点。如果你想给图像添加标签,那么你需要从特征向量中训练一个分类器(比如朴素贝叶斯),并用它来找出查询的标签。

    对不起,我很愚蠢!这不是第三点。(这只是k-means),但是第5点。(我们通过将每个描述符关联到一个簇并定义直方图来定义结果向量)。因此,我仍然不清楚的是“给定一个图像查询,我们如何获得结果的BoF向量”?我们必须为每个描述符找到数据集中的1-NN描述符,并将其与相对集群相关联?如果我不清楚,请告诉我是的,要分配描述符,您可以获取最近的邻居。你可以根据你的训练数据计算每个集群的半径,并且只有当查询点在该半径范围内时才分配它(以防你开始得到与训练数据非常不同的查询)。哇,这很聪明,没有想到半径技巧!谢谢你们能看一下这个问题吗?