功能包如何工作?

     2023-03-12     128

关键词:

【中文标题】功能包如何工作?【英文标题】:How Bag of Features works? 【发布时间】:2016-10-07 05:56:36 【问题描述】:

我不确定这个论坛是否适合这个问题,否则我很抱歉。

我对@9​​87654321@ 模型很陌生,我正在尝试实现以通过向量表示图像(对于 CBIR 项目)。

据我了解,给定训练集 Sn 图像,并假设我们想通过大小为 k 的向量表示图像,这些是实现 BoF 的步骤:

    对于每个图像i,计算关键点集,并从中计算描述符集i-D。 将所有图像的描述符集放在一起,所以现在我们有了D。 在D 上运行k 均值(上面定义了k)算法,所以现在我们有了k 簇,并且每个描述符向量恰好属于一个簇。 将iv 定义为相对于图像i 的结果BoF 矢量(大小为k)。每个维度都初始化为0。 对于每个图像i,以及对于属于i-D 的每个描述符d,找出d 属于所有k 簇之间的哪个簇。假设d属于j-th簇,那么vi[j]++

我不清楚如何实现第 5 点,那么我们如何理解描述符属于哪个集群,尤其是如果我们尝试计算 BoF 向量的图像是查询图像(因此不属于初始数据集)?我们是否应该找到最近邻(1-NN)以了解查询描述符属于哪个集群?

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

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

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

【问题讨论】:

【参考方案1】:

您的算法正在为图像生成相当于单词的内容。这组“单词”并不意味着最终结果,而只是使其易于与其他机器学习技术一起使用的东西。

在此设置中,您从初始特征(来自点 1 的关键点)生成一组 k 个集群。 然后你通过落在每个集群中的关键点的数量来描述每个图像(就像你有一个由长度为 k 的字典中的单词组成的文本)。

第 3 点表示您从训练集图像中获取所有关键点,然后运行 ​​k-means algorithm,以找出点之间的合理分隔。这基本上确定了单词是什么。

因此,对于一张新图像,您需要像对训练集所做的那样计算关键点,然后使用您在训练中已经计算的集群计算出新图像的特征向量。也就是说,您将图像转换为您构建的字典中的单词。

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

【讨论】:

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

如何部署 Azure 功能,并确保包得到更新

】如何部署Azure功能,并确保包得到更新【英文标题】:HowtodeployAzurefunctions,andensurethepackagesgetupdated【发布时间】:2021-06-1320:28:07【问题描述】:我的功能在本地工作,然后当我部署它们时出现如下错误:结果:失败异常:ModuleNo... 查看详情

4.3ros工作空间覆盖(代码片段)

...盖所谓工作空间覆盖,是指不同工作空间中,存在重名的功能包的情形。ROS开发中,会自定义工作空间且自定义工作空间可以同时存在多个,可能会出现一种情况:虽然特定工作空间内的功能包不能重名,但是自定义工作空间的... 查看详情

在 pnpm 工作区中,如何使用公共包的 fork 的本地副本

...2022-01-1210:22:01【问题描述】:我正在使用pnpm及其工作区功能来构建几个应用程序,这些应用程序共享一些放在私有库中的代码。除了私有依赖之外,我还从npm注册表中引用了一堆公共包。这工作正常。但是,公共参考 查看详情

如何让charles抓包功能更强大?

...包测试工作中,Charles提供的rewrite、breakingpoint、maplocal等功能真的很好用。但是有时候需要对抓包过程进行实时修改、数据提取、批量处理等,Charles就显得力不从心。这时候一般是利用python脚本直接发送请求去处理,但是数据准... 查看详情

ros2极简总结-文件系统(代码片段)

参考文献:ROS2Filesystem概述什么是功能包?工作空间结构如何?如何新建工作空间和功能包?功能包ROS2软件称为功能包。ROS2中最小的构建部件。专用于一种功能,例如:硬件驱动算法可视化工具库...包可... 查看详情

第3章编写ros程序

1、创建工作区和功能包在我们写任何程序之前,第一步是创建一个容纳我们的功能包的工作区,然后再创建功能包本身。创建工作区 使用标准的mkdir命令行去创建一个目录,我们将把这个新的目录称作工作区目录。创建工作... 查看详情

08ros重名问题

...盖所谓工作空间覆盖,是指不同工作空间中,存在重名的功能包的情形。ROS开发中,会自定义工作空间且自定义工作空间可以同时存在多个,可能会出现一种情况:虽然特定工作空间内的功能包不能重名,但是自定义工作空间的... 查看详情

如何使 CMFCToolBarComboBoxButton 能够在垂直模式下工作?

...erticalmode?【发布时间】:2015-12-0815:58:49【问题描述】:MFC功能包工具栏组合按钮(CMFCToolBarComboBoxButton类)在水平工具栏模式下完美运行。但在垂直布局模式下,它是没有组合框功能的简单按钮。如 查看详情

ros系统创建工作空间与功能包(代码片段)

工作空间是一个存放工程开发相关文件的文件夹。src:代码空间build:编译空间devel:开发空间install:安装空间创建工作空间mkdir-p~/工作空间名称/src例如:创建一个名称为catkin_ws的工作空间mkdir-p~/catkin_ws/src进... 查看详情

创建一个ros功能包(代码片段)

 一、创建并配置工作空间(workspace)  工作空间是存放工程开发相关文件的文件夹,现在较新版本的ROS默认使用catkin编译系统,该编译系统的空间比较特殊,所以需要特殊的方式创建。  1、创建工作空间    mkdir-p~/catkin... 查看详情

OSGi 包更新如何工作?

】OSGi包更新如何工作?【英文标题】:HowdoesOSGibundleupdatework?【发布时间】:2011-05-1820:55:36【问题描述】:当一个包被更新(比如修复一个错误)时,当前正在使用正在更新的包的其他包会发生什么?说有两个bundlesservice和dao。... 查看详情

Perl Cryptology:使用打包和解包功能加密/解密 ASCII 字符

】PerlCryptology:使用打包和解包功能加密/解密ASCII字符【英文标题】:PerlCryptology:Encrypting/DecryptingASCIIchracterswithpackandunpackfunctions【发布时间】:2012-07-1704:10:53【问题描述】:我需要帮助弄清楚这两个子例程如何工作以及它们返回... 查看详情

如何从 sklearn 包中安装“校准”功能?

】如何从sklearn包中安装“校准”功能?【英文标题】:HowcanIinstall"calibration"functionfromthesklearnpackage?【发布时间】:2015-04-2615:24:35【问题描述】:使用校准时出现以下错误:fromsklearn.calibrationimportCalibratedClassifierCVclf_sigmoid=C... 查看详情

MFC 功能包 - 如何更新属性网格控件

】MFC功能包-如何更新属性网格控件【英文标题】:MFCfeaturepack-howtoupdatethepropertygridcontrol【发布时间】:2009-07-2011:00:39【问题描述】:我是MFC新手,对“MFC功能包”的新功能有些困惑。通过向导,我现在有一个看起来像IDE的应用... 查看详情

如何安装没有符号链接的纱线工作区包?

】如何安装没有符号链接的纱线工作区包?【英文标题】:Howtoinstallyarnworkspacepackageswithoutsymlink?【发布时间】:2019-10-2809:09:07【问题描述】:我有一个看起来像这样的纱线工作区项目:node_modulespackagessharedtest.jspackage.jsonclienttest.j... 查看详情

约束包是如何工作的?

】约束包是如何工作的?【英文标题】:Howdoestheconstraintspackagework?【发布时间】:2012-09-2513:00:19【问题描述】:Data.Constraint.Forall背后的想法,据我了解,是在实现中使用强制转换,但使用类型系统确保安全。关于后者,我有两... 查看详情

SSL 证书链捆绑包如何工作?

】SSL证书链捆绑包如何工作?【英文标题】:HowdoesanSSLcertificatechainbundlework?【发布时间】:2013-12-2222:57:11【问题描述】:我已经创建了这样的链式层次结构。root-ca==>signing-ca==>subordinate-ca==>server提到创建chainbundle,应该是最... 查看详情

R - 如何识别功能的哪个版本(包)是活动/附加的?

】R-如何识别功能的哪个版本(包)是活动/附加的?【英文标题】:R-howtoidentifywhichversion(package)ofafunctionisactive/attached?【发布时间】:2019-09-0410:32:59【问题描述】:当我有多个包含一个函数的包时,如果我调用它(没有明确命名... 查看详情