gpt4 book ai didi

matlab - Matlab 中的特征包和神经网络

转载 作者:太空宇宙 更新时间:2023-11-03 19:59:09 24 4
gpt4 key购买 nike

我一直在尝试在 Matlab 中实现一个能够根据图像特征识别图像的神经网络。我正在尝试使用 Bag of features/words 方法来获得一个离散的特征向量,然后我可以将其输入我的神经网络。

我一直在使用这个例子作为指导 - http://in.mathworks.com/help/vision/examples/image-category-classification-using-bag-of-features.html

代码中的一行 (featureVector = encode(bag, img);) 计算图像中单词的出现次数。我可以使用这个“特征向量”矩阵来训练我的神经网络吗?我是否必须对训练集中的每张图像进行编码?

最佳答案

是的,这当然是可能的。通过查看示例,训练数据集是一组图像,您会发现一个包含 500 个“单词”/特征的通用词汇表,可以充分描述所有这些词汇。通过使用 featureVector = encode(bag, img);,您正在做的是确定每个单词的多少部分存在以描述输入图像 img。具体来说,如果您查看该示例部分中的代码,他们会绘制一个条形图,其中水平轴表示单词索引,垂直轴表示词汇表中每个单词/特征用于表示该图像的分数。

具体来说,这是生成的条形图(取自链接):


(来源:mathworks.com)

因此,相似的图像应该用相似的特征/词来描述,因此您当然可以将其用作神经网络的输入。

但是,正如您所怀疑的那样,在训练您的神经网络之前,您必须用这个特征向量表示您希望训练的每个图像。如果您打算使用 MATLAB 的神经网络工具箱,则必须确保每个 是一个输入样本,每个 是一个特征。 featureVector 实际上会返回一个 1 x N 向量,其中 N 是特征的总数。但是,如果您想更巧妙地做到这一点,只需创建一个包含所有要转换的图像的 imageSet:http://www.mathworks.com/help/vision/ref/imageset-class.html ,然后调用一次 encode 来创建所需的特征矩阵:

imgFolder = '...'; %// Specify image folder here
imgSet = imageSet(imgFolder); %// Create image set
featureMatrix = encode(bag,imgSet).'; %// Encode the images - Make sure you transpose

结果将是一个 M x N 矩阵,其中 M 是您拥有的输入图像的总数,N 是总数的特点。为了遵守神经网络工具箱,您必须转置该矩阵,因为每个都需要是输入样本,而不是每一行。

关于matlab - Matlab 中的特征包和神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com