1

我正在研究 webbots,这是一个用于建模、编程和模拟移动机器人的环境。基本上我有一个带有 VGA 摄像头的小型机器人,它在小型乐高迷宫的白墙上寻找简单的蓝色图案并相应地移动

我这里使用的方法是​</p>

  • 从 webbots 获取图案的图像并将其保存在 PC 中的某个位置。
  • ​​​检测蓝色图案,形成一个包围图案的正方形,图案的至少2条边缘是正方形边界的一部分。
  • ​将其调整为 7x7 矩阵(使用最近邻插值算法)

  • 网络的输入只不过是每个 7x7 图像的红色像素强度(当我通过红色滤镜查看蓝色像素时,它看起来是黑色的)。提取每个像素的强度,然后将 7x7 矩阵转换为一维向量,即 1x49,这是我对神经网络的输入。(我选择这个特征作为我的输入,因为使用 C 和 webbots 访问这些信息“相对”不那么困难。​​​)

我使用 MATLAB 进行这种离线训练方法,并使用较慢的学习率(0.06)来确保参数收敛,并在大型和小型数据集(分别为 1189 和 346)上进行了测试。在我尝试过的无数次中,网络无法对模式进行分类。(它说模式属于所有 4 类!!!!!!)。该程序没有任何问题,因为我在 matlab 的 simpleclass_dataset 上对其进行了测试,并且几乎可以完美运行

神经网络是否有可能因为数据真的很差而无法学习到函数?(通过糟糕的数据,我的意思是对应于一个类的一个样本的数据点非常接近属于另一个类的另一个样本或类似的东西)。或者神经网络会因为非常差的特征描述符而失败?

任何人都可以建议一种更简单的方法来从图像中提取特征(我现在正在转向 MATLAB,因为我现在只关心 webbots 中的模拟而不是真正的机器人)。我可以选择哪些功能?图案非常简单(L,倒 L 及其反射版本是 4 种图案)

4

1 回答 1

0

神经网络可能无法学习功能;这通常是由于采用了过于简单而无法对必要功能进行建模的网络拓扑造成的。这种情况的一个典型例子是尝试使用感知器分类器来学习 XOR 函数,尽管它有时甚至会发生在多层神经网络中;特别是对于像图像识别这样的复杂任务。有关如何选择神经网络参数的粗略指南,请参阅我之前的答案(如果需要,请忽略卷积的内容,尽管如果您仍有问题,我强烈建议您研究卷积神经网络)。

类之间的可分离性可能太少,尽管鉴于您当前的功能,我怀疑情况是否如此。您的网络是否有理由需要允许图像同时进行四个分类?如果不是,那么也许您可以将输入分类为具有最高激活的输出,而不是所有具有高激活的输出。

于 2014-09-09T13:20:30.920 回答