0

提前感谢您阅读本文。

所以我正在尝试编写一个神经网络来识别图像中的特定徽标。我基本上有一个特定纵横比的滑动窗口,它将当前窗口缩放到输入的预期大小。窗口在将输入输入网络的周围滑动,并查看输出以确定窗口中的内容是否是我正在寻找的徽标。在这种情况下,它将在窗口边缘绘制一个框,勾勒出徽标。

我的问题在于神经网络报告的图像其他部分的置信度太高,最终会在整个地方绘制如此多的框,以至于无法看到原始图像的大部分内容。所以神经网络显然有问题。

为了输入图像,我尝试以灰度和颜色展开。这两种方式都行不通。我也尝试过输入大小的变化。当它开始变得太小时,它会变得更糟,但即使在 57x22x3 彩色展开输入时,它仍然会失败。

所以我认为这也不是问题。我的神经网络有 X 个输入神经元(其中 X 是宽度 * 高度 * num_colors)。我有一个隐藏层,大小也是 X,最后,我在输出层有 1 个输出神经元,输出一个介于 0.0 和 1.0 之间的值,代表总置信度。

我有 17 个正面训练示例(理想输出为 1.0)和 19 个负面训练示例(理想输出为 0.0)。训练后,网络报告的所有正例的置信度几乎相等,约为 0.95,所有负例的置信度几乎相等,约为 0.013。

我的理论是我拥有的训练示例的数量太少了,我应该收集/生成更多。最初我每个人只有 5 个,但我也没有看到从上升到 17+ 的任何收益。

我应该注意我已经尝试过使用 Encog 和 Neuroph,两者的结果都非常相似。我正在使用反向传播进行学习,并尝试使用 0.3 到 0.7 之间的学习率以及 0.0 到 0.8 之间的动量值。无论如何,结果几乎总是相同的。

谢谢您的帮助。

4

2 回答 2

0

尝试使用 SOM/LVQ 神经网络对滑动窗口输入进行分类,这篇 matlab 帖子应该会给你一些想法http://scriptbucket.wordpress.com/2012/09/21/image-classification-using-matlab-somlvq/

于 2012-12-19T03:38:58.093 回答
0

通常神经网络确实需要大量样本来学习,但不能肯定这是你的问题。

也许对您来说进行匹配的一个更好的主意是找到图案中每个像素与给定图像中图案可能存在的像素的百分比匹配(例如使用滑动窗口样式)。

如果您有一组像素颜色来匹配您的模式:

0xFF0000, 0x00FF00, 0x0000FF

以及具有这些像素颜色的图案:

0xEE0000、0x00FF00、0x0101DE

您可以获得每个像素的百分比增量,然后对其进行平均。现在有多种方法可以求平均值(加权平均值、指数加权平均值等)。最后,您可以获得整个图案的百分比匹配:图案与滑动窗口中当前像素的匹配程度。您始终可以跟踪最高分数,因此最后只显示一个框(与模式匹配概率最高的框)。

您可以为每个像素创建一个神经元,并且树突可以是颜色十六进制数的不同部分。也许每个 R、G、B 都有一个枝晶。在我上面给出的示例中,我为整个颜色整数取了一个树突。

于 2012-12-17T20:49:06.873 回答