【发布时间】:2012-12-04 23:46:12
【问题描述】:
提前感谢您阅读本文。
所以我正在尝试编写一个神经网络来识别图像中的特定徽标。我基本上有一个特定纵横比的滑动窗口,它将当前窗口缩放到输入的预期大小。窗口在将输入输入网络的过程中滑动,并查看输出以确定窗口中的内容是否是我正在寻找的徽标。在这种情况下,它将在窗口边缘绘制一个框,勾勒出徽标。
我的问题在于,神经网络报告的图像其他部分的置信度太高,最终会在整个位置绘制太多框,以至于无法看到原始图像的大部分内容。所以神经网络显然有问题。
为了输入图像,我尝试以灰度和彩色展开。这两种方式都行不通。我也尝试过输入大小的变化。当它开始变得太小时,它会变得更糟,但即使在 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 之间的动量值。无论如何,结果几乎总是一样的。
感谢您的帮助。
【问题讨论】:
-
您是否尝试过使用任何自联想记忆神经网络架构?特别是如果您只有一个(或几个)定义明确的徽标。
-
我很好奇您为什么决定使用 NN 来完成这项任务。你愿意向我解释你的理由吗?
-
机器学习课程项目。我以为会很有趣。 :)
标签: java image-processing neural-network