无法运行功能包

4次观看(最近30天)
伦纳德杨
伦纳德杨 2016年1月14日
评论道: 夺取Ngubane2019年8月19日
我有一个8gb的内存,每当我尝试运行bagofatures时,它总是说内存不足。请参阅下文。
错误使用vertcat
的内存。为您的选项键入HELP MEMORY。
错误在bagfeatures /extractDescriptorsFromSet(第578行)
描述符=[描述符;tempDescriptors];% #好< AGROW >
错误特征(第207行)
scores{categoryIndex}] = this.extractDescriptorsFromSet(imgSets(categoryIndex), params);
我可以知道如何解决这个问题吗?谢谢。

接受的答案

Birju帕特尔
Birju帕特尔 2016年1月14日
嗨,伦纳德,
这个错误的发生是因为bagfeatures是从你所有的训练图像中提取特征并将它们存储在内存中。这是收集特性的一种简单策略,但缺点是需要大量内存。
如果你正在使用“Grid”点选择方法,那么你可以尝试增加GridStep参数[32 32],这将减少图像中提取特征的位置数量。除此之外,你可以尝试使用“BlockWidth”参数减少块的数量,例如,将其设置为[64 96]。
对于大型数据集,另一种避免此类问题的常见策略是从训练图像中提取特征的子样本数量。
一种方法是定义一个自定义的提取器函数,它只从图像中选择一小部分特征。这里有一个自定义特征提取器的例子:
您可以通过编辑下面的示例来查看m代码:
这个例子使用了bagfeatures默认使用的相同的特征提取方法。
如果查看第69行,您将看到提取特性的位置。然后在第79行,计算特征的强度。
使用强度信息,您可以从图像中选择前50%的特征并返回这些特征,而不是返回所有特征。例如,在第79行之后添加以下代码:
%按特征度量对特征进行排序
[featureMetrics, idx] = sort(featureMetrics, idx)“下”);
Features = Features (idx,:);
%只保留前50%
numFeatures = size(features,1);
numFeaturesToKeep = floor(0.5 * numFeatures);
features = features(1:numFeaturesToKeep,:);
如果这些都不起作用,那么尝试减少训练图像的数量。
希望这对你有帮助,Birju
1评论
夺取Ngubane
夺取Ngubane 2019年8月19日
嗨。你能告诉我如何增加网格步长和块宽吗?

登录评论。

更多答案(0)

社区寻宝

在MATLAB Central中寻找宝藏,并了解社区如何帮助您!

开始狩猎!