1

我一直在探索通过神经网络进行图像识别。经过一番研究,我开始使用Encog和他们的“ImageNeuralNetwork.java”示例。神经网络训练标准:如何训练多个类别(即形状和颜色)没有过度训练

在他们的例子,它们使用一个图像每美国货币硬币(便士,硬币等)作为训练集,然后相应地确定硬币的给定图像。

现在我想用他们的例子作为一个起点来练习不同的图像。我试图使用形状/颜色作为训练。例如,我想让程序识别红色圆圈和红色矩形之间的区别,但我也想知道红色圆圈和蓝色圆圈之间的区别。

看完记得,你不应该过度的火车,给训练图像的每一个可能的组合(如在这种情况下给予2个不同颜色的圆圈和2个不同颜色的矩形的4个图像)。

我仍然可以使用Encog的硬币识别示例来训练多个类别(形状和颜色)还是这是另一个概念?如果不提供所有可能的颜色/形状组合并因此过度训练,是否可以提供特定的最少数量的训练图像?

回答

1

当谈到避免过度训练时,没有可靠的拇指规则。它完全取决于您的网络结构和数据特征。大多数构建神经网络的人通过反复试验来管理过度训练(或过度拟合)的问题。只要您的网络以高准确度对训练数据进行分类并以低精度测试数据,您就会过度训练,您需要减少训练迭代次数并重新构建网络并不断重复此操作。所以要回答你的第二个问题,没有特定的最小数量的图像。

关于你提到的第一个问题,你绝对可以培养对多个类别,有几种方法可以做到这一点...无论是通过使每个类型的多个输出神经元或具有编码的输出...但最常见的有每个类别的单独网络效果更好。对于颜色或形状识别,在大多数情况下,与神经网络相比,主成分分析的效果更好。

+0

我结束了使用两个网络,一个用于形状,一个用于颜色。我的例子都使用Encog 100%准确。 –