【问题标题】:Troubleshooting Image Recognition Neural Network Issues图像识别神经网络问题故障排除
【发布时间】: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


【解决方案1】:

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

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

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

0xFF0000, 0x00FF00, 0x0000FF

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

0xEE0000, 0x00FF00, 0x0101DE

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-02-20
      • 2016-03-18
      • 2016-09-15
      • 2015-12-31
      • 2017-01-30
      • 1970-01-01
      • 2017-02-12
      • 2018-02-20
      • 1970-01-01
      相关资源
      最近更新 更多