- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我关注的编码是 fisher 编码,因为我已经证明我的工作有最好的结果。因此,我想在我提取的 (SIFT) 特征上测试 Fisher 编码,并测试使用或不使用编码的系统性能。
我没有重新开始,而是发现 vl_feat 有一个内置的 fisher 编码库,并且他们有一个教程链接 here
现在我已经完成了大部分需要做的事情,但实际上编码的内容让我感到困惑,例如教程清楚地表明 fisher 编码是使用 GMM 获得的参数执行的,例如 [means, covariances , priors]
和 SIFT 提取的特征将按照教程在 GMM 中使用:
The Fisher encoding uses GMM to construct a visual word dictionary. To exemplify constructing a GMM, consider a number of 2 dimensional data points. In practice, these points would be a collection of SIFT or other local image features.
numFeatures = 5000 ;
dimension = 2 ;
data = rand(dimension,numFeatures) ;
numClusters = 30 ;
[means, covariances, priors] = vl_gmm(data, numClusters);
那么一旦我执行了这一步,我就要对另一个数据集进行编码?这就是让我困惑的地方。我已经使用我提取的 SIFT 特征来生成 GMM 的参数。
Next, we create another random set of vectors, which should be encoded using the Fisher Vector representation and the GMM just obtained:
encoding = vl_fisher(datatoBeEncoded, means, covariances, priors);
所以这里 encoded
是最终结果,但是它编码了什么?我希望对从图像中提取的 SIFT 特征进行编码,但如果我遵循 GMM 中使用的教程。如果是这样,那么 datatoBeEncoded
是什么?我要在这里再次使用 SIFT 专长吗?
谢谢
更新:
@沙伊
谢谢,但我相信我一定做错了什么。我不太明白你所说的“将图像与它们自己进行比较”是什么意思。我有 4 个类(class),每个类(class)有 1000 张图片。所以我使用第 1 类的前 600 张图像来学习 gmm 参数,然后使用这些参数对 fisher 向量进行编码
numClusters = 128 ;
[means, covariances, priors] = vl_gmm(data, numClusters);
因此每个均值、协方差
的大小为128 x 128
,先验大小为1 x 128
现在,当我使用这些函数对 400 张图像上的 fisher 向量进行编码时
encoding = vl_fisher(datatoBeEncoded, means, covariances, priors);
编码的大小非常不同,大约为 12000 x 1
。这些无法与生成的模型进行比较。
我已经有一个系统正在处理数据集的非编码版本并且运行良好,但我想看看编码将如何产生影响,理论上结果应该得到改进。
如果需要,我可以在此处添加代码,但它是针对 UBM-GMM 的,我感到困惑的原因是因为您提到的训练方法正是我在 UBM 中使用的方法。
如果我只是对测试图像进行编码,我将无法在分类器中使用它们,因为大小不匹配。
也许我没有正确选择这个或者犯了一些愚蠢的错误,是否有可能得到一个简单的例子,通过它我可以理解工作。
非常感谢
最佳答案
您在此过程中有两个阶段:
(1) 培训,您可以在其中学习您所在领域的一些统计特性,以及
(2) 测试,您可以在其中使用学习到的表示/模型并将它们应用于新样本。
因此,您应该将特征数据集拆分为两个“拆分”,一个用于学习 Fisher 编码的 GMM(训练 集),另一个拆分用于将编码应用于(a < em>测试集)。
通常,您会抽取大量能够很好地代表您感兴趣的领域的图像(例如,如果您对人感兴趣,您应该考虑许多人的室内和室外照片、特写和集体照等),您会提取尽可能多的图像您可以从这些训练图像中筛选描述符,并使用它们来学习模型:
numClusters = 30 ;
[means, covariances, priors] = vl_gmm(TrainingData, numClusters);
一旦你有了这个模型保存,你就可以将它应用到新照片以对其进行编码
encoding = vl_fisher(TestData, means, covariances, priors);
请注意,虽然 TrainingData
通常非常大并且可能从数十个(甚至数百个)图像中收集,但 TestData
可能小得多,甚至是描述符从单个图像收集。
关于matlab - 了解提取特征的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27691052/
我对自定义 CSS 或在将图像作为 Logo 上传到页面时使用编码 block 有疑问。我正在为我的网站使用 squarespace,我需要帮助编码我的 Logo 以使其适合每个页面。一个选项是使用自
如 encoding/json 包文档中所述, Marshal traverses the value v recursively. If an encountered value implement
我必须做一些相当于Java中的iconv -f utf8 -t sjisMS $INPUT_FILE的事情。该命令在 Unix 中 我在java中没有找到任何带有sjisMS的编码。 Java中有Sh
从 PHP 5.3 迁移到 PHP 5.6 后,我遇到了编码问题。我的 MySQL 数据库是 latin1,我的 PHP 文件是 windows-1251。现在一切都显示为“ñëåäíèòå àäðå
我有一个 RScript文件(我们称之为 main.r ),它引用了另一个文件,使用以下代码: source("functions.R") 但是,当我运行 RScript 文件时,它提示以下错误:
我无法设法从 WSDL 创建 RPC/编码风格的代码 - 有谁知道哪个框架可以做到这一点? 带有 adb 和 xmlbeans 映射的 Axis2 无法正常工作(无法处理响应中的肥皂编码)直接使用 X
安装了最新版本的Node.Js()和npm包**(1.2.10)**当我运行 Express 命令来生成项目时,它向我抛出以下错误 buffer.js:240 switch (encoding &
JavaScript中有JSON编码/解码base64编码/解码函数吗? 最佳答案 是的,btoa() 和 atob() 在某些浏览器中可以工作: var enc = btoa("this is so
>>> unicode('восстановление информации', 'utf-16') Traceback (most recent call last): File "", line
我当然熟悉 java.net.URLEncoder 和 java.net.URLDecoder 类。但是,我只需要 HTML 样式的编码。 (我不想将 ' ' 替换为 '+' 等)。我不知道任何只做
有一个非常简单的 SSIS 包: OLE DB Source 通过 View 获取数据(数据库表 nvarchar 或 nchar 中的所有字符串列)。 派生列,用于格式化现有日期并将其添加到数据集(
我正在使用一个在 Node 中进行base64编码的软件,如下所示: const enc = new Buffer('test', 'base64') console.log(enc) 显示: 我正
我试图将带有日语字符的数据插入到 oracle 数据库中。事情是保存在数据库中的是一堆倒置的问号。我该如何解决这个问题 最佳答案 见 http://www.errcode.net/blogs/?p=6
当我在 java 中解压 zip 文件时,我发现文件名中出现了带有重音字符的奇怪行为。 西索: Add File user : L'equipe Technique -- Folder : spec
在网上冲浪我找到了 ExtJS 的 Ext.Gantt 插件,该扩展有一个特殊的编码。任何人都知道如何编码那样或其他复杂的形式。 Encoded Gantt Chart 最佳答案 它似乎被 Dean
我正在用C语言做一个编码任务,我进展顺利,直到读取符号并根据表格分配相应的代码的部分。我必须连接几个代码,直到它们的长度达到 32 位,为此我必须将它们写入一个文件中。这种写入文件的方法给我带来了很多
我有一个外部链接的 javascript 文件。在那个 javascript 里面,我有这个功能: function getMonthNumber(monthName){ monthName = mo
使用mechanize,我检索到一个网页的源页面,其中包含一些非ASCII字符,比如汉字。 代码如下: #using python2.6 from mechanize import Browser b
我有一个包含字母 ø 的文件。当我用这段代码 File.ReadLines(filePath) 读取它时,我得到了一个问号而不是它。 当我像这样添加编码时 File.ReadLines(filePat
如何翻译下面的字符串 H.P. Dembinski, B. K\'{e}gl, I.C. Mari\c{s}, M. Roth, D. Veberi\v{c} 进入 H. P. Dembinski,
我是一名优秀的程序员,十分优秀!